web-dev-qa-db-ja.com

efibootmgrを使用して、ブート順序全体を並べ替えることなくドライブを永続的なブート優先順位にする

Efibootmgrを使用してinitramfsで実行するスクリプトを作成して、ブート順序を再割り当てすることなく、最高のブート優先度を永続的に設定しようとしています。

efibootmgr -n 000Aたとえば、ドライブを設定するのでこれに最適です000Aがブートの優先順位になりますが、次のブートのみになります。 efibootmgr -oでは、すべてのドライブを一覧表示して順序を再割り当てする必要があります。これらの値を取得し、efibootmgrコマンドに再解析して順序を変更する必要があるため、スクリプトが複雑になります。

階層を書き直すのではなく、優先順位を上げようとしているドライブを参照するだけでブートの優先順位を変更する方法はありますか?

3
Shiri

短い答え:いいえ。

長い答え:まず、特定の限られた意味または限られた状況下を除いて、EFIは「ドライブ」を起動しないことを理解します。 efibootmgrによって明らかにされる最も一般的に使用されるブートエントリは、ESIに通常のファイルとして保存されるEFIブートローダープログラム用です。これは微妙な違いのように思えるかもしれませんが、問題を理解せずに解決しようとすると、バグが発生したり、解決策が限定されたりする可能性があります。

efibootmgr出力の解析は、あなたがやりたいことをするために必要になる可能性があります。これは実際にはそれほど難しくないはずです。 grepcutなど、Bashスクリプトで使用されるいくつかの一般的なコマンドを理解することは、長い道のりを歩むことになります。

あるいは、バグのあるEFIが原因で失われた起動順序を復元することが目標の場合は、fallback.efiプログラムを調べることができます。知る限りでは、Ubuntuでは利用できませんが、Fedoraに付属しています。このプログラムは、NVRAMブート変数のセットが失われた場合、ファイルから復元します。 EFI/BOOTディレクトリに配置され、Shim(自動的に起動する)から起動されるため、ファームウェアのブートエントリが失われた場合に復元されます。このアプローチには、さらに多くのファイルでESPを乱雑にし、ブートエントリを変更する場合にジャンプする必要がある新しいフープを作成するなど、いくつかの問題がありますが、それが必要な場合があります。

1
Rod Smith