Estoy intentando convertir una imagen de instalación ISO USB personalizada existente que actualmente arranca a través de BIOS a una que arranca a través de UEFI. Utilizo mkisofs
y isohybrid
para crear la ISO y arranca a través de ISOLINUX. Sé que se supone que debo usar las -eltorito-alt-boot -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.img
opciones para habilitar el arranque UEFI, pero por mi vida no puedo encontrar ninguna página en Google que me diga dónde obtener el escurridizo efiboot.img
archivo fuente. Todos lo mencionan pero todos asumen que ya lo tienes. ¿Cómo se construye u obtiene esto? La man
página para mkisofs
no sirve de nada. ¿Tengo que usar xorriso
?
Para su información, estoy intentando iniciar esto a través de libvirt/kvm/qemu/virt-manager aunque eventualmente tiene que iniciarse en hardware real. El entorno de desarrollo es openSUSE Leap 42.1. No es necesario admitir BIOS ni múltiples plataformas. Preferiría no modificar demasiado el código de compilación existente, pero al menos un comentario (@mikeserv) sugirió que una ISO es completamente el mecanismo incorrecto para esto (lo que significa que es un truco asqueroso y totalmente innecesario). Pero eso implicaría renovar completamente la construcción, lo que llevaría mucho tiempo.
Se agradecerán los enlaces a tutoriales u otras páginas bien escritas sobre este tema. Ya miré el sitio web de Syslinux y la página de Rod Smith y me cansé por completo de mirar todo lo demás.
Respuesta1
¿Tengo que usar xorriso?
No necesariamente. Necesita un productor ISO que pueda marcar la partición del sistema EFI como imagen de arranque de El Torito. mkisofs
Probablemente funcionará con las opciones que mencionaste. isohybrid --uefi
se puede aplicar posteriormente para que sea arrancable desde dispositivos similares a discos duros. (Es posible que también sea necesario tener una imagen de arranque del BIOS ISOLINUX para que isohybrid
funcione).
El principal problema es que necesita un archivo de partición del sistema EFI, que tiene que ser una imagen del sistema de archivos FAT con los programas necesarios para abrir los archivos del sistema operativo, que están en la imagen FAT o en el sistema de archivos ISO 9660 adjunto.
El software SYSLINUX EFI no se inicia desde un medio óptico. Entonces, la mayoría de los proyectos usan GRUB 2 (no el legado de GRUB) para ese propósito y lo combinan con el software ISOLINUX BIOS. Debian netinst amd64 ISOpor ejemplo, tiene una pequeña imagen FAT con suficiente cerebro GRUB para saltar a la configuración de GRUB en ISO. El que esta en elopenSUSE NET-x86_64ISOes más grande.
Para inspeccionar el equipo EFI de Debian, móntelo como ISO y luego monte su archivo /boot/grub/efi.img
como FAT. En su interior encontrará un archivo
/efi/boot/bootx64.efi
que, al ser inspeccionado por el programa, strings
revela que contiene una configuración de GRUB integrada.
search --file --set=root /.disk/info
set prefix=($root)/boot/grub
source $prefix/x86_64-efi/grub.cfg
(memdisk)/boot/grub
Entiendo que el archivo de imagen FAT fue creado por el programa GRUB
mkimage
. Se considera que el archivo /.disk/info
existe sólo en la ISO de Debian, por lo que search
se puede utilizar para encontrar el sistema de archivos ISO.
En SuSE ISO, la imagen FAT se denomina /boot/x86_64/efi
. Contiene más cosas que el de Debian. Además del archivo de arranque EFI, bootx64.efi
hay grub.cfg
otros archivos que escapan a mi conocimiento de GRUB.
Si comienza el desarrollo de ISO de arranque desde cero, considere producir su ISO mediante el programa GRUB grub-mkrescue
. (Ahí es cuando realmente lo necesitas
xorriso
, del cual soy el desarrollador).
En Debian habría que instalar los paquetes grub-pc
, grub-efi-ia32-bin
, para BIOS y grub-efi-amd64-bin
para x86_64 EFI. Prepare su carga útil en un árbol de directorios y ejecute
grub-mkrescue -o output.iso my_prepared_dir
Supongo que SuSE ofrece paquetes GRUB similares a los de Debian, que se configuran para grub-mkrescue
ejecutarse para producir equipos BIOS y/o EFI.