UEFIブートオプションを修復する方法

UEFIブートオプションを修復する方法

何らかの理由で、BIOS のすべてのブート オプションが消去されました (おそらく、super-grub ディスクを使用した何らかの操作が原因です)。boot-repair live-usb を使用して GRUB を修復しようとしました。推奨される修復と再起動を実行した後も、BIOS にブート オプションが表示されず、起動するたびに BIOS セットアップ画面が表示されます。

私のセットアップに関する完全な情報はここ

この話は、Windows が起動できない (BCD 破損エラー) ことに気づいたときに始まりました。次に、これは GRUB の問題だと思い、Linux でブート修復を使用して推奨修復を実行しました。その後、Linux にも入れず、GRUB> プロンプトだけが残ることがわかりました。そこで、super-GRUB ディスクと super-GRUB2 ディスク ライブを試しました。その後、基本的に BIOS/UEFI のすべてのブート オプションを消去してしまったことがわかりました。ここで、別の Linux (kubuntu) をインストールし、新しいインストールで GRUB が修正されることを期待しましたが、修正されませんでした。そこで、最終的にブート修復ライブ USB を試し、推奨修復を実行しましたが、まだうまくいきませんでした。これを修正する方法をご存知ですか?

答え1

最終的に gdisk で修正しました。どれが重要なステップかはわかりませんが、UEFI ヘッダーとパーティション テーブルをバックアップして復元した後、再起動すると Linux がディスクを修正しようとし、efi システム パーティションのマウントに失敗します。この段階で、recuse コマンド ラインから gdisk を実行すると、efi システム パーティションに関連付けられた誤った「アクティブ」フラグが自動的に検出されます。フラグを修正するだけで問題は解決します。

これは BIOS や UEFI の問題ではありません。EFI システム パーティションを消去して Windows 10 を再インストールすることも試しました。ただし、効果はありませんでした。

答え2

唯一の問題がUEFI NVRAMブートオプション(ブート変数) がなくなった場合は、いくつかのオプションがあります。

UEFI モードで外部メディアから起動できる場合:

  • OS のルート ファイルシステムをマウントし、 をマウントして/proc/sysその/devファイルシステムに chroot し、ESP パーティションをマウントして実行しますgrub-install(/dev/sdXは OS インストールのルート ファイルシステムであると想定します)。
mount /dev/sdX /mnt
mount -t proc none /mnt/proc
mount --rbind /dev /mnt/dev
mount --rbind /sys /mnt/sys
chroot /mnt /bin/bash
mount /boot/efi
grub-install /dev/sdX

grub-installGRUB の UEFI ブート変数が自動的に生成されますが、efivarfs仮想ファイルシステムがマウントされ/sys/firmware/efi/efivars、システムが UEFI モードでブートされている必要があります。

  • または、chrootせずにESPパーティションをマウントし、efibootmgrブートオプションを手動で再作成するために使用します: ( /dev/sdX1ESPパーティションがであると仮定)
mount /dev/sdX1 /boot/efi

ls /boot/efi/EFI # there should be a directory for each OS/distribution

efibootmgr -c -d /dev/sdX1 -L "Any label you want" -l \\EFI\\<distro name>\\shimx64.efi  
# or ...\\grubx64.efi if Secure Boot disabled
  • セキュア ブートが有効になっていて、OS インストールにセキュア ブート シムがインストールされている場合は、特別なオプションがある可能性がありますgrub-install。最初のオプションと同様に chroot してから、次を実行します。
grub-install --uefi-secure-boot /dev/sdX

外部メディアがレガシー BIOS モードでのみ起動できる場合:

  • 上記の最初のオプションと同様に chroot しますが、次のgrub-install行を使用します。
grub-install --target=x86_64-efi --force-extra-removable /dev/sdX

レガシー モードでは、UEFI ブート変数にアクセスできないというエラー メッセージが表示される場合がありますが、今のところは無視できます。

これにより、GRUB の 2 番目のコピーが としてインストールされます[ESP mount path]/EFI/boot/bootx64.efi。これは、ファームウェアが UEFI フォールバック/リムーバブル メディア ブートローダーを見つけると想定している場所です。この後、ファームウェアは ESP パーティションを「UEFI モードで起動可能」として検出し、BIOS ブート メニューを使用して起動用に選択できるようになります。現在は UEFI ブート可能なディスクのみが存在するため (外部ブート メディアを削除した後)、最もレガシーを好む UEFI ファームウェアでも UEFI モードで起動するはずです。

システムが UEFI モードで起動した後、grub-install /dev/sdX再度実行して Linux OS の標準 UEFI ブート変数を再作成できます。

関連情報