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

735
Alexey

Потратив часы на отладку проблемы, когда 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 Boot Manager" на 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
Возможный дубликат [Инструменты для изменения переменных UEFI в Windows / Linux?] (Https://superuser.com/questions/421415/tools-to-modify-uefi-variables-in-windows-linux) harrymc 5 лет назад 0
Я думаю, что похоже, но несколько запутанно и не совсем дублирует. Я спрашиваю конкретно о переменных, видимых в `/ sys / firmware / efi / efivars` под Linux, а не о проблемах с унаследованными / не унаследованными режимами. Alexey 5 лет назад 0

1 ответ на вопрос

2
grawity

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

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

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

Действительно, я только что обнаружил, что `Shift-t` выполняет работу для` LoaderConfigTimeout -... `. Как удалить безопасные переменные EFI с помощью `chattr -i` и` rm`? Как я могу узнать, какие переменные безопасно удалить? См., Например, обсуждение [выпуск № 2402] (https://github.com/systemd/systemd/issues/2402) для `systemd` на GitHub. Alexey 5 лет назад 0
Поиск по его названию и / или руководству продавца. Если вы найдете документацию о том, что он делает, решите, является ли это важной функцией. Если вы этого не сделаете, то предположите, что он используется микропрограммой для критических целей. grawity 5 лет назад 0