システムをアップグレードすると、efiの起動順序が時々変更され、システムが起動しなくなります。 BIOSに移動して、ubuntu efiエントリを再選択する必要があります。私はそれがそれらのパッケージの1つであると推測しています(少なくとも、それらの1つがアップグレードされているのを見ると常に起こります):
grub-common grub-efi grub-efi-AMD64 grub-efi-AMD64-bin grub-efi-AMD64-
signed grub2-common shim shim-signed
Efibootmgrを実行すると、次のようになります。
efibootmgr
No BootOrder is set; firmware will attempt recovery
私が走った:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
UEFI
Efibootgmrが実行されていないという回答を見つけることができません。助けてください。ありがとう!
更新:
EFIブート変数を追加してみました:
efibootmgr --create --disk /dev/sda --part 1 --label "Ubuntu" --loader
\\EFI\\ubuntu\\grubx64.efi
返されるもの:
BootOrder: 0000
Boot0000* Ubuntu
再起動すると、システムは起動しません。
現在、作業エントリにはUbuntuというラベルが付いています。選択すると、Ubuntuが起動します。 efibootmgrを再度実行した後、以前と同じ結果が得られます。
efibootmgr
No BootOrder is set; firmware will attempt recover
関連する場合は、更新によってブート順序が変更されたときに、シムとシム署名も更新されました。
更新:
コンピューターは最新のBIOSリビジョンを備えたGigabyte Brix GB-BXBT-1900です。
私の最初の質問は、なぜefigootmgrが機能していないのか、そして答えられたと思う。ご意見ありがとうございます。
私が「ブートクーデター」と呼んでいるものに直面しています。このテーマに関するページを書きました。詳細については here を参照してください。とはいえ、あなたの問題は少し珍しいように聞こえますが、これはおそらくこれに関連しています:
efibootmgr
No BootOrder is set; firmware will attempt recovery
通常、EFIベースのコンピューターにはBootOrder
変数が設定されています。ケースIは、この変数の受け入れを拒否する欠陥のあるファームウェアが原因で、設定されていない場所を個人的に見てきました。そのようなコンピューターでは、フォールバックファイル名を介してのみ起動する可能性があります(通常、EFI/BOOT/bootx64.efi
も機能する場合がありますが、ESPの場合は通常EFI/Microsoft/Boot/bootmgfw.efi
)。そうは言っても、BootOrder
変数は空であるが設定できる場合は聞いたことがあります。この場合、 here、 で説明したようにEFIブート変数を追加すると、問題を解決できます。
お使いのコンピューターの欠陥がひどく、フォールバックファイル名で起動する必要がある場合は、ブートローダーを適切な名前にコピーまたは移動/名前変更し、構成ファイルなどのファイルをサポートする必要があります。
「ubuntu efiエントリ」を参照すると、ブート変数はあると思われますが、BootOrder
変数は失われます。これはおそらくファームウェアのバグですが、欠陥のあるNVRAMハードウェアを示している可能性があります。バグの場合、ファームウェアをアップグレードすると問題が解決する場合があります。そのようなアップグレードが存在するかどうかを確認するには、製造元に確認してください。それでも解決しない場合は、GRUBをフォールバックファイル名にコピーし、BootOrder
変数が再び失われた場合に呼び出されるようにします。 ESPは通常/boot/efi
にマウントされ、通常のLinuxファイルシステムコマンドが機能するため、これを行うことができます。
Sudo cp -r /boot/efi/EFI/ubuntu /boot/efi/EFI/BOOT
Sudo mv /boot/efi/EFI/BOOT/shimx64.efi /boot/efi/EFI/BOOT/bootx64.efi
これにより、Shimがフォールバックファイル名にコピーされます。コンピューターがセキュアブートを使用していないことが確実な場合は、grubx64.efi
ではなくshimx64.efi
の名前をbootx64.efi
に変更できます。