
Eu criei um CD híbrido syslinux/isolinux iso para inicializar o BIOS legado ou o eufi, dependendo do que for necessário. A parte do BIOS legado funciona bem e tem funcionado por muitos anos. Estou usando a versão mais recente (6.0.3) do syslinux. Usei um rhel7 efiboot.img que obtive de um CD rhel7 bood para inicializar a parte eufi, apenas como teste. Consigo inicializar este CD iso em uma VM com BIOS uefi.
Isso me leva a um shell grub2, o que é um comportamento esperado, já que ainda não criei nenhum grub.cfg utilizável (apenas o padrão que veio com o arquivo de imagem). Então pelo menos consigo inicializar este CD no modo uefi.
Estou tentando carregar o syslinux.efi em cadeia por meio do shell grub2 para descobrir se consigo carregar o syslinux em cadeia (e como) e, em seguida, para ver se ele pode carregar o menu que uso para BIOS legados.
Usei várias combinações de comandos grub2, mas sempre acabo com esse erro, não importa o que eu tente. Procurar por esse erro não fornece muitas informações úteis
grub> set root='(cd0)'
grub> chainloader /syslinux/efi/syslinux.efi
grub> boot
Failed to locate root device to prep for file operations & ADV initialization
error: unknown error
grub>
Estou me perguntando se isso é um problema com o grub2 ou o arquivo syslinux.efi, ou algo completamente diferente.
Não acho que seja um problema com o efiboot.img que estou usando, pois ele vem de um CD que funciona com o uefi.
Observe que acho que o comando "chainloader" vê o arquivo como algo que o grub2 poderia usar para carregar. Se eu usar um arquivo diferente ou um arquivo inexistente, recebo os seguintes erros:
grub> chainloader /isolinux/efi/libmenu.c32
error: cannot load image.
grub> chainloader /isolinux/efi/doesnotexist
error: file 'isolinux/efi/doesnotexist' not found.
Editar 9 de agosto de 2019
Acredito que isso não seja possível com a versão atual (6.03) do syslinux. O que fiz como solução alternativa foi usar uma imagem de inicialização rhel7 e copiar o diretório EFI e usá-lo como base para criar um CD híbrido inicializável que inicializa no modo uefi, bem como no modo BIOS legado. Para criar um menu de inicialização, o arquivo EFI/BOOT/grub.cfg só precisa ser adaptado às suas necessidades. Acho que isso realmente usa gummiboot/systemd-boot. Usei o mesmo para configurar a inicialização da rede UEFI.