Como configurar, alterar e remover com segurança os valores das variáveis EFI

1

Depois de passar horas depurando um problema em que systemd-boot começou a ignorar o menu de inicialização e, em geral, ignorando seu arquivo de configuração /loader/loader.conf (na partição EFI), descobri que posso invocar o menu de inicialização pressionando alguns chave na inicialização, e que o problema é causado por determinada variável EFI que eu aparentemente criei inadvertidamente. (Eu não sei como isso aconteceu, mas o problema apareceu logo depois que eu reinstalei o Ubuntu 18.04.1 em uma partição.)

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

Veja a parte inferior da página "systemd-boot UEFI Boot Manager" no freedesktop. org para a lista de variáveis EFI usada por systemd-boot . Seus valores podem ser inspecionados com, por exemplo

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

Depois que eu fiz o menu de inicialização aparecer pressionando alguma tecla, e então pressionei d duas vezes para definir e desarmar uma nova entrada padrão, isso removeu minha variável LoaderEntryDefault-... . No entanto, ainda estou preso com LoaderConfigTimeout-... . Eu sei que eu posso mudar o timeout usando as teclas t T ( Shift-t ) no menu, o que modifica LoaderConfigTimeout-... , mas Eu quero removê-lo completamente, para que a configuração em /loader/loader.conf seja usada novamente.

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

    
por Alexey 04.08.2018 / 20:10

1 resposta

2

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

No Linux, primeiro use chattr -i no arquivo / sys /… para remover a proteção aplicada ao kernel, então use rm para deletar a variável completamente.

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

    
por 04.08.2018 / 23:49