Thinkpad X1 Carbon gen 1 にArch Linuxをインストールして趣味の開発環境にした

Debian を中古PCにインストールして使っていたが適当にapt update をしたところ can not open access to console the root account is locked というエラーがでてデスクトップが起動しなくなってしまった。 色々調べてみたものの修復できそうになかったのでOSをクリーンインストールしてやり直すことにした。 過去のブログによると2019年9月にインストールしたDebianらしい。

tomato3713.hatenablog.com

もともと利用していた Debian を再インストールしても良かったが Arch Linux を使ってみることにした。 Arch Linux に興味があって試してみたかったのと会社の同僚に使用者が多いので何かあっても大丈夫だろうと思って決めた。

Arch Linux のインストールは大変という噂だし実際インストールガイドを調べると次のようなサイトがでてくる。コマンドを沢山入力してインストールするのが普通っぽい。

一回上記サイトの通りにコマンドを入力してインストールに挑戦してみたが何かを間違えてしまって上手くいかなかった。 2回目をやる元気はその時なかったので archinstall コマンドを使った。 archinstall コマンドはCUI版のインストーラーという感じ。キーボードレイアウトやネットワーク設定、利用するミラー先などを選ぶだけインストールが完了した。 めっちゃ楽。

wiki.archlinux.jp

インストールメディアの作成

インストールメディア作成はWindowsだったので Refus を使った。 ISOは最新の archlinux-2024.02.01-x86_64.iso を利用した。

当初は、Refusの設定を変更せずにインストールメディアを作成してインストールを進めたが ERROR: 'UUID=2024-02-01-12-07-52-00' device did not show up after 30 seconds... がでてしまった。 そのため、Arch Wikiに書かれていたように Refus のパーティション構成→ドロップダウンメニューから GPT を選択、START をクリックしたあとにモード選択のダイアログが表示されるので DD イメージモードを選択してインストールメディアを作成し直してインストールを進めた。

インストール設定

ファイルシステムなど

パーティションはより現代的なパーティションスタイルらしいGPT、ブートローダーは systemd-boot を採用した。 ファイルシステムは初回インストール時は適当にext4にしていたんだけれど、ファイルシステムを何にするか迷ってるとXに投稿したら btrfs をお薦めされたので採用した。

btrfs はCoW (Copy on Write) 方式が採用されていてストレージ効率が良さそうなのも印象が良かった。 なお雰囲気でbtrfsを利用しているので使い心地の良さはまだ理解できていない。 説明だけ読んでも理解しにくいので使いながら勉強する予定でいる。

デスクトップ周り

デスクトップはWayland上で動くGNOMEにした。日本語入力は、fcitxとmozc にした。

# Wayland なので X11 は不要、全てインストールを選択
pacman -S gnome
systemctl enable gdm
# フォントもインストール
pacman -S noto-fonts not-fonts-cjk

# wayland 用にクリップボードツールをインストール
pacman -S wl-clipboard

# Bluetooth を使うためにBlueZをインストールする
pacman -S bluez bluez-utils

# fcitx5 まわりのパッケージをインストール
sudo pacman -S fcitx5 fcitx5-configtool fcix5-mozc fcitx5-qt

# エディタがデフォルトだとインストールされてないので
pacman -S vi

sudoedit /etc/environment
# /etc/environment に以下を追加
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

# 「キーボード - 日本語」と「Mozc」を入力メソッドに設定する
fcitx5-configtool

ユーザー管理

今まで /etc/passwd で管理するやり方しか知らなかったが、systemd-homed を知ったので使うことにした。 2020年はsystemd-homedの登場でLinuxのユーザー管理が大きく変わるぞ #Linux - Qiita の記事に詳しく書かれているのだけれど、homectl コマンドや userdbctl コマンドでユーザーやグループを管理できたり、ユーザーディレクトリを暗号化できたりと使い勝手が良さそうだった。 2020年には存在していたらしいので今まで気がついていなかったことが悔しい。

# systemd-homed を有効化
systemctl enable systemd-homed

# 一般ユーザーを作成
homectl create tomato

# wheel の行をコメントアウト解除
sudoedit /etc/sudoers

# wheel グループに追加
homectl update tomato --member-of=users,wheel

# ログインできるようにPAMの設定を追加
cp /usr/share/factory/etc/pam.d/system-auth /etc/pam.d/system-auth
# このままだとGDMからログインするときにパスワードを2回求められてしまうので設定を編集する
# pamedit みたいなツール経由で編集したほうが良いらしい
# ざっくりとしか理解してないのでより適した設定があるかも
# 1行目の `# auth      sufficient pam_unix.so` をコメントアウト
sudoedit /etc/pam.d/system-auth

# 設定内容をチェック
homectl inspect tomato

感想

Arch Linux のインストールは archinstall を使うと他のOSとほぼ変わりなくインストールできて簡単じゃんとなった。 普段ターミナルでコマンドを実行してる人なら簡単にできると思う。 忘れてしまっていたLinux周りの知識を思い出したり systemd-boot や systemd-homedなどの知らなかった情報を知ることができたのも良かった。 Arch Linuxと関係ないところでは tomaot3713/dotfiles にある Neovim の設定ファイルに記述間違いを見つけて修正した。 別PCに設定を移植しやすいように書いていたつもりだったが、普段は設定済みのPCでしか利用していなかったので気がつけていなかった。 実際に試したことで問題に気がつけたのでインストールのついでにわかってお得だった。 本当なら dotfiles にも自動テストを書きたいと思っているが、調査しきれていないことと他のことを優先して時間が取れてないせいで実現できていない。

インストールしたArch Linux は趣味の開発用とかブラウジングに利用している。 ThinkPad X1 Carbon gen1 は発売が2012年で10年以上前の古いPCだがnext run dev で簡単なWebアプリケーションを起動するとかプラグインが沢山はいったNeovimは快適に動作している。Dockerが軽快に動くかは試していないのでわからない。