はじめに
Debianをインストールするときに/boot/efiもRAID1にしたかったのですが、インストーラーではできないようです。
そこで、インストール時にSSD2台のそれぞれにESPパーティションを作っておき、インストール後にRAID1に変更します。
参考

環境
Debian11 bullseye 64bit SSD 500GB 2台
Debianのインストール
ハードディスクの構成は以下の通りです。
各SSDにESPパーティションを128MB、残りをraid領域とします。
/dev/md/0 ext4 (ルートディレクトリをマウント) /dev/sda2 残り raid /dev/sdb2 残り raid /dev/sda /dev/sda1 128MB ESP /dev/sda2 残り raid /dev/sdb /dev/sdb1 128MB ESP /dev/sdb2 残り raid インストール後に以下のようにします。 /dev/md1 vfat /dev/sda1 128MB ESP /dev/sdb1 128MB ESP
手順
/boot/efiをアンマウントします。
sudo umount /boot/efi
空いているmd[x]を探して、2個のESPパーティションでRAID1を構築します。
OSインストール時にmd0を使っているのでmd1を使います。
「–metadata」はdefaultでもよいかもしれませんが試していません。
「man mdadm」に記載がありますが、defaultを指定した場合は「1.2」と等価です。
cat /proc/mdstat sudo mdadm --create /dev/md1 --verbose --metadata=1.0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
構築したmd1をVFAT形式でフォーマットします。
sudo apt install dosfstools sudo mkfs.vfat /dev/md1
md[x]の名称を固定したいので、設定ファイルに追記します。
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
追記された内容は下記のようになりました。
ARRAY /dev/md/0 metadata=1.2 name=perseus:0 UUID=0279xxxx:dee61xxx:a7acaxxx:074xxxxx ARRAY /dev/md1 metadata=1.0 name=perseus:1 UUID=008bxxxx:d6cd3xxx:7bff5xxx:bdcxxxxx
/dev/md/0は、OSのインストール時に/etc/mdadm/mdadm.confに記載されているので重複した古い行はコメントします。
また、/dev/md/0はOSを再起動したときに/dev/md127が割り当てられたので、/dev/md0に修正しました。
ARRAY /dev/md0 metadata=1.2 name=perseus:0 UUID=0279xxxx:dee61xxx:a7acaxxx:074xxxxx ARRAY /dev/md1 metadata=1.0 name=perseus:1 UUID=008bxxxx:d6cd3xxx:7bff5xxx:bdcxxxxx
initrdイメージを更新します。
sudo update-initramfs -u
/dev/md1のUUIDを調べます。
ls -la /dev/disk/by-uuid/
lrwxrwxrwx 1 root root 9 1月 15 11:41 6BE6-XXXX -> ../../md1
/etc/fstabにある/boot/efiのUUIDを/dev/md1のUUIDに修正します。
sudo vi /etc/fstab
UUID=6BE6-XXXX /boot/efi vfat umask=0077 0 1
/boot/efiをマウントします。
sudo mount /boot/efi
grubを/boot/efiにインストールします。
ESPパーティションはLinux Software RAIDに対応していないのでエラーが表示されますが、今回の場合は問題ありません。
sudo grub-install --efi-directory=/boot/efi
以下、エラーメッセージです。
grub-install: warning: efi_get_variable: ops->get_variable failed: そのようなファイルやデ ィレクトリはありません. grub-install: warning: efi_va_generate_file_device_path_from_esp: could not open device for ESP: 不正なアドレスです. grub-install: warning: efi_generate_file_device_path_from_esp: could not generate File DP from ESP: 不正なアドレスです. grub-install: エラー: failed to register the EFI boot entry: 不正なアドレスです.
/dev/md1が構築されたか確認します。
cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 sdb1[1] sda1[0] 122880 blocks super 1.2 [2/2] [UU] df -h /dev/md1 120M 3.4M 117M 3% /boot/efi
ブートエントリと登録されているデバイスのUUIDを調べて、どのパーティションから起動しているのか調べます。
はじめにブートエントリから調べます。
「Boot0000* debian」のUUIDを覚えておきます。
efibootmgr -v
BootCurrent: 0001 Timeout: 1 seconds BootOrder: 0002,0001,0000 Boot0000* debian HD(1,GPT,72cd0455-4ccf-4561-b919-b236382xxxxx,0x800,0x3c800)/File(\EFI\DEBIAN\SHIMX64.EFI)
次に登録されているデバイスのUUIDとPARTUUIDを調べます。
sudo blkid
1行目の/dev/sdb1にあるPARTUUIDと一致しています。
このことから、/dev/sdb1から起動していることが分かります。
/dev/sdb1: UUID="bf91cea7-b3e5-0ae3-ab37-1167bcdxxxxx" UUID_SUB="c012b7ab-fcf1-fd9d-69c6-ecb6d34xxxxx" LABEL="perseus:1" TYPE="linux_raid_member" PARTUUID="72cd0455-4ccf-4561-b919-b236382xxxxx" <-- ここ /dev/sda1: UUID="bf91cea7-b3e5-0ae3-ab37-1167bcdxxxxx" UUID_SUB="e1687f1d-a13d-5793-4b30-2a6f87exxxxx" LABEL="perseus:1" TYPE="linux_raid_member" PARTUUID="323acaab-ef15-47f2-84a3-3bae82cxxxxx" <-- 追加する
耐障害性を高めるため、/dev/sda1からも起動できるようにします。
sudo efibootmgr -c -d /dev/sda -L debian0 -l '\EFI\DEBIAN\SHIMX64.EFI'
登録できているか確認します。
efibootmgr -v
/dev/sda1のPARTUUIDが登録されていることが分かります。
BootCurrent: 0001 Timeout: 1 seconds BootOrder: 0002,0001,0000 Boot0000* debian HD(1,GPT,72cd0455-4ccf-4561-b919-b236382xxxxx,0x800,0x3c800)/File(\EFI\DEBIAN\SHIMX64.EFI) Boot0001* debian0 HD(1,GPT,323acaab-ef15-47f2-84a3-3bae82cxxxxx,0x800,0x3c800)/File(\EFI\DEBIAN\SHIMX64.EFI)
間違えて登録した場合は、エントリを削除して再登録します。
sudo efibootmgr -b 0001 -B
reboot後にF11キーなどを押してブートデバイスを選択して、/dev/sda1、/dev/sdb1からそれぞれ起動できるか確認したら完成です。
sudo reboot
Comments