Recentemente, depois de fazer algo no meu sistema de inicialização múltipla, quando inicializo o NixOS com systemd-boot
, o menu de inicialização não aparece mais, embora o tempo limite ainda esteja definido como 2 segundos /loader/loader.conf
(no ESP):
# /loader/loader.conf on the ESP
timeout 2
default nixos-generation-380
Aqui está o que eu tenho no meu /etc/nixos/configuration.nix
:
{ # ...
boot.loader = {
efi.canTouchEfiVariables = true;
systemd-boot.enable = true;
timeout = 2;
};
}
Acontece que para ver o menu de inicialização, tive que pressionar alguma tecla durante a inicialização, como se o tempo limite tivesse sido definido como 0 (em vez de 2) segundos.
Tentei remover systemd-bootx64.efi
do ESP e reinstalar o NixOS com nixos-install
uma unidade flash USB. Isso restaurou systemd-bootx64.efi
, mas não trouxe de volta o menu de inicialização.
Parece que esse problema não é completamente incomum:
Fóruns do Arch Linux: systemd-boot, sem tempo limite, sem menu de seleção - LoaderEntryDefault
Ambos os problemas são relatados para serem resolvidos. No entanto, não entendi a primeira solução:
Edit 3: RESOLVIDO! Reinstalar o UEFI fez o truque.
O que significa "reinstalar o UEFI"?
Quanto ao segundo, sugere usar as teclas te Shift+ tno menu de inicialização (que aparece se alguma tecla for pressionada durante a inicialização) para definir um tempo limite diferente, mas não quero apenas um tempo limite diferente, quero systemd-boot
para respeitar as configurações em /loader/loader.conf
.
Então, minha pergunta era: como systemd-boot
usar novamente as configurações de /loader/loader.conf
?
Estou editando esta pergunta depois de encontrar a solução e vou postar minha resposta agora.
Depois de ler o comentário nº 6 sobre "systemd-boot, no timeout, no select menu - LoaderEntryDefault" e olhar para "systemd-boot define efivar LoaderEntryDefault, que substitui o padrão em /boot/loader/loader.conf"
nixpkgs
no GitHub, eu Descobrimos que o problema provavelmente foi causado por variáveis EFI que de alguma forma foram definidas e estavam substituindo as configurações de/loader/loader.conf
.De fato, havia esses dois conjuntos de variáveis que estavam causando problemas:
e
(Eu inventei o valor '
374
' aqui: importa apenas que era diferente do que estava/loader/loader.conf
no momento em que o inspecionei.)A lista de variáveis EFI usadas por
systemd-boot
pode ser encontrada no final da página "systemd-boot UEFI Boot Manager" no Freedesktop Wiki :Para remover a
LoaderEntryDefault-[...]
variável bastava pressionar a dtecla duas vezes no menu de inicialização: para definir e desmarcar um novo valor.Para remover a
LoaderConfigTimeout-[...]
variável, basta pressionar Shift+ tvezes suficientes para definir o tempo limite para0
, mais uma vez.Isso resolveu meu problema. Aqui está uma pergunta relacionada que fiz no Superuser.SE sobre como modificar com segurança as variáveis EFI em geral.