0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

systemd-bootでEFIブート変数が書き換わった時の対処

Last updated at Posted at 2019-11-14

systemd-bootでEFIブート変数が書き換わった時の対処

TL;DR

# efivar --help

はじめに

systemd-bootを利用している場合、F1キーを押すことで起動パラメータを編集することができます。
基本的に全てのパラメータは「/ESP(EFI System Partition)/EFI/loader.conf」を参照することになっていますが、default,timeoutはEFIブート変数を優先するようになっています。

そのため、以下の偶然が重なると、timeout識別用の変数に0がセットされ、ブートメニューから何も選択できなくなります。

  • PCの電源が入りブート処理が行われる
  • ついうっかり「F1」キーが押される
  • tキーが押される(timeoutの設定の上書き)
  • 数値以外の何らかのキーが押される

対処

EFIブート変数は/sys/firmware/efi/efivarsにマウントされ実際のバイナリの値を参照することは出来ますが、readonlyな領域のためUEFIのNVRAMに対して書き込みを行うことはできません。
そのため、ファイルを編集するように簡単に値を編集することはできませんが、値はefivarコマンドから操作することができます。

現在の値を確認するには以下のコマンドを実行します。

# efivar -l
...
4a67b082-0a4c-41cf-b6c7-440b29bb8c4f-LoaderConfigTimeout
...

たくさん出てきますが、今回問題となるのは「LoaderConfigTimeout」です。
謎のGUIDがありますが、値の規則はよくわかりませんでした。

値を書き換えるために、変更後の値を指定したファイルを作成する必要があるため、以下で作成します。今回はtimeoutを5秒にします。

echo -n 5 > LoaderConfigTimeout.txt

以下のコマンドで実際に設定を書き込みます。

# efivar --name=4a67b082-0a4c-41cf-b6c7-440b29bb8c4f-LoaderConfigTimeout -w -f LoaderConfigTimeout.txt

変更された事を確認します。

# efivar --name=4a67b082-0a4c-41cf-b6c7-440b29bb8c4f-LoaderConfigTimeout -p 
GUID: 4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
Name: "LoaderConfigTimeout"
Attributes:
        Non-Volatile
        Boot Service Access
        Runtime Service Access
Value:
00000000  35                                                |5               |

再起動すると、EFIブート変数に指定した「LoaderConfigTimeout=5」が有効になることで、選択画面で5秒間待つようになり、0秒でtimeoutして適当なOSが起動するようになってしまった環境が元にもどります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?