UEFI e GRUB2
Alguém conhece o site para obter os binários
(bootia32.efi e bootx64.efi) para inicializar o grub2...
também os binários GRUB2... e um bom tutorial ajuda sobre isso...
Eu quero fazer um disco de inicialização múltipla mais ou menos assim ...
EFI
\BOOT
\bootia32.efi
\bootx64.efi
\<grub-binaries>
\<grub-background-image>
\<grub-configuration-file>
\AndroidX86v6
\Microsoft
\Ubuntu
\Tails
\Kali
...
Responder1
Os nomes bootx64.efi
e bootia32.efi
referem-se ao programa carregador de inicialização substituto EFI. Este programa pode serqualquer coisa-- GRUB, o carregador de inicialização do Windows, um shell EFI, malware, etc. Portanto, você não deve procurar um programa com esse nome; em vez disso, você deve procurar um programa pelo nome real (GRUB na sua pergunta) e renomeá-lo para EFI\BOOT\bootx64.efi
ou EFI\BOOT\bootia32.efi
(dependendo da plataforma) na sua mídia de inicialização. Na verdade, se você estiver instalando no disco rígido interno de um computador, provavelmente não deveria usar esse nome - em vez disso, você deveria confiar no gerenciador de inicialização integrado do próprio EFI para lembrar o nome do binário que deseja lançar. (Uma exceção seria se o seu firmware estivesse muito danificado, como alguns ainda estão.) Os boot{arch}.efi
nomes dos arquivos foram originalmente planejados exclusivamente para uso em discos removíveis inicializáveis, como para instaladores de sistema operacional e ferramentas de recuperação de emergência; mas eles também são usados para carregadores de boot de último recurso em discos rígidos internos - digamos, para quando as entradas NVRAM foram danificadas.
Quanto à parte principal da sua pergunta, os binários do GRUB tendem a ser construídos por e para distribuições individuais; AFAIK, não existe uma fonte oficial para "o" binário GRUB para EFI. A maneira usual de obteraO binário GRUB é instalar uma distribuição Linux que o utiliza. Normalmente será instalado como /boot/efi/EFI/{distname}/grubx64.efi
, onde {distname}
é um código utilizado pela distribuição, como ubuntu
para Ubuntu ou fedora
para Fedora. Observe, entretanto, que simplesmente mover e renomear esse binário pode não funcionar, pois ele pode ter caminhos codificados para seu arquivo de configuração. Se o computador de destino também usar inicialização segura, você precisará renomear o arquivo shimx64.efi
ou shim.efi
como o nome do arquivo substituto e copiar grubx64.efi
, usando esse nome, para o mesmo diretório do Shim. Se estiver instalando em um computador, você não precisará se preocupar em mover ou renomear o GRUB; basta instalar normalmente e ele deverá assumir o processo de inicialização - pelo menos até você instalar a próxima distribuição ou algo reconfigurar a ordem de inicialização.
Para um sistema com múltiplas distribuições Linux, o GRUB pode ser um pouco complicado. Isso ocorre porque o GRUB depende de um arquivo de configuração complexo para criar seu menu de opções de inicialização, e esse arquivo de configuração é mantido na distribuição que instalou o GRUB. Isso funciona bem quando você instala apenas uma distribuição Linux, mas com diversas distribuições, você deve atualizar o GRUB na distribuição de onde ele veio para apresentar novos kernels instalados a partir do seuoutrodistribuições. A alternativa é carregar um GRUB de outro, o que pode funcionar melhor, mas é mais complicado no momento da inicialização.
Outra abordagem é usar um gerenciador de inicialização que envolva configuração menos complexa. Meu própriorEFIndposso fazer isso; ele detecta kernels Linux em cada inicialização, portanto, uma vez configurado, ele pode inicializar o kernel mais recente sem alterar sua própria configuração. Outros carregadores de boot, como SYSLINUX e ELILO, exigem configuração no estilo GRUB em um arquivo de configuração centralizado, mas esse arquivo é mais simples e, portanto, mais fácil de manter manualmente. Se você usar alguma dessas ferramentas em um disco removível, precisará copiá-la para o boot{arch}.efi
nome do arquivo.
Existem inúmeras outras advertências e peculiaridades em tudo isso, mas sem saber mais sobre o uso pretendido e o hardware, não posso abordar todas elas aqui sem escrever um pequeno livro. Você pode querer verificar um ou mais dos seguintes sites para obter mais informações:
- Entrada do blog de Adam Williamson sobre como a EFI funciona-- Esta página descreve a teoria por trás da inicialização no modo EFI.
- Uma pergunta e respostas sobre as diferenças entre inicialização BIOS e EFI em Superuser.com-- Isso fornece o básico do anterior, mas é mais conciso.
- Minha página sobre instalação de Linux em sistemas EFI-- Esta página é uma introdução mais prática à inicialização no modo EFI do que o blog de Adam Williamson.
- Minha página sobre carregadores de inicialização EFI para Linux-- Esta página descreve as opções do carregador de inicialização EFI para sistemas Linux.
Responder2
Se você está apenas tentando usar o grub para inicialização UEFI PXE ou inicialização UEFI HTTP, você obtém os binários pré-construídos aqui sem qualquer instalação: https://images.maas.io/ephemeral-v3/stable/bootloaders/uefi/amd64/20230222.0/
shim-signed.tar.xz
grub2-signed.tar.xz
Descompacte-os, você obterá
bootx64.efi
grubx64.efi
Em seguida, você prepara um servidor TFTP e um servidor HTTP para atendê-los e prepara grub/grub.cfg via TFTP/HTTP.
Tenho usado o método acima com sucesso.
Há também outro local conveniente que permite obtê-los sem qualquer instalação. http://archive.ubuntu.com/ubuntu/dists/jammy/main/uefi/grub2-amd64/current/
(você pode alterar o jammy para focal ou biônico)
...
grubnetx64.efi
grubnetx64.efi.signed
grubx64.efi
grubx64.efi.signed
Eu não tentei, acho que grubnetx64.efi.signed
significa a versão líquida do grubx64.efi.signed
. Mas não estou claro sobre a diferença entre *.efi.signed e *.efi.
E o bootx64.efi pode ser encontrado aqui http://archive.ubuntu.com/ubuntu/dists/jammy/main/signed/shim-amd64/current/, basta renomear o arquivo descompactado para bootx64.efi.