Setup Manjaro Linux

Mac OSでの開発がしんどくなってきたのでLinux PCを自作した。初めての自作で学びが多かったので見返せるように残しておく。試行錯誤を整理するのが面倒だったのでメモ程度に。

PCの組み立て

CPU

自作のモチベーションはPCスペックの向上なのでIntel Core i9-13900Kを購入した。

インテル® Core™ i9-13900K プロセッサー

マザーボード

YouTubeで13900Kの組み立て動画を見ながら探した結果、Z790チップセット対応のROG STRIX Z790-F GAMING WIFIを購入した。

ROG STRIX Z790-F GAMING WIFI | ROG STRIX Z790-F GAMING WIFI | Gaming マザーボード|ROG - Republic of Gamers|ROG 日本

メモリ

Z790チップセットはDDR5に対応している。最終的には下記のメモリを購入した。DIMMを4つ差せるので、32GB×4で合計128GBとなった

インテル® Z790 チップセットの概要 F5-6000J3238G32GX2-RS5K F5-6000J3238G32GA2-RS5K - G.SKILL International Enterprise Co., Ltd.

SSD

Z790チップセットはPICe 4.0のレーンがあり、上記のマザボにはそのM.2スロットがある。動画や画像などを大量にローカルに保存する予定はないので下記の1TBのものを購入した。

Crucial P3 Plus Gen4 NVMe™ SSD | Crucial JP

CPUクーラー

ゲームをしないのでそこまで長時間熱くならないだろうという読みで空冷にした。取り付けに不安があったのでYouTubeの組み立て動画で見たものと同じものを購入した。

AK620 - DeepCool

電源

ブランドは割とどこでも良さそうだったので、聞いたことのある玄人志向にした。電源容量は上記のパーツから計算しつつ、今後のパーツ交換を見越して少し大きめのものを購入した。

80PLUS GOLD取得 ATX電源 650W(プラグインタイプ) | 玄人志向

ケース

今回購入したCPUは13900Kで内蔵GPUがある。大きさはミドルタワーサイズにした。もし動作に不満がありグラボも欲しいと思った場合にケースに入らなかったら悲しいからだ。

Define R5 — Fractal Design

組み立て

購入したマザボが初心者向けということもあり非常に組み立ては楽だった。とはいえ、YouTubeにある組み立て動画事前にいくつか見てイメージを掴んでから作業に取り掛かった方が良いと思った。クーラーの向きを間違えたり、マザボのケースへの取り付け周りがまごついてしまった。

費用

購入当時の金額は下記。合計で¥313,100だった。

パーツ 金額 Link
CPU ¥88,345 https://www.dospara.co.jp/SBR1329/IC482985.html
Mother Board ¥69,677 https://www.amazon.co.jp/dp/B0BJZ9VP4V
Memory ¥109,600 https://www.dospara.co.jp/SBR1534/IC482500.html
Storage ¥10,947 https://www.amazon.co.jp/dp/B0BCNQJV9C
Cooler ¥8,061 https://www.amazon.co.jp/dp/B09HRK311X
Power ¥10,490 https://www.amazon.co.jp/dp/B0778D2FFK
Case ¥15,980 https://www.amazon.co.jp/dp/B00Q2Z11QE

OSの起動

周りにArch系OSのユーザーが数名いるためManjaroを選択した。リッチなUIが良かったのでデスクトップ環境はGNOMEにした。

Manjaro

OSをインストールするためにLive USBを作成する。下記はMacでの手順となる。 まずはdiskutilコマンドで対象のUSBドライブを確認。

$ diskutil list

作成するUSBのパスが特定できたらunmountする。

$ diskutil unmountDisk /dev/${対象のdisk}

最後にManjaroのisoファイルをコピーする。

$ dd if=path/to/manjaro-version-x86_64.iso of=/dev/r${対象のdisk} bs=1m

詳細はここ。

USB flash installation medium - ArchWiki

Live USBを挿したまま起動。BIOSが起動するので挿したUSBを選択してLinuxを起動させる。

設定

起動するとManjaro Helloというセットアップアプリケーションが起動する。ここで言語やタイムゾーンの設定がGUIで行える。しかし、日本語設定でfcitx4系がインストールされてしまうのでチェックを入れないようにする。(fcitx5のインストールは後述)

パッケージの更新元ミラーサーバーを日本にする。

$ sudo pacman-mirrors -c Japan

yayを入れてパッケージの更新を行う。

$ sudo pacman -Sy yay
$ yay

Arch Linux JP Project - base-devel (x86_64)

必須パッケージをインストールする。

$ yay -S base-devel

Display

MacではType-Cへの変換アダプタを使って2つのモニターとHDMIとそれぞれ接続していた。自作PCではHDMIポートとDisplayPortが1つずつあるので、アダプタ使わず直接繋いでマルチモニタになった。 情弱なのでDisplayPortの存在を初めてしったので、気づくまではUSBに変換して接続を試みていた。しかしUSB変換で必要なDisplayLinkはバグがあるようで全く動作しなかった。

DisplayLink - ArchWiki

モニタの管理はxrandrをラップしているarandrを使うと良いとあった。しかしこちらも動作せず、、、。

ARandR: Another XRandR GUI

色々見てたらSettingアプリから変更できた。ありがとうManjaro。

Audio

オーディオ設定は苦戦した。調べているとpulseaudioを使う記事が多かったが、最近はpipewireを使うほうが良いらしい。

PulseAudio, PulseAudio - ArchWiki

PipeWire, PipeWire - ArchWiki

Manjaroの場合はmanjaro-pipewireというパッケージがあるのでそれを入れてしまえば楽とのこと。詳しくはわからん。もうほんとわからん。

$ yay -S manjaro-pipewire

音声の確認や設定はpavucontrolを使う。

$ yay -S pavucontorl

PulseAudio Volume Control 5.0

出力確認

HDMIに接続したモニタからは音声が出力された。しかし、ヘッドホンジャックにケーブルを挿してみたが音が聞こえなかった。ヘッドホンは認識されており、pavucontrolでは音声が出力されていたので皆目検討つかず。 試しにヘッドホンジャックではなくline-outに繋いでみたらヘッドホンから音声が聞こえた。ヘッドホンジャックとline-outの違いがわかっていないので調べてみたが、やっぱりわからなかった。Audioにいまいち興味が出ない。

Line Out vs Headphone Out: What's the Difference? (Solved!)

有線でダメなら無線で、とbluetoothを試してみた。しかし接続がかなり不安定ですぐ切れてしまう。同僚に聞いてみると、creativeのトランスミッターを差してPC本体と直接接続していないとのことだった。 すぐ購入して試してみたがヘッドホンから音声を聞くことができた。マイクから入力できなかったので引き続き調べた方が良さそう。もしダメなら別途マイクを購入して、入出力のデバイスを変えることも検討が必要そう。

KyeBoard

IME

現在fcitx4系はメンテナンスモードに入っている。

GitHub - fcitx/fcitx: A Flexible Input Method Framework

これを知らずにHello Manjaro経由でインストールしてしまい、後になってfcitx5をインストールした。fcitx4系を削除後、fcitx5は下記のコマンドでインストールする。

$ yay -S fcitx5 fcitx5-configtool fcitx5-mozc manjaro-asian-input-support-fcitx5

もしかしたらfcitx5-mozcが入っていればmanjaro-asian-input-support-fcitx5は不要かもしれない。

IMEの切り替えはCtrl+Spaceだが、fcitx5の設定からIMEのActivate Input Method / Deactivate Input Methodのショートカットを設定しておくとtoggleにならないので良い。

Keymap

Macの時はCtrl+hjklでカーソル移動、マウスのミドルボタンでMission Controlとしていた。これと同様のことをしたい。結論から書くとカーソル移動はどうしてもできなかった。 まず試したことはGUIのremapperだ。ArchWikiを見て良さそうだったInput Remapperを選んだ。

Input remap utilities - ArchWiki

このツールによってミドルボタンをSuper_Lに割り当てることでMission Controlと同様のことが実現できた。しかし、Ctrl_L+hjklを上下左右にそれぞれ割り当てたが、Ctrlが入力されたままになってしまい上下移動はできず、左右移動はワード移動になってしまった。

続いて、xmodmapコマンドによってremapを試みた。

xmodmap - ArchWiki

まずはkeycodeとkeysymの確認。手を加える場合は出力結果を.Xmodmap.defaultなどとして保存し、いつでも元に戻せるようにしておくと良い。

$ xmodmap -pke

.Xmodmapというファイルを作成し、下記のように記述し読み込ませる。

keycode  37 = Mode_switch
keycode  43 = h H Left
keycode  44 = j J Down
keycode  45 = k K Up
keycode  46 = l L Right
$ xmodmap .Xmodmap

ちなみにManjaroだと.xinitrcに下記のように記述されているため、xmodmapコマンドによって毎回読み込ませなくても良い。

usermodmap=$HOME/.Xmodmap
~~~
if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

設定内容を読み込ませたらキーを叩いて意図通りのイベントが発生するか確認する。そのためには下記のツールをインストールする。

$ yay -S xorg-xev

xevコマンドを実行すると入力を受けつけ、イベント内容を標準出力に書き出してくれる。実際にControl_Lを叩いてみるとControl_LではなくMode_switchが表示された。たしかに変更できている。しかし、前述の通りCtrl+hjklはControl_Lが入力されてしまった。

続いて、xkbコマンドによる変更を試みた。下記のように記述した~/.xkb/symbols/customというファイルを作成しsetxkbmapコマンドで設定を読み込ませた。しかしこれもダメだった。

X keyboard extension - ArchWiki

xkb_symbols "custom" {
  key <LCTL> { [ Mode_switch ] };
  key <AC06> { [ h, H, Left ] };
  key <AC07> { [ j, J, Down ] };
  key <AC08> { [ k, K, Up ] };
  key <AC09> { [ l, L, Right ] };
} 
$ setxkbmap -I ~/.xkb/symbols/custom

最後にxkeysnailコマンドを試した。READMEの通り設定したが上記と同様に上手く行かなかった。

GitHub - mooz/xkeysnail: Yet another keyboard remapping tool for X environment

半ば諦めモードだがもう少し慣れて仕組みを勉強していつか再度トライしたい。

パッケージ

インストールしたのは下記。

$ yay -S \
discord discord-screenaudio slack-desktop google-chrome \
1password notion-app google-cloud-sdk duf dust jq yq \
postgresql-libs docker kubectl exa bat-cat-git ripgrep fd gping \
glances delta buf rustup go curlie ghq neovim sccache volta-bin