Como definir, alterar e remover com segurança valores de variáveis ​​​​EFI

Como definir, alterar e remover com segurança valores de variáveis ​​​​EFI

Depois de passar horas depurando um problema onde systemd-bootcomecei a pular o menu de inicialização e, em geral, ignorar o arquivo de configuração /loader/loader.conf(na partição EFI), descobri que posso invocar o menu de inicialização pressionando alguma tecla na inicialização, e que o O problema é causado por determinada variável EFI que aparentemente criei inadvertidamente. (Não sei como isso aconteceu, mas o problema apareceu logo depois de reinstalar o Ubuntu 18.04.1 em uma partição.)

Em particular, descobri que a variável foi LoaderConfigTimeout-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fdefinida de 0alguma forma, o que substituiu o tempo limite definido em /loader/loader.conf, e também tive a variável LoaderEntryDefault-4a67b082-0a4c-41cf-b6c7-440b29bb8c4fdefinida, que substituiu a entrada de menu padrão definida em /loader/loader.conf.

Veja a parte inferior"Gerenciador de inicialização UEFI systemd-boot"página em freedesktop.org para a lista de variáveis ​​EFI usadas por systemd-boot. Seus valores podem ser inspecionados, por exemplo

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

Depois que fiz o menu de inicialização aparecer pressionando alguma tecla e, em seguida, pressionei dduas vezes para definir e remover uma nova entrada padrão, isso removeu minha LoaderEntryDefault-...variável. No entanto, ainda estou preso LoaderConfigTimeout-.... Sei que posso alterar o tempo limite usando as teclas t T( Shift-t) do menu, que modifica o LoaderConfigTimeout-..., mas quero removê-lo completamente, para que a configuração em /loader/loader.confseja usada novamente.

Qual é a maneira correta e segura de modificar e remover variáveis ​​EFI, como LoaderConfigTimeout-...?

Responder1

No systemd-boot, pressione ShiftTou Num -o suficiente para que a configuração chegue a zero, e mais uma vez para desconfigurá-la completamente, removendo a variável.

No Linux, primeiro use chattr -io arquivo /sys/… para remover a proteção aplicada ao kernel e, em seguida, use rmpara excluir totalmente a variável.

No UEFI Shell, use dmpstore -d <name>(com opcional -guid <guid>) para excluir uma variável (consulte a documentação emEspecificação UEFI Shell 2.0, página 113).

informação relacionada