[syslinux] syslinux mkisofs hard-disk-boot isohybrid

Thomas Schmitt
Wed, 21 Dec 2016 20:55:44 -0000

Hi,

Pascal wrote:
> mkisofs -o core.iso -b boot/core.img -c boot/boot.cat -hard-disk-boot core/
> my iso image is ok with qemu on bios and uefi,

Astounding. As CD-ROM this is not supposed to work with UEFI unless the
firmware emulates BIOS. What particular UEFI firmware did you use ?

>  and with qemu as hard disk on uefi but not on bios.

That's even more astounding. The UEFI would have to look into the ISO 9660
filesystem or interpret the El Torito boot info prepared for BIOS.


> isohybrid: core.iso: unexpected boot catalogue parameters

That's because ISOLINUX boot images are binary programs which get registered
in the El Torito catalog as "no emulation" images. Your core.img is
registered
(by option -hard-disk-boot) as "hard disk emulation" image.

http://git.zytor.com/syslinux/syslinux.git/tree/utils/isohybrid.c
bails out in line 526, because variable de_media is 4 and not 0.

For BIOS booting from CD-ROM you need to use "isolinux.bin" as boot
image
which you give to mkisofs via option -b. Instead of

  -hard-disk-boot

you have to use

   -no-emul-boot -boot-load-size 4 -boot-info-table

See http://www.syslinux.org/wiki/index.php?title=ISOLINUX

For UEFI from CDROM you need a FAT filesystem image with EFI boot files
like  /efi/boot/bootx64.efi  in it. Note that the EFI boot software of
SYSLINUX does not boot from CD-ROM, even if properly wrapped and announced
in El Torito. ISOs which work from CD-ROM mostly use GRUB-equipped FAT
images for UEFI.

The UEFI boot image has to be announced in El Torito by the ISO producer
program. See options

  -e isolinux/efiboot.img -no-emul-boot

or

  -eltorito-platform 0xEF -eltorito-boot isolinux/efiboot.img -no-emul-boot

in
  http://www.syslinux.org/wiki/index.php?title=Isohybrid#UEFI
("isolinux/efiboot.img" is the FAT image with content from other boot
loader
projects or an EFI-ready operating system kernel.)

Such an ISO is then ready for being processed by isohybrid, so that
it afterwards has MBR BIOS x86 boot code and partition tables pointing
to the FAT filesystem for UEFI.


Have a nice day :)

Thomas