Как безопасно устанавливать, изменять, удалять значения переменных EFI

Как безопасно устанавливать, изменять, удалять значения переменных EFI

Потратив несколько часов на отладку проблемы, из-за которой система systemd-bootначала пропускать загрузочное меню и вообще игнорировать файл конфигурации /loader/loader.conf(в разделе EFI), я обнаружил, что могу вызвать загрузочное меню, нажав определенную клавишу при запуске, и что проблема вызвана определенной переменной 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»страница на freedesktop.org для списка переменных EFI, используемых systemd-boot. Их значения можно проверить, например, с помощью

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

После того, как я вызвал меню загрузки, нажав какую-то клавишу, а затем dдважды нажал, чтобы установить и снять новую запись по умолчанию, это удалило мою LoaderEntryDefault-...переменную. Однако я все еще застрял с LoaderConfigTimeout-.... Я знаю, что могу изменить тайм-аут с помощью клавиш t T( Shift-t) в меню, что изменяет LoaderConfigTimeout-..., но я хочу удалить его полностью, чтобы конфигурация в /loader/loader.confмогла использоваться снова.

Каков правильный и безопасный способ изменения и сброса переменных EFI, таких как LoaderConfigTimeout-...?

решение1

В systemd-boot нажмите клавишу ShiftTили Num -столько раз, чтобы значение параметра достигло нуля, и еще один раз, чтобы полностью удалить переменную.

В Linux сначала используйте chattr -iфайл /sys/…, чтобы удалить защиту ядра, а затем используйте , rmчтобы полностью удалить переменную.

В оболочке UEFI используйте dmpstore -d <name>(с необязательным -guid <guid>), чтобы удалить переменную (см. документацию вСпецификация оболочки UEFI 2.0, стр. 113).

Связанный контент