"/"のファイルシステムを変更したときの手順メモ
前提
- Linux Mint 20
- UEFI ブート
- 変更前ルートファイルシステムは xfs、変更後は ext4
/dev/sda1= EFI システムパーティション/dev/sda2= swap/dev/sda3= “/“/dev/sda4= new “/home”
why?
- “/“ と “/home” のパーティションを分けたかった
- 単純に gparted でリサイズしようとしたら、xfs はリサイズ非対応だった
手順
boot
- gparted live iso を USB メモリに書き込んでそこからブートした。
- gparted live iso は、Legacy ブート(BIOS ブート)でしか起動できないので注意(UEFI ブート Only に設定してると起動できない)
ファイル退避
/dev/sdb1 をバックアップ先として使う。せっかく gparted で起動しているので、GUI から ext4 でフォーマットしておく。
1 | $ sudo su - |
パーティション作り直し
パーティションを作り直す前に umount /mnt/ssd1 でアンマウントしておく。
パーティション操作自体は、gparted の GUI があるので省略。
/dev/sda3 (xfs) を削除して、 /dev/sda3 (ext4, LABEL=root) /dev/sda4 (ext4, LABEL=home) を作成した。
ここで LABEL を指定しているのは、後々 fstab の修正で楽をするため
ファイル書き戻し
1 | $ sudo su - |
※1 home は別のパーティションにコピーするので exclude 指定している。 exclude は相対パスで指定しないと効かない。 -v が指定されているので、進捗表示をみて、そこに表示されているパスで指定すれば OK。ここでも FROM と TO のパスは末尾 “/“まで指定するのが重要
※2 KVM のディスクイメージが入っている。容量が大きいので/home 側に移動
/etc/fstab 修正
root ファイルシステムの UUID が変わってしまうのと、/home を分割したので、起動する SSD の/etc/fstab を修正する。
vim /mnt/root/etc/fstab
1 | LABEL=root / ext4 defaults 0 0 |
再起動
ここで、バックアップ用 SSD を外して再起動する。
grub
“/“のディスクの UUID が変わっているため、初回は grub のプロンプトに入ってしまう。
ここで以下のように入力
1 | grub> ls |
※3 rescue をつけてレスキューモードにしておかないと、GUI が立ち上がったりすると面倒なので。
※4 カーネルのバージョンと同じものがついている initrd を選択する。違っていると起動に失敗する。
rescue モードでの起動
これで、rescue モードで起動できる。何も入力しなくても root のプロンプトが表示されるので、以下のように操作する。
1 | # fstabが正しいかチェック |
1 | # mount /dev/sda1 /mnt EFIシステムパーティションをマウントする。 |
reboot
### 通常起動
何もせずに普通に起動してくれば OK。おつかれさまでした。
## 蛇足
### 念の為の追記。
- 実際に作業をしたときは、`rescueモードでの起動` の時に、`update-initramfs` `update-grab` を実行しているが、意味がないはず。
### 起動の動作
UEFI -> /dev/sda1/EFI/bootx64.efi (GRUB) -> Linux カーネル -> systemd
"/"パーティションの UUID が変わってしまうと、GRUB が "/" を見つけられなくなる(/boot/EFI/ubuntu/grub.cfg に書いてある UUID が変わるから)ので GRUB で停止していると思われる。
なので、手動で grub にルートファイルシステムを指定し、カーネルと initramfs を読み込ませれば起動できるようになる。ということだと思う。