UEFI環境下にWindowsとUbuntuのデュアルブートを構築した端末にて、
ある日Windows側をアップデートしたところ、以下のようなエラーが出てUbuntuが起動しなくなりました。
Failed to open \EFI\ubuntu\grubx64.efi - Not Found
Failed to load image \EFI\ubuntu\grubx64.efi: Not Found
start_image() returned Not Found, falling back to default
Failed to open \EFI\ubuntu\grubx64.efi - Not Found
Failed to load image \EFI\ubuntu\grubx64.efi: Not Found
start_image() returned Not Found
調べたところ、よく分かりませんが、とにかくWindowsが悪いんだと思います。
修復手順
GRUBを再インストールすることで修復していきます。
ただ、元々のUbuntuは起動できない状態なので、代用のUbuntuを用意して作業する必要があります。
なのでまずは、UbuntuのライブUSBを作成し、ライブセッションでUbuntuを起動しましょう。
起動したら、とりあえず偉くなっておきましょう。
$ sudo -s
次に元々のUbuntuがインストールされているディスクをマウントしていきます。
[Ubuntuパーティション]
の部分は「ディスク」というアプリから探しましょう。
$ mount /dev/[Ubuntuパーティション] /mnt
$ mount --bind /dev /mnt/dev
$ mount --bind /dev/pts /mnt/dev/pts
$ mount --bind /proc /mnt/proc
$ mount --bind /sys /mnt/sys
$ mount --bind /run /mnt/run
全てマウントできたらそこへchrootします。
$ chroot /mnt
次にEFIパーティションをマウントします。
こちらも[EFIパーティション]
部分は「ディスク」から調べましょう。
$ mount /dev/[EFIパーティション] /boot/efi
最初のエラーの通り、grubx64.efi
が無くなってしまっていることを確認します。
$ ls /boot/efi/EFI/ubuntu/grubx64.efi
Grubをインストールします。
インターネット接続が必要だと思います。
$ grub-install --efi-directory=/boot/efi
$ update-grub
grubx64.efi
があることを確認します。
$ ls /boot/efi/EFI/ubuntu/grubx64.efi
これで起動するようになったはずです。
参考