【トラブル対応ログ】GRUBが起動しない!EFI環境×HDLM構成の復旧手順メモ

インフラ

今回は、HDLMで構成されたRHELサーバにて、GRUB設定ミスによってOSが起動できなくなったため、レスキューモードからGRUBを再構築して復旧するまでの手順をまとめました。

🧭 背景と環境構成

  • OS:RHEL 8.6
  • ブート:UEFI(EFIパーティションあり)
  • マルチパス構成(HDLM利用)
  • /:/dev/mapper/mpathb5
  • /boot:/dev/mapper/mpathb2
  • /boot/efi:/dev/mapper/mpathb1

🛠 発生した問題

Liveレスキューモードで起動後、GRUB構成ファイルを生成しようとすると次のエラーが発生:

grub2-editenv: error: cannot rename the file /boot/grub2/grubenv.new to /boot/grub2/grubenv: No such file or directory.

🔎 原因

/boot/grub2/grubenv は実体ファイルではなく、/boot/efi/EFI/redhat/grubenv へのシンボリックリンク

そのため、EFIパーティションがマウントされていないと grubenv を更新できない状態となっていた。

✅ 復旧作業の流れ

1. 必要なパーティションをマウント

mount /dev/mapper/mpathb5 /mnt/sysroot
mount /dev/mapper/mpathb2 /mnt/sysroot/boot
mount /dev/mapper/mpathb1 /mnt/sysroot/boot/efi
mount --bind /dev  /mnt/sysroot/dev
mount --bind /proc /mnt/sysroot/proc
mount --bind /sys  /mnt/sysroot/sys

2. chroot でルート環境へ入る

chroot /mnt/sysroot

3. grubenv を作成(EFIがマウントされている前提)

grub2-editenv /boot/grub2/grubenv create

4. grub.cfg を再生成

grub2-mkconfig -o /boot/grub2/grub.cfg

5. GRUBブートローダを再インストール(UEFI)

grub2-install \
  --target=x86_64-efi \
  --efi-directory=/boot/efi \
  --bootloader-id=redhat \
  --recheck

6. アンマウントして再起動

exit
umount /mnt/sysroot/boot/efi
umount /mnt/sysroot/boot
umount /mnt/sysroot/dev
umount /mnt/sysroot/proc
umount /mnt/sysroot/sys
umount /mnt/sysroot
reboot

📌 補足メモ

  • grubenv は GRUB の変数管理ファイル。ないと一部の機能(メニュー保存など)が使えない。
  • EFI環境では grubenv の実体は /boot/efi/EFI/redhat/ 配下にある。
  • grubenv に書き込めない場合、EFIパーティションのマウント漏れが原因であることが多い。

✅ まとめ

EFI + マルチパス(HDLM)構成では、Live環境から復旧する場合でも/boot と /boot/efi を正しくマウントしてから chroot に入ることが重要でした。

同様の構成でGRUBが壊れたとき、この記事が参考になれば幸いです。

コメント

タイトルとURLをコピーしました