Não posso fornecer uma resposta completa à sua pergunta porque alguns aspectos da configuração e instalação do GRUB estão além do meu nível de habilidade e por causa de alguma ambiguidade sobre o que você quer fazer (como especificado por sudodus em seu comentário à sua pergunta) . Dito isso, posso fazer várias observações e sugestões que podem ser úteis:
- Quando você instala o GRUB em um sistema EFI normal do Ubuntu, o GRUB se torna
EFI/ubuntu/grubx64.efi
na partição do sistema EFI (ESP) , com uma entrada NVRAM apontando para esse local.
As unidades USB inicializáveis da EFI, por outro lado, normalmente inicializam a partir de um carregador de inicialização chamado - Complicando o anterior, se o computador usar o Secure Boot, o Ubuntu instala um programa chamado Shim (
shimx64.efi
) e cria uma entrada NVRAM apontando para ele, em vez degrubx64.efi
. Da mesma forma, para inicializar uma mídia externa, o originalshimx64.efi
deve ser denominadoEFI/BOOT/bootx64.efi
. Em qualquer um dos casos, o Shim lançagrubx64.efi
no mesmo diretório que o Shim. - Quando não usa o Secure Boot, o GRUB do Ubuntu procura um arquivo
grub.cfg
no diretório/boot/grub
, que provavelmente não será o ESP. Ao inicializar com o Secure Boot ativo, porém,grubx64.efi
procura porgrub.cfg
no mesmo diretório quegrubx64.efi
. Essegrub.cfg
, porém, procura e carrega/boot/grub/grub.cfg
, então o efeito é o mesmo, mas o caminho é mais complexo. Em ambos os casos, há uma dependência tanto do ESP quanto da partição que contém/boot/grub
. Algumas distribuições definem as coisas de maneira diferente; O Fedora, por exemplo, coloca ogrub.cfg
final e todos os arquivos relacionados no ESP. - O arquivo
/boot/grub/grub.cfg
é construído (ou reconstruído) por scripts de configuração que são executados sempre que você instala um novo kernel ou binário do GRUB. Isso funciona bem para um sistema de inicialização única, mas se você estiver fazendo várias inicializações com outra distribuição do Linux, as coisas ficarão confusas rapidamente. Em particular, se o GRUB da Distribuição A controlar o processo de inicialização e você atualizar o kernel para Distribuição B, o GRUB não mostrará o novo kernel da Distribuição B até você executarupdate-grub
(ou algo similar) na Distribuição A.
EFI/BOOT/bootx64.efi
no ESP da unidade USB. Esse nome de arquivo é normalmente chamado de nome de arquivo de fallback, e as EFIs devem procurar esse nome como último recurso se nenhuma entrada NVRAM apontar para um carregador de inicialização válido ou se o usuário selecionar a mídia de inicialização de um menu gerenciador de inicialização embutido. Assim, para instalar neste local, você deve ajustar o comando grub-install
(e não tenho nem 100% de certeza de que ele suporta isso) ou copiar os arquivos manualmente.
Entre esses fatores, para fazer o que você quer com o GRUB, é provável que você tenha que instalar o nome do arquivo de fallback em vez do arquivo padrão; você pode ou não precisar apertar Shim na foto; e você pode precisar ajustar seu grub.cfg
para sua configuração de duas distribuições. Isso é muito a fazer. Se eu precisasse fazer tudo isso com o GRUB, minha abordagem seria instalar as duas distribuições na unidade USB como se fosse um disco rígido interno e depois mover / renomear o GRUB (ou Shim) para o nome do arquivo de fallback. Isso terá a vantagem de que você não precisa mexer com o arquivo grub.cfg
. Uma grande ressalva é que, se você quiser usar algo que se instala de maneira incomum (como via UNetbootin ou Rufus em vez do instalador Ubiquity do Ubuntu), isso pode mudar a equação de uma maneira que requer uma abordagem completamente diferente. Parece que você está tentando usar o Ubuntu no disco rígido para instalar o GRUB na unidade USB a ser usada na inicialização da unidade USB. Essa abordagem pode funcionar se você for muito mais um especialista em GRUB do que eu, mas há variáveis obscuras o suficiente em jogo que sua abordagem provavelmente será um campo minado de complicações.
Outro método é usar meu gerenciador de inicialização do rEFInd. Você precisaria instalá-lo no nome do arquivo de fallback, mas rEFInd procura por kernels no momento da inicialização, portanto, é menos provável que ele seja interrompido instalando um novo kernel em uma distribuição quando você usou a outra distribuição para instalar o GRUB ou o rEFInd. OTOH, se você quiser usar o Secure Boot, você precisará dar saltos extras (documentados na página de inicialização segura do rEFInd ) para que funcione, provavelmente em todos os computadores que você usa para inicializar a unidade USB. Você também pode precisar criar /boot/refind_linux.conf
files para ambas suas distribuições para lidar com opções de kernel específicas da distribuição. (Consulte a documentação do rEFInd Linux, e especialmente a metade inferior da página, para obter informações sobre isso.)