Estou tentando converter uma imagem de instalador ISO USB personalizada existente que atualmente inicializa via BIOS para uma que inicializa via UEFI. Eu uso mkisofs
e isohybrid
para fazer o ISO, e ele inicializa via ISOLINUX. Eu sei que devo usar as -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.img
opçõ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.img
arquivo de origem indescritível. Todo mundo menciona isso, mas todos presumem que você já o possui. Como isso é construído ou obtido? A man
página mkisofs
nã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. mkisofs
provavelmente fará com as opções que você mencionou. isohybrid --uefi
pode 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.img
como FAT. Dentro você encontra um arquivo
/efi/boot/bootx64.efi
que inspecionado pelo programa strings
revela 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 search
podemos 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.cfg
e 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-bin
para 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-mkrescue
execução para produzir equipamentos BIOS e/ou EFI.