Criando uma imagem inicializável UEFI com mkisofs e -eltorito-boot efiboot.img

Criando uma imagem inicializável UEFI com mkisofs e -eltorito-boot efiboot.img

Estou tentando converter uma imagem de instalador ISO USB personalizada existente que atualmente inicializa via BIOS para uma que inicializa via UEFI. Eu uso mkisofse isohybridpara fazer o ISO, e ele inicializa via ISOLINUX. Eu sei que devo usar as -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.imgopções para ativar a inicialização UEFI, mas durante toda a minha vida não consigo encontrar nenhuma página no Google que me diga onde obter o efiboot.imgarquivo de origem indescritível. Todo mundo menciona isso, mas todos presumem que você já o possui. Como isso é construído ou obtido? A manpágina mkisofsnão ajuda em nada. Eu tenho que usar xorriso?

Para sua informação, estou tentando inicializar isso via libvirt/kvm/qemu/virt-manager, embora eventualmente ele precise inicializar em hardware real. O ambiente de desenvolvimento é openSUSE Leap 42.1. Não há necessidade de oferecer suporte a BIOS ou múltiplas plataformas. Prefiro não mexer em muito código de construção existente, mas pelo menos um comentário (@mikeserv) sugeriu que uma ISO é completamente o mecanismo errado para isso (o que significa que é um hack grosseiro e totalmente desnecessário). Mas isso envolveria uma renovação completa da construção, o que levaria muito tempo.

Links para tutoriais ou outras páginas bem escritas sobre este tópico serão recebidos com gratidão. Já olhei o site do Syslinux e a página do Rod Smith e me cansei totalmente olhando todo o resto.

Responder1

Tenho que usar xorriso?

Não necessariamente. Você precisa de um produtor ISO que possa marcar a partição do sistema EFI como imagem de inicialização El Torito. mkisofsprovavelmente fará com as opções que você mencionou. isohybrid --uefipode ser aplicado posteriormente para torná-lo inicializável a partir de dispositivos semelhantes a discos rígidos. (Pode ser necessário ter uma imagem de inicialização do BIOS ISOLINUX também, para que isohybrid funcione.)

O principal problema é que você precisa de um arquivo de partição do sistema EFI, que deve ser uma imagem do sistema de arquivos FAT com os programas necessários para abrir os arquivos do sistema operacional, que estão na imagem FAT ou no sistema de arquivos ISO 9660 anexo.

O software SYSLINUX EFI não inicializa a partir de mídia óptica. Portanto, a maioria dos projetos usa o GRUB 2 (não o legado do GRUB) para essa finalidade e combina-o com o software ISOLINUX BIOS. Debian netinst amd64 ISOpor exemplo, tem uma pequena imagem FAT com cérebro GRUB suficiente para acessar a configuração do GRUB no ISO. Aquele noopenSUSE NET-x86_64 ISOé maior.

Para inspecionar o equipamento EFI do Debian, monte-o como ISO e depois monte seu arquivo /boot/grub/efi.imgcomo FAT. Dentro você encontra um arquivo /efi/boot/bootx64.efique inspecionado pelo programa stringsrevela que contém uma configuração GRUB incorporada

search --file --set=root /.disk/info
set prefix=($root)/boot/grub
source $prefix/x86_64-efi/grub.cfg
(memdisk)/boot/grub

Entendo que o arquivo de imagem FAT foi criado pelo programa GRUB mkimage. O arquivo /.disk/infoé considerado existente apenas na ISO do Debian, então searchpodemos usá-lo para encontrar o sistema de arquivos ISO.

No SuSE ISO, a imagem FAT é denominada /boot/x86_64/efi. Ele contém mais coisas que o Debian. Além do arquivo de inicialização EFI, bootx64.efi há um grub.cfge outros arquivos além do meu conhecimento do GRUB.

Se você iniciar o desenvolvimento ISO inicializável do zero, considere produzir seu programa ISO pelo GRUB grub-mkrescue. (É quando você realmente precisa xorriso, do qual sou o desenvolvedor.)

No Debian seria necessário instalar pacotes grub-pc, grub-efi-ia32-bin, para BIOS e grub-efi-amd64-binpara x86_64 EFI. Prepare sua carga útil em uma árvore de diretórios e execute

grub-mkrescue -o output.iso my_prepared_dir

Presumo que o SuSE ofereça pacotes GRUB semelhantes ao Debian, que são configurados para grub-mkrescueexecução para produzir equipamentos BIOS e/ou EFI.

informação relacionada