EFI変数の値を安全に設定、変更、削除する方法

EFI変数の値を安全に設定、変更、削除する方法

systemd-bootブート メニューをスキップし、一般的に構成ファイル (EFI パーティション上) を無視するようになった問題のデバッグに何時間も費やした後、/loader/loader.conf起動時に何らかのキーを押すとブート メニューを呼び出すことができ、この問題は、どうやら私が誤って作成した特定の EFI 変数によって発生していることがわかりました。(なぜこのようなことが起きたのかはわかりませんが、あるパーティションに Ubuntu 18.04.1 を再インストールした直後に問題が発生しました。)

特に、 の 変数が何らかの理由LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fで に設定されており0、 で定義されたタイムアウトが上書きされていること/loader/loader.conf、また 変数もLoaderEntryDefault-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f定義されており、 で設定されたデフォルトのメニュー エントリが上書きされていることを発見しました/loader/loader.conf

下部をご覧ください「systemd-boot UEFI ブート マネージャー」で使用されるEFI変数のリストについては、freedesktop.orgのページを参照してくださいsystemd-boot。それらの値は、たとえば次のようにして調べることができます。

cat /sys/firmware/efi/efivars/LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f

何らかのキーを押してブート メニューを表示し、 をd2 回押して新しいデフォルト エントリを設定および設定解除すると、LoaderEntryDefault-...変数が削除されました。ただし、 はまだ残っています。メニューで( ) キーLoaderConfigTimeout-...を使用して を変更することで を変更できることはわかっていますが、 を完全に削除して、 の設定を再度使用できるようにしたいと考えています。t TShift-tLoaderConfigTimeout-.../loader/loader.conf

などの EFI 変数を変更および設定解除する正しく安全な方法は何ですかLoaderConfigTimeout-...?

答え1

systemd-boot では、設定がゼロになるまで または を何回か押しShiftTNum -さらにもう一度押して設定を解除し、変数を完全に削除します。

Linux では、まずchattr -i/sys/… ファイルで を使用してカーネルによって適用された保護を削除し、次に を使用してrm変数を完全に削除します。

UEFIシェルでは、dmpstore -d <name>(オプションで-guid <guid>)を使用して変数を削除します(UEFI シェル仕様 2.0(113ページ)

関連情報