何らかの理由で、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-install
GRUB の UEFI ブート変数が自動的に生成されますが、efivarfs
仮想ファイルシステムがマウントされ/sys/firmware/efi/efivars
、システムが UEFI モードでブートされている必要があります。
- または、chrootせずにESPパーティションをマウントし、
efibootmgr
ブートオプションを手動で再作成するために使用します: (/dev/sdX1
ESPパーティションがであると仮定)
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 ブート変数を再作成できます。