Após um dia de pesquisa, agora posso responder minha própria pergunta: sim, é possível, e você pode até usar essa partição como / boot e armazenar seus kernels / initramfs / etc. há.
Requisitos:
- Grub> = 2.00 (1.98 e 1.99 não funcionam)
- O Grub deve ser instalado a partir de um kernel do Linux, que tenha suporte para variáveis EFI (
CONFIG_EFI_VARScompiladas no ou como módulo efivars)
- Para criar a entrada de inicialização EFI, você precisará
efibootmgr
Configuração:
Primeiro monte sua partição EFI no / boot
mount /dev/sdX1 /boot
Se você olhar para a entrada mount, verá que ela é simplesmente uma partição FAT (32). Sob /bootvocê deve encontrar um diretório efi.
Como o grub chamará efibootmgr, você deve carregar evivars, se não estiver compilado no kernel:
modprobe efivars
Agora você pode instalar o grub:
# Replace x86_64 by i386 for 32 bit installations
grub2-install --target=x86_64-efi
O Grub instala seus arquivos como de costume /boot/grub2. Se tudo funcionou corretamente, agora você também deve ter uma pasta /boot/efi/grub2ou /boot/efi/your_distros_name. Com --bootloader-id=isert_name_herevocê também pode especificar o nome da pasta.
O Grub chama efibootmgrautomaticamente e cria uma entrada de inicialização com esse nome no menu de inicialização EFI (no meu caso, isso significa que ele aparece como um dispositivo inicializável no menu EFI, não tenho certeza se esse é o caso em todas as placas EFI)
Uma configuração adicional não difere da configuração usual do grub2, grub2-mkconfigadicionará os módulos apropriados para o EFI ao seu grub.cfg.
Windows de carregamento em cadeia:
Como eu pedi uma inicialização dupla com o Windows, incluirei a configuração do grub para carregá-la em cadeia:
O carregamento em cadeia de uma instalação do Windows no EFI é um pouco diferente de um em um disco MBR. Você não precisará dos módulos ntfsou part_mbr, em vez disso, fate part_gpté necessário.
Além disso, a configuração de raiz não é necessária, essas informações são armazenadas pelo próprio gerenciador de inicialização do Windows. Em vez disso, especifique o searchcomando. Os parâmetros necessários para isso podem ser determinados por
grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
Isso fornecerá os parâmetros para pesquisa, especificando o local da partição EFI, e deve ser algo como:
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 1ce5-7f28
Em vez de informar chainloadero número de setores a serem lidos, será necessário definir o caminho para o carregador EFI do Windows na partição EFI. É o mesmo para todas as instalações do Windows EFI. A entrada resultante deve ficar assim:
menuentry "Microsoft Windows x86_64 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root <insert ouput from grub-probe here>
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
Fontes: abrangem mais alguns casos; se você deseja inicializar a partir da EFI, vale a pena ler:
mount /dev/sdXX /boot/efi, segui -a e corribcdedit /set {bootmgr} path \EFI\fedora\shim.efido windows para inicializar o EFI.