Efibootmgrを使用してinitramfsで実行するスクリプトを作成して、ブート順序を再割り当てすることなく、最高のブート優先度を永続的に設定しようとしています。
efibootmgr -n 000A
たとえば、ドライブを設定するのでこれに最適です000A
がブートの優先順位になりますが、次のブートのみになります。 efibootmgr -o
では、すべてのドライブを一覧表示して順序を再割り当てする必要があります。これらの値を取得し、efibootmgr
コマンドに再解析して順序を変更する必要があるため、スクリプトが複雑になります。
階層を書き直すのではなく、優先順位を上げようとしているドライブを参照するだけでブートの優先順位を変更する方法はありますか?
短い答え:いいえ。
長い答え:まず、特定の限られた意味または限られた状況下を除いて、EFIは「ドライブ」を起動しないことを理解します。 efibootmgr
によって明らかにされる最も一般的に使用されるブートエントリは、ESIに通常のファイルとして保存されるEFIブートローダープログラム用です。これは微妙な違いのように思えるかもしれませんが、問題を理解せずに解決しようとすると、バグが発生したり、解決策が限定されたりする可能性があります。
efibootmgr
出力の解析は、あなたがやりたいことをするために必要になる可能性があります。これは実際にはそれほど難しくないはずです。 grep
やcut
など、Bashスクリプトで使用されるいくつかの一般的なコマンドを理解することは、長い道のりを歩むことになります。
あるいは、バグのあるEFIが原因で失われた起動順序を復元することが目標の場合は、fallback.efi
プログラムを調べることができます。知る限りでは、Ubuntuでは利用できませんが、Fedoraに付属しています。このプログラムは、NVRAMブート変数のセットが失われた場合、ファイルから復元します。 EFI/BOOT
ディレクトリに配置され、Shim(自動的に起動する)から起動されるため、ファームウェアのブートエントリが失われた場合に復元されます。このアプローチには、さらに多くのファイルでESPを乱雑にし、ブートエントリを変更する場合にジャンプする必要がある新しいフープを作成するなど、いくつかの問題がありますが、それが必要な場合があります。