web-dev-qa-db-ja.com

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

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

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

systemd-bootで使用されるEFI変数のリストについては、freedesktop.orgの "systemd-boot UEFI Boot Manager" ページの下部を参照してください。それらの値は、たとえば、で調べることができます

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

いくつかのキーを押してブートメニューを表示させた後、 d 新しいデフォルトエントリを設定および設定解除するために2回、これによりLoaderEntryDefault-...変数が削除されました。しかし、私はまだLoaderConfigTimeout-...で立ち往生しています。を使用してタイムアウトを変更できることを知っています tT((Shift-tLoaderConfigTimeout-...を変更するメニューのキーですが、/loader/loader.confの構成を再度使用できるように、完全に削除したいと思います。

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

1
Alexey

Systemd-bootで、を押します ShiftT または Num - 設定がゼロに達するのに十分な回数、そしてもう一度設定を解除して変数を完全に削除します。

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

UEFIシェルで、dmpstore -d <name>(オプションの-guid <guid>を含む)を使用して変数を削除します( EFI Shell Spec 2. 、113ページのドキュメントを参照)。

2
user1686