Como eu reinstalaria o gerenciador de inicialização grub-efi no Fedora Linux?

12

Eu instalei recentemente o Fedora 18 usando a inicialização EFI. Como as outras distribuições linux atuais, ele configura o GRUB2 para mim.

Tenho experiência em reinstalar a versão do BIOS do GRUB quando as coisas dão errado. Eu sei, por exemplo, como inicializar um disco de recuperação, executar o chroot no sistema instalado, executar grub-installe possivelmente update-grub/ grubby/ grub-mkconfig.

Como eu reinstalaria a versão EFI do GRUB quando algo desse errado? (Eu sei que as coisas vão dar errado: eu as quebro).

sourcejedi
fonte
Por que você fez uma pergunta vaga e respondeu imediatamente? Embora a resposta forneça informações úteis, a pergunta realmente precisa de esclarecimento: saber que você mudou algo não é suficiente. Entender exatamente o que foi alterado é realmente necessário para fornecer uma boa resposta à pergunta.
Rod Smith
@RodSmith obrigado por responder ao meu e-mail sobre a EFI anteriormente :). E por adicionar seu comentário aos votos negativos. A pergunta que comecei foi literalmente essa. Tenho experiência com a reinstalação do grub-pc. Quero ter o mesmo nível de confiança que sei como recuperar um sistema EFI. Editei a pergunta uma vez para enfatizar que se tratava de reinstalar o grub ... Acho que devo tentar novamente e ser mais explícito sobre o meu motivo.
sourcejedi
Por que você está usando o grub se possui UEFI? Que vantagem o encadeamento dos dois gerenciadores de inicialização oferece?
Marco
O @Marco UEFI não é o gerenciador de inicialização suportado por nenhuma distribuição Linux que eu conheço! O Fedora atualiza o GRUB automaticamente quando instala um novo kernel e instala as opções de inicialização necessárias, como root =. Não faz isso para a EFI. Eu poderia abandonar o suporte à distribuição e usar a verificação automática do REFIND com as opções de kernel no refind.conf , mas isso ainda estaria encadeando o gerenciador / gerenciador de inicialização! E a Microsoft não assina drivers GPL, portanto, o Secure Boot precisa usar SHIM-> boot loader-> Linux de qualquer maneira, e você realmente deseja um menu de inicialização após a parte UEFI-> SHIM.
sourcejedi
Depois de instalar um novo kernel, uma única chamada efibootmgré suficiente para atualizar a entrada no menu UEFI. Eu não sei sobre reEndnd ou SHIM. Pessoalmente, não encadeio vários carregadores de inicialização. Todos os sistemas operacionais são adicionados ao menu de inicialização UEFI e estão funcionando perfeitamente.
Marco

Respostas:

9

Primeiramente, você precisará de um sistema Linux inicializado por EFI . Se você ainda possui sua mídia de instalação original (CD / DVD / USB stick), isso geralmente deve incluir um sistema de resgate adequado. Pode até ter uma opção de reparo com um clique :).

Como alternativa, a comunidade Ubuntu fornece uma imagem automática de reparo de inicialização . Alega apoiar o Fedora. Se você quiser saber o que realmente faz, sugiro que você leia esta explicação de terceiros com antecedência.

No entanto, usei um sistema de resgate de uso geral com ferramentas de console. Além de dar suporte à inicialização EFI, verifiquei se efibootmgrestá na lista de pacotes . Por acaso se chamava GRML e era baseado no Debian. Aqui estão as informações sobre as ferramentas do console e o grub-efi que descobri ao resgatar meu sistema Fedora:

  1. Ao executar um sistema Fedora 18 inicializado pelo EFI, não executegrub2-install . Ele reivindicará sucesso, mas interrompe o sistema de inicialização grub-efi do Fedora.

    • O arquivo /boot/EFI/fedora/grub.efié instalado pelo pacote grub-efi. Se você não desejar reinstalá-lo, use yum reinstall grub-efi. (Para fazer isso a partir de um sistema de resgate genérico, você pode fazer isso depois mounting e chrooting em seu sistema Fedora instalado). O Fedora grub-efi usa o arquivo de configuração /boot/EFI/fedora/grub.cfg(provavelmente gerado pelo grubby). O Fedora no EFI não gerará um arquivo em /boot/grub2/grub.cfg. A execução grub2-installsubstituirá o grub.efi por uma imagem que tente ler /boot/grub2/grub.cfge, portanto, falhará.

    • grub2-installinstala uma entrada de inicialização EFI para grub.efi. No entanto, se você não desabilitou a Inicialização Segura no firmware certificado pelo Windows 8, esta entrada falhará na inicialização. Você precisa inicializar shim.efi(ignore shim-fedora.efi, não sei exatamente o que é isso). Ver abaixo.

  2. Você pode perder sua entrada de inicialização EFI para o Fedora se as configurações de firmware forem redefinidas. (Manualmente, ou por atualização de firmware, ou porque o firmware está com erros - o último foi relatado na natureza). Veja como criar manualmente uma entrada de inicialização EFI para o Fedora com inicialização segura:

    $ sudo efibootmgr -c -L Fedora -d /dev/sda -p 100 -l \\EFI\\fedora\\shim.efi
    

    Este exemplo usa a partição número 100 no primeiro disco padrão reconhecido pelo linux. Você deve ajustar as opções -d /dev/sdae -p 100identificar o sistema de arquivos no qual o Fedora monta /boot/efi. Esta é uma partição do sistema EFI. O instalador do Fedora criou um ESP dedicado para sua instalação do Fedora, separado dos ESPs usados ​​por qualquer outro sistema operacional. ( Isso é diferente do Ubuntu e do OpenSUSE ).

    Observe que o efibootmgrcomando requer que você o execute a partir de um sistema inicializado por EFI.

sourcejedi
fonte
"Observe que o comando efibootmgr exige que você o execute a partir de um sistema inicializado por EFI." - neste caso, como você "inicializa" um sistema inicializado por EFI? (meu atual USB não irá inicializar ao selecionar a opção UEFI)
jozxyqk
1
A mídia de instalação é a maneira suportada de inicializar seu sistema. Eu acho que você também deve poder inicializar um sistema EFI sem instalar variáveis ​​de firmware EFI, isso envolve a criação /EFI/boot/bootx64.efi(assumindo UEFI de 64 bits). É exatamente assim que a mídia de instalação USB funciona (nada além de CDs / DVDs). Pode ser suficiente copiar o shim.efi para lá, mas não tenho certeza se isso está configurado para funcionar ou não.
precisa saber é o seguinte
5

Se você estiver inicializando com o UEFI Windows, há outra possibilidade. que não requer um disco de recuperação.

Você pode inicializar no Windows, abrir uma linha de comando com privilégios de administrador e executar o seguinte comando:

bcdedit /set {bootmgr} path \EFI\fedora\shim.efi

Isso substituirá a entrada de inicialização do Windows no UEFI por uma que inicialize no GRUB. Supondo que o menu do GRUB inclua uma entrada funcional para Windows, agora você tem a inicialização dupla :-). Espero que tudo isso funcione sem desativar a Inicialização Segura.

Eu só tive que fazer isso depois de uma atualização do Windows e parece ter feito o truque.

Fonte e mais informações: http://nwrickert2.wordpress.com/2013/05/13/notes-on-uefi-windows-and-linux/ .

ternaryOperator
fonte
Como alternativa, consulte as duas soluções descritas em askubuntu.com/a/799734/462004 (usando o EasyUEFI ou como alterar a ordem de inicialização usando em bcdedit.exevez da entrada do Windows, como o seu comando).
Php 17/07/2017
1

https://fedoraproject.org/wiki/GRUB_2?rd=Grub2#Updating_GRUB_2_configuration_on_UEFI_systems :

dnf reinstall grub2-efi grub2-efi-modules shim

(supondo que você já tenha esses pacotes instalados e que exista uma configuração anterior)


fonte
Obrigado! "Crie uma entrada no menu de inicialização: TL; DR: Isso deve ocorrer automaticamente" - sim.
sourcejedi
Oh sim, ele faz: grub2-mkconfig -o /boot/grub2/grub.cfg(ou em um (U) EFI sistema seria algo como grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfgnão funcionou.?
Desculpe, eu quis dizer que o wiki implica que a reinstalação do pacote grub recria as variáveis ​​EFI necessárias para inicializar o GRUB (que pode precisar ser recriada, por exemplo, se você redefinir as configurações do "BIOS" por algum motivo). Acho que não tentei dnf reinstalle, se for verdade, parece ótimo.
sourcejedi
0

Apenas para simplificar, aqui é tudo o que você faz:

yum reinstall grub2-efi

NÃO execute o grub2-install, pois ele interromperá o sistema apresentando um menu de inicialização em branco do grub (isso ocorre porque o grub2-install fornecerá um arquivo .efi ruim / genérico que tenta carregar o grub.cfg a partir do local errado.

Além disso, convém atualizar o grub-config se você migrou para novos discos ou se sua partição / layout foi alterada com:

grub2-mkconfig -o /boot/EFI/fedora/grub.cfg
Areeb Soo Yasir
fonte
É bom ler algumas confirmações :). Eu propus uma edição mostrando como o grub2-mkconfig deve ser usado -o. Não sei ao certo quão útil é a resposta simples - não que a minha seja estritamente mais útil, mas isso pressupõe que você ainda é capaz de inicializar o sistema Fedora de alguma forma, ou você percebeu que cometeu um erro antes de desligar. (Minha resposta é sobre os discos de resgate genéricos, mas o AFAIK é necessário executar o chroot na instalação, certificando-se de montar os sistemas de arquivos necessários ... essa é a coisa boa de um sistema de resgate especializado como o instalador do Debian, ele executa o mount + chroot para voce).
sourcejedi