Arch Linux を btrfs でインストール
ThinkPad T480 という古いノートPCに Arch Linux をインストールして遊んでみようと思います。
ファイルシステムは btrfs にしてみます。
公式のインストールガイドに従っていくので、ガイドから変えたところだけ書くことにします。日本語版に加えて英語版も参考にしながら進めていきます。
インストールの準備
1.1 インストールメディアの入手 から 1.4 ライブ環境の起動 まではガイド通りに進めました。
1.5 コンソールのキーボードレイアウト
キーボードレイアウトはいいとして、フォントが小さくて辛いので大きくします。英語版のガイドで一番大きな ter-132b が例示されていますが流石に大き過ぎるので /usr/share/kbd/consolefonts/ から見繕って変更します。
# setfont ter-128n
1.7 インターネットへの接続
インターネット接続は有線か簡単そうだけど無線で。デバイス名を確認して SSID に接続します。
# iwctl device list
# iwctl station <device> connect <SSID>
1.9 パーティション
EFIシステムは英語版に倣って1G割り当て、残りをbtrfs用にします。
| device | size | type |
|---|---|---|
| /dev/nvme0n1p1 | 1G | EFI System |
| /dev/nvme0n1p2 | 残り全て | Linux filesystem |
1.10 パーティションのフォーマット
# mkfs.fat -F 32 /dev/nvme0n1p1
# mkfs.btrfs /dev/nvme0n1p2
1.11 ファイルシステムのマウント
ここが今回のポイントです。スナップショットを保存するためのサブボリュームも用意した構成にしました。
| マウントポイント | サブボリューム |
|---|---|
| / | @ |
| /home | @home |
| /var/cache | @var_cache |
| /var/log | @var_log |
| /.snapshots | @snapshots |
一旦ディスクをマウントしてサブボリュームを作成します。
# mount /dev/nvme0n1p2 /mnt
# cd mnt
# btrfs subvolume create @
# btrfs subvolume create @home
# btrfs subvolume create @var_cache
# btrfs subvolume create @var_log
# btrfs subvolume create @snapshots
# chattr +C @var_log
@var_log は CoW を無効にします。
アンマウントして作成したサブボリュームを使ってマウントし直します。
# mount -o noatine,compress=zstd,subvol=@ /dev/nvme0n1p2 /mnt
# mount --mkdir /dev/nvme0n1p1 /mnt/boot
# mount --mkdir -o noatine,compress=zstd,subvol=@home /dev/nvme0n1p2 /mnt/home
# mount --mkdir -o noatine,compress=zstd,subvol=@var_cache /dev/nvme0n1p2 /mnt/var/cache
# mount --mkdir -o noatine,compress=zstd,subvol=@var_log /dev/nvme0n1p2 /mnt/var/log
# mount --mkdir -o noatine,compress=zstd,subvol=@snapshots /dev/nvme0n1p2 /mnt/.snapshots
EFIシステムは英語版に倣って /boot にしました。
3.8 ブートローダー
systemd-boot を使います。
EFIブートマネージャーのインストール
# bootctl install
注意されたけど動くのでいいでしょう。
Mount point '/boot' witch backs the random seed file is world accessible, which is a security hole!
Random seed file '/boot/loader/.#bootctrrandom-seedxxxxxxxxxxxxxxxx' is world accessible, which is a security hole!
ローダー設定
default arch.conf
timeout 4
console-mode max
editor no
ローダー追加
archlinux を起動する設定ファイルを作成しますがディスクのUUIDを書くのは面倒なので、blkid でファイルに書き出してから編集します。
# blkid -s UUID -o value /dev/nvme0n1p2 > /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rootflags=subvol=/@ rw
btrfs のサブボリューム /@ を / にマウントしているので options に rootflags=subvol=/@ を追加しています。
終わりに
btrfs でスナップショットを取っておけば過去のスナップショットに戻すこともできると思うので、色々遊んでいこうと思います。
Discussion