LoginSignup
1

More than 1 year has passed since last update.

Ubuntu 22.04 btrfs subvolumeへのインストール

Posted at

VPSで以下構成でインストールしたい。

# fstab
/dev/vg/swaplv none swap sw 0 0
/dev/vg/rootlv / btrfs subvol=@ 0 1
/dev/vg/bootlv /boot ext4 defaults 0 1

Ubuntu ubiquityインストーラのデフォルトではsubvol=/でインストールされてしまう。これではスナップショットが使いにくい。

自分の環境ではBIOS(KVM)なのでefiパーティションは作っていないが/boot/efiをマウントすれば同様。

インストール前提

自動セットアップは使えないので通常のlive-server.isoを使う。
https://cdimage.ubuntu.com/ubuntu-server/daily-live/current/

VPSのWebコンソール(novnc)では日本語キーボードで@を入力できないことが多いのでSSH経由で実行する。

インストール用SSHセットアップ

  • iso boot後言語選択画面から F1キー -> Help > Exit to shellでシェルへ抜ける。
  • root shellが自動で起動しているが、rootでのSSHログインは無効化されているようなのでデフォルトのinstallerユーザを使う。
  • パスワード設定されていないので passwd installerでパスワードを設定
  • ipアドレスはDHCPで割り当てられているはず。ip addrip routeで確認。
  • リモートからinstallerユーザでログインすると自動でsubiquityが立ち上がる。

インストール

通常のインストール手順を進める。
(LVM作成が若干UI変わっている。VGを消して再作成するとおかしくなるなど挙動が怪しかった20.04から改善されているようだ)

インストーラの中でネットワーク設定の自動検出中にSSHが切れる場合があるので注意。もし切れたらコンソール側で再設定が必要。

インストール完了後リブートせずにもう一度シェルへ抜ける。

subvolume再配置

インストール完了後の//targetにマウントされたままなのでsubvolを作って再マウントし、initramfs/grubに反映する。
(/bootデバイスを変えていなければgrub側の変更は必要無いはずだが念のため)

# スナップショットでrwコピーを作る
sync
btrfs subvolume snapshot /target /target/@
btrfs property set -ts /target/@ ro false

# 最終構成にあわせて再マウント
# umount /target/boot/efi
umount /target/boot
umount /target
mount -o subvol=@ /dev/vg/rootlv /target
mount /dev/vg/bootlv /target/boot
# mount /dev/vda1 /target/boot/efi

# update-initramfs/grub用にデバイスを持ち込む
mount --bind /proc /target/proc
mount --bind /dev /target/dev
mount --bind /sys /target/sys

# fstabのsubvol変更。ついでに/swap.imgのエントリが自動で入っているので消しておく。
vim /target/etc/fstab

# 最終構成のchrootに入ってfstabとgrubの反映
chroot /target
update-initramfs -u
grub-install --recheck /dev/vda
update-grub

# 再起動
exit
reboot

再起動後

  • スナップショットもとがsubvol=/に残っているので忘れず削除。
  • /tmpあたりはsubvolに切り分けておいたほうが良さそう

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1