Setup Manjaro Linux
Mac OSでの開発がしんどくなってきたのでLinux PCを自作した。初めての自作で学びが多かったので見返せるように残しておく。試行錯誤を整理するのが面倒だったのでメモ程度に。
PCの組み立て
CPU
自作のモチベーションはPCスペックの向上なのでIntel Core i9-13900K
を購入した。
マザーボード
YouTubeで13900Kの組み立て動画を見ながら探した結果、Z790チップセット対応のROG STRIX Z790-F GAMING WIFI
を購入した。
メモリ
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の組み立て動画で見たものと同じものを購入した。
電源
ブランドは割とどこでも良さそうだったので、聞いたことのある玄人志向にした。電源容量は上記のパーツから計算しつつ、今後のパーツ交換を見越して少し大きめのものを購入した。
80PLUS GOLD取得 ATX電源 650W(プラグインタイプ) | 玄人志向
ケース
今回購入したCPUは13900Kで内蔵GPUがある。大きさはミドルタワーサイズにした。もし動作に不満がありグラボも欲しいと思った場合にケースに入らなかったら悲しいからだ。
組み立て
購入したマザボが初心者向けということもあり非常に組み立ては楽だった。とはいえ、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にした。
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はバグがあるようで全く動作しなかった。
モニタの管理はxrandrをラップしているarandrを使うと良いとあった。しかしこちらも動作せず、、、。
色々見てたらSettingアプリから変更できた。ありがとうManjaro。
Audio
オーディオ設定は苦戦した。調べているとpulseaudioを使う記事が多かったが、最近はpipewireを使うほうが良いらしい。
PulseAudio, PulseAudio - ArchWiki
Manjaroの場合はmanjaro-pipewire
というパッケージがあるのでそれを入れてしまえば楽とのこと。詳しくはわからん。もうほんとわからん。
$ yay -S manjaro-pipewire
音声の確認や設定はpavucontrol
を使う。
$ yay -S pavucontorl
出力確認
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を試みた。
まずは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