Descobri como instalar manualmente o .efi
em cada um dos meus /
. A referência ao carregador de correntes do GRUB secundário a partir da configuração primária é simples:
menuentry "GRUB chainloader" {
#Load grub on partition 7 of a gpt formatted drive.
#It will reference its own modules and config.
chainloader (hd0,gpt7)/path/to/bootloader/on/myOS/core.efi
}
Para criar este secundário .efi
usei grub-mkimage
porque grub-install
não me deixou gravar em um sistema de arquivos não-FAT. A sintaxe é muito exigente e não dá erros se você usar um caminho errado, então verifique os argumentos cuidadosamente:
grub-mkimage -o /path/to/mounted/targetOS/efidir/core.efi --format=x86_64-efi '--prefix=(hd0,gpt7)/boot/grub' ext2 part_gpt
Eu tentei deixar de fora os módulos do sistema de arquivos GPT ou ext2, mas isso não funcionou, esses dois módulos eram o requisito mínimo para o meu sistema (o ext2 funciona para ext2 / 3/4).
O diretório de prefixo é onde o gerenciador de inicialização secundário procurará por sua pasta de módulos e arquivo de configuração. Então eu criei manualmente um /boot/grub/
para cada sistema operacional que inclui uma pasta x86_64-efi/
(copiada de /usr/lib/grub)
e grub.cfg
que eu posso modificar usando grub-mkconfig
com a análise do OS desativada (ou apenas editá-la manualmente).
Eu originalmente instalei cada sistema operacional sem o GRUB. Esse método me permitiu instalar carregadores de inicialização GRUB secundários em todos os sistemas operacionais usando um primeiro SO ou LiveCD com o GRUB. Eu posso alterar a configuração de inicialização de cada sistema operacional de forma independente, sem riscos de contaminação, porque o ESP nunca é montado.