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

1

Eu estou tentando converter uma imagem personalizada do instalador ISO personalizado que atualmente inicializa via BIOS para uma que seja inicializada via UEFI. Eu uso mkisofs e isohybrid para fazer o ISO, e ele é inicializado via ISOLINUX. Eu sei que devo usar as opções -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.img para habilitar a inicialização do UEFI, mas, para o resto de minha vida, não consigo encontrar nenhuma página no Google que me indique onde obter o evasivo arquivo de origem efiboot.img . Todo mundo menciona isso, mas todo mundo acha que você já o tem. Como isso é construído ou obtido? A página man para mkisofs não ajuda. Eu tenho que usar xorriso ?

FYI Eu estou tentando inicializar isso via libvirt / kvm / qemu / virt-manager, embora eventualmente tenha que inicializar em hardware real. O ambiente de desenvolvimento é o openSUSE Leap 42.1. Não há necessidade de suportar BIOS ou várias plataformas. Eu prefiro não mexer com muito código de compilação existente, mas pelo menos um comentário (@ mikeserv) sugeriu que um ISO é completamente o mecanismo errado para isso (o que significa que é um truque bruto e totalmente desnecessário). Mas isso envolveria reformular completamente a compilação, o que seria muito tempo.

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

    
por eewanco 27.09.2016 / 22:13

1 resposta

2

Do I have to use xorriso?

Não necessariamente. Você precisa de um produtor ISO que possa marcar o Partição do Sistema EFI como imagem de inicialização do El Torito. mkisofs provavelmente fazer com as opções que você mencionou. isohybrid --uefi pode ser aplicado depois para torná-lo inicializável a partir de dispositivos do tipo disco rígido. (Isso pode também é necessário ter uma imagem de inicialização do BIOS ISOLINUX, para que isohybrid funciona.)

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

O software SYSLINUX EFI não inicializa a partir de mídia ótica. Tão mais dos projetos usam o GRUB 2 (não o legado do GRUB) para essa finalidade e combine-o com o software ISOLINUX BIOS. Debian netinst amd64 ISO por exemplo, tem uma pequena imagem FAT com apenas bastante cérebro GRUB para pular para a configuração do GRUB na ISO. Aquele na ISO openSUSE NET-x86_64 é maior.

Para inspecionar o equipamento EFI do Debian, monte-o como ISO e monte arquivo /boot/grub/efi.img como FAT. Dentro de você encontra um arquivo /efi/boot/bootx64.efi que foi inspecionado pelo programa strings reveils que contém uma configuração do GRUB incorporada

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

Eu entendo que o arquivo de imagem FAT foi criado pelo programa GRUB %código%. O arquivo mkimage é considerado existente apenas no Debian ISO, para que /.disk/info possa usá-lo para encontrar o sistema de arquivos ISO.

No ISO SuSE, a imagem FAT é denominada search . Contém mais coisas que o Debian. Além do arquivo de inicialização EFI /boot/x86_64/efi existe um bootx64.efi e outros arquivos além do meu conhecimento do GRUB.

Se você iniciar o desenvolvimento de ISO a partir do zero, considere produzir sua ISO pelo programa GRUB grub.cfg . (Isso é quando você realmente precisa grub-mkrescue , dos quais eu sou o desenvolvedor.)

No Debian, seria necessário instalar pacotes xorriso , grub-pc , para BIOS e grub-efi-ia32-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

Eu suponho que o SuSE ofereça pacotes similares ao GRUB como o Debian, que configura para a execução de grub-efi-amd64-bin para produzir equipamentos BIOS e / ou EFI.

    
por 28.09.2016 / 09:58