Linux no UEFI - como reiniciar a tela de configuração UEFI como o Windows 8 pode?

33

O makeuseof.com explica que o hardware certificado para Windows 8 tem uma nova maneira de entrar na tela de configuração UEFI (equivalente ao BIOS). De como acessar o BIOS em um computador com Windows 8 :

Não pressionamos mais uma determinada tecla durante o processo de inicialização para revelar o BIOS. Em vez disso, uma opção para acessar o BIOS está localizada no menu de opções de inicialização do Windows 8 ... Se você está aqui apenas para acessar o UEFI BIOS do computador, clique em o bloco Solucionar problemas.

O principal desenvolvedor do Secure Boot para Linux diz que sistemas operacionais alternativos não podem assumir que a maneira antiga continuará funcionando . Então o Linux também tem uma nova maneira de entrar na configuração UEFI?

Eu tenho uma placa-mãe ASUS. Ele sugere que uma versão atualizada do firmware contenha uma opção de inicialização rápida . O outro lado é que a opção pode tornar ainda mais difícil "revelar o BIOS" do que já é.

Eu não me importo de mexer. Apenas se isso for uma má ideia, não quero correr o risco de fazer uma atualização de firmware por nada (e talvez precise abrir o gabinete, redefinir as configurações e configurá-las novamente).


Como alternativa, como isso é tratado para usuários do Windows 7? Se eles selecionam de maneira otimista a opção de inicialização rápida, como eles acessam a configuração do "BIOS" novamente quando precisam?

sourcejedi
fonte
Droga. Agora eu desejo que eu não teria escolhido Asus sobre Gigabyte para o meu novo upgrade
Kluka
Use as configurações que funcionem no Windows 7, que serão os padrões e tudo ficará bem :). Deve haver uma maneira padrão de fazer isso no UEFI, mas não o encontrei em nenhum lugar. Até o firmware original, sem opção de inicialização rápida, é bastante rápido, então não me arrependo. Estamos analisando um recurso específico da UEFI; Eu não confiaria na Gigabyte para acertar a EFI ainda. Eu estou trabalhando em torno de questões com 1) os portos USB3 e 2) um teclado USB, o que colocou em conjunto é um pouco decepcionante, em princípio. OTOH, o LED de teste de memória foi útil quando minha nova RAM falhou após uma semana.
sourcejedi
11
Um dos problemas com a UEFI é que, apesar de um documento de especificação de 2.000 páginas, NÃO há padronização de problemas na interface do usuário. Os desenvolvedores de firmware são livres para dar aos usuários acesso aos utilitários de instalação da maneira que considerarem desejável.
Rod Smith
O artigo diz que o Windows 8 finalmente dá aos usuários acesso ao utilitário de configuração usual de maneira padrão. Portanto, a certificação do Windows deve especificar um método para suportar isso. Esperemos que faça parte da UEFI, não uma extensão MS não documentada. Observe que essa NÃO é uma pergunta sobre "Inicialização segura". A pergunta pressupõe que eu já consegui instalar e inicializar o Linux.
sourcejedi
Pessoalmente, estou executando o Windows 8 na minha placa mãe ASRock Z77 Pro3, implementando recentemente esta opção "Inicialização ultra rápida" na configuração da UEFI. A ASRock me fornece um utilitário que fica na minha barra de bandejas, que eu posso pressionar para acessar a configuração da UEFI. Uma limpeza do CMOS redefinirá a opção de inicialização rápida, para que você possa sempre tentar. Meu vBIOS não permite essa configuração, porque não possui suporte a GOP, portanto não tive a chance de testá-la. Eu não é fornecido com o software similar para Linux, somente o Windows 8.
Steen Schütt

Respostas:

39

Nas distribuições modernas do Linux usando systemd, você pode ir diretamente para o menu de configuração do firmware usando:

systemctl reboot --firmware-setup

Documentação: https://www.freedesktop.org/software/systemd/man/systemctl.html#--firmware-setup

Lekensteyn
fonte
11
Hah, esse documento é um pouco conciso. Parece bom - não é específico para um determinado gerenciador de inicialização. Pena que não há uma ferramenta independente, mas não tenho nada contra o systemd. github.com/systemd/systemd/blob/…
sourcejedi
11
Veja também esta resposta Unix.SE. Tenha muito cuidado com o uso efivar, de alguma maneira eu consegui remover a 8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndicationsvariável, possivelmente passando dados vazios para o efivarprograma. Agora eu tenho que encontrar uma maneira de recriar esse arquivo, sem ele o systemctl reboot --firmware-setupprograma não funciona mais.
Lekensteyn
Desculpe ouvir seus problemas. Tive a impressão de que a variável como 0 seria boa (neste comentário, github.com/systemd/systemd/blob/… ), embora o mesmo código sugira que o systemd não se importaria se a variável fosse excluída.
sourcejedi
11
Isso parece recriar a variável, mas de alguma forma ela é perdida após uma reinicialização: printf '\7\0\0\0''\0\0\0\0\0\0\0\0' > /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c(com base no firmware.intel.com/blog/accessing-uefi-variables-linux e no conteúdo anterior que eu joguei). Observe as rm ...necessidades chattr -i ...antes que você possa removê-lo (medida de segurança sobre rm -rf /).
Lekensteyn
11
@sourcejedi O Arch Linux vem com o systemd 230. Finalmente consegui recuperar minha variável. Por algum motivo, a criação da variável via efivars resultou em OsIndications-89efde67-ffcd-12de-ab01-01efff012389uma GUID diferente. Depois de inicializar no UEFI Shell , setvar OsIndications -nv -bs -rt =0000000000000000chamei o comando para definir a variável OsIndications no armazenamento não volátil para o serviço de inicialização e acesso em tempo de execução à sequência hexadecimal que representa um número de 64 bits (0).
Lekensteyn
4

Não tenho certeza de como exatamente o Windows 8 faz isso, mas posso supor que ele aproveite as variáveis ​​UEFI usadas nas opções de inicialização.

Você pode usar o efibootmgr para determinar os significados das várias variáveis ​​de inicialização. No meu sistema, Boot0000 é Instalação, portanto, o uso efibootmgr -n 0deve fazer com que o sistema inicialize na instalação na próxima inicialização.

Tim Hoppen
fonte
Obrigado. Agora eu tentei a inicialização UEFI no meu BIOS atual. Boot0000 parece estar ocupado por uma das entradas normais de inicialização. (Também percebi que li mal as notas de lançamento e não há razão para esperar que a versão mais recente seja mais rápida. Ah, bem :).
precisa saber é o seguinte
@sourcejedi O firmware sua opção de inicialização rápida pode realmente inicialização mais rápida 1 ou 2 segundos, inicialização ultra-rápido de novo pode fazer a barba de mais 1 a 2 segundos: unix.stackexchange.com/questions/149761/...
Pro backup
3

Eu tentei inicializar o EFI com o Ubuntu 12.04 e encontrei uma resposta para minha própria pergunta.

(Eu não atualizei meu firmware. Eu li mal as notas de versão originalmente - provavelmente não seria mais rápido).

Entrando na configuração do firmware no menu de inicialização grub-efi

efibootmgrparece não suportar a reinicialização da configuração do firmware para mim. Mas o grub-efi faz. É capaz de criar uma entrada para a configuração do firmware no menu de inicialização do GRUB.

Você pode entrar no menu de inicialização do GRUB mantendo pressionada a tecla Shift "no início do processo de inicialização". Pressiono-o imediatamente após a luz do NumLock acender no teclado, e isso funciona para mim.

Se você está curioso, olhei para o comando também: é "fwsetup". Ou seja, você pode entrar no menu GRUB, siga as instruções na tela para alternar para a linha de comando, digite "fwsetup" e pressione Enter.

Se você instalar o EFI do zero, acredito que o item de menu será criado automaticamente. Não instalei como EFI, o que significava que tinha que chutá-lo (veja abaixo, etapa 4).

Convertendo de inicialização do BIOS-GPT para UEFI-GPT sem gravar um CD de inicialização EFI?

EDIT: esta seção pode funcionar em alguns sistemas. No entanto, agora acredito que se baseia em comportamentos extras que não fazem parte do padrão UEFI. Algum dia eu vou descobrir o que está acontecendo aqui.

Eu estava convertendo uma instalação existente para EFI, sem um CD de inicialização habilitado para EFI. Algumas pessoas pensam que isso não é possível. É certo que existem algumas mensagens de aviso confusas. Eu dei uma olhada no que estava acontecendo. Se atualmente você pode entrar na configuração do firmware, não é tão ruim assim.

O mais difícil é que você provavelmente ainda esteja usando uma tabela de partição MBR e quase certamente precisará convertê-la para GPT. Não abordarei a conversão de MBR para GPT. Particionar é sempre um pouco perigoso. gdiskpode converter, mas existem alguns bits complicados. Eu não listei todos eles aqui. Mas, por um lado, você provavelmente precisará reduzir a última partição, para liberar espaço para a GPT de fim de disco. Você não pode fazer isso se a partição estiver montada; portanto, você deseja usar um CD de inicialização. (Também realizei a conversão, certificando-me de que eu poderia inicializar a partir do BIOS-GPT antes de experimentar o UEFI-GPT, o que envolvia a necessidade de criar outro tipo de partição de inicialização.).

Supondo que você tenha configurado o GPT:

  1. Instale o grub-efi. Isso removeu o grub-pc e o impediu de funcionar. (o grub-efi ainda funcionava depois que eu o removi!). O Fedora parece um pouco diferente; Eu só tentei isso no Ubuntu. Durante a instalação, você verá erros ao não conseguir acessar as variáveis ​​EFI, porque você não inicializou pelo EFI.
  2. Desligar.
  3. Ligar. Certifique-se de inicializar através do EFI! Essa é a parte preocupante e dependente do sistema. Meu sistema passou a usar como padrão a inicialização do MBR, então vi um erro assustador do GRUB - mas era do antigo grub-pc. No meu sistema, foi fácil entrar na tela de configuração do firmware neste ponto (veja abaixo) e alterar a prioridade de inicialização para "ubuntu" (que era a entrada para inicializar meu sistema operacional via EFI).
  4. Agora você pode refazer a instalação do grub ( grub-install, ou grub2-installno Fedora), e ela não mostrará erros. E agora , rodar update-grub(ou grub2-mkconfig -o /boot/grub/grub.cfg, no Fedora) criará o item de menu para entrar na configuração do firmware.

Entrar no menu de configuração / inicialização do firmware no meu sistema ASUS

AVISO LEGAL: este não é o firmware / placa mais recente. Seu sistema ASUS pode agir de maneira diferente da minha.

Meu firmware atual da ASUS percebe quando a "configuração de inicialização" mudou - por exemplo, quando eu instalei o grub-efi. Há um texto dizendo que ele foi alterado se você olhar para a tela inicial "Configuração de EZ". E, quando detecta essa alteração, facilita a entrada na tela de configuração. O que ele faz é mostrar a tela inicial com "pressione DEL para entrar na configuração" por alguns segundos. (Se você ativou a opção "inicialização rápida", normalmente ela ignora a tela inicial).

Acho que também é possível acionar a tela inicial desligando o sistema e desconectando-o por um minuto ou mais, antes de reiniciar.

No meu firmware atual, posso entrar na configuração do firmware pressionando a tecla DEL durante a inicialização, mesmo sem a tela inicial. No entanto , isso depende da ativação do suporte do teclado no firmware.

É possível mudar o firmware para não procurar teclados durante a inicialização, o que deve acelerar as coisas. Acho que esse é o próximo experimento a ser testado, agora estou mais confiante com esse material da EFI! (É plausível que também possa matar o suporte de teclado no menu de inicialização do GRUB. Mas ainda devo usar o grub-set-default, para que o GRUB inicialize a entrada fwsetup e se recupere dessa maneira).

sourcejedi
fonte
0

Com base na resposta de @ Lekensteyn, criei um atalho de interface do usuário (no menu Administração, se o seu ambiente ainda tiver um deles). Útil se o seu teclado nunca funcionar até o POST.

/usr/share/applications/uefi-reboot.desktop

[Desktop Entry]
Name=UEFI Firmware Setup (Reboot)
Comment=Access the motherboard configuration utility
Exec=systemctl reboot --firmware-setup
Icon=system-restart
Terminal=false
Type=Application
Categories=System;Settings;
Crocante
fonte