
最初はすべて順調でした。私の SSD には 2 つの EFI パーティションがあり、通常は Linux をデフォルトにして f12 キーを使用して OS を切り替えます。しかし、NVRAM をクリアした後、Windows ブート マネージャーはありますが、Linux EFI が消えてしまいました。ブート メニューに再び追加するにはどうすればよいでしょうか?
答え1
Windows ブート マネージャーも消えたと思われますが、UEFI ファームウェアに自動的に追加するコードが含まれていたか、または Windows が最初にフォールバック UEFI ブートローダー パス ( \EFI\boot\bootx64.efi
) を使用して起動し、完全に自動化された「自己修復」操作として適切な NVRAM ブート変数を再度追加しました。
これは、起動可能なLinuxライブブートメディアを使用して修正するのが最も簡単です。UEFIネイティブモードそうすれば、コマンドを使用できるようになりますefibootmgr
。
ライブ メディアから Linux を起動した後、まず Linux インストールの EFI システム パーティション (略して ESP) を Linux ディストリビューションの通常の場所 (通常は です/boot/efi
が、ディストリビューションによっては のみを使用する場合もあります) にマウントする必要があります。次に、そのディレクトリ内に のような UEFI ブートローダ ディレクトリとや のようなファイルが/boot
あるはずです。他にもファイルがある可能性があります。/boot/efi/EFI/<name of your Linux distribution>/
shimx64.efi
bootx64.efi
ブートローダ ディレクトリに が含まれている場合はshimx64.efi
、それを<bootloader file>
次のステップで として使用します。含まれていない場合は、grubx64.efi
が存在する場合は を使用します。
Linux ESP がディスク上にあると仮定すると/dev/sda
、efibootmgr
ファームウェア メニューへのブート エントリを再作成するコマンドは次のようになります。
efibootmgr -c -d /dev/sda -l \\EFI\\<name of your distribution>\\<bootloader file> -L "<the name you want to see in the firmware menu>"
同じディスク上に複数の ESP があるため、ディスクを指定するだけでなく、正しい ESP デバイス名 ( ではなく など-d /dev/sda5
)-d /dev/sda
を指定する必要がある場合があります。
その後、 を使用してefibootmgr -v
ブート設定を表示します。 を使用しefibootmgr --bootorder
てブート順序を調整し、Linux をデフォルトにするか、BIOS 設定にアクセスして同じ操作を行う必要がある場合があります (一部の UEFI ファームウェアでは、 を使用して行われたブート順序の変更が拒否される場合があります。efibootmgr --bootorder
これはおそらくファームウェアのバグです)。
NVRAM がリセットされるたびに Linux を「存続 OS」にしたい場合は、--force-extra-removable
OS が正常に起動したら、次のようなコマンドを使用してオプションを使用して UEFI GRUB を再インストールできます。
sudo grub-install --force-extra-removable --uefi-secure-boot /dev/sda
(システムでセキュア ブートを無効にしていて、今後も無効のままにしておく予定の場合は、--uefi-secure-boot
必要に応じてオプションを省略できます。)