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