1

Потратив часы на отладку проблемы, когда 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 ответ1

2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .