久しぶりにテスト用クライアントの Hyper-V で1年ほど前の CentOS7 のイメージを復元してみると,何と!
Failed to open \EFI\BOOT\grubx64.efi – Not Found
Failed to load image \EFI\BOOT\grubx64.efi: Not Found
Start_image() returned Not Found>Start PXE over IPv4
というメッセージで止まってしまいました.
修復手順
まず,CentOS7 のインストールイメージをマウントし,このイメージから CentOS のインストーラーを起動します.今回は,
CentOS-7-x86_64-Minimal-1804.iso
を使いました.
起動すると,
- Install CentOS 7
- Test this media & install CentOS 7
- Troubleshooting
の3つの選択肢がでてきますので,今回は「Troubleshooting」を選びます.すると,
- Install CentOS 7 in basic graphics mode
- Rescue a CentOS system
の2つの選択肢が出てきますので,今度は「Rescue a CentOS system」を選びます.
これでレスキューイメージが起動しますが,起動後,
- Continue
- Read-only mount
- Skip to shell
- Quit (Reboot)
の選択肢が表示されます.これは「Continue」を選択すれば OK です.最終的に,
Your system has been mounted under /mnt/sysimage
if you would like to make your system to root environment, run the command:
chroot /mnt/sysimage
Please press <return> to get a shell.
の様に表示されますので,指示に従い,<return> を入力したあと,
sh_4.2# chroot /mnt/sysimage/ bash-4.2#
の様に続けることで,起動しなくなった CentOS7 のルートに chroot されます.ここから復旧していけば良い訳です.
今回は,grubx64.efi が無いという不具合なので,
bash-4.2# mkdir /mnt/boot bash-4.2# mount -t vfat /dev/sda1 /mnt/boot bash-4.2# cp /boot/efi/EFI/centos/grubx64.efi /boot/efi/EFI/BOOT/
として「CentOS-7-x86_64-Minimal-1804.iso」を取り外し,再起動で無事,CentOS7 が立ち上がるようになりました.
このあと,yum update ができないなどの不具合があったのですが,これは少し今回のものとは毛色が違うので別記事で復旧手順をご紹介します.
以上!