Hi, John Paul Adrian Glaubitz wrote: > I have read the genisoimage manpage and I have to admit, I haven't fully > understood > yet how it is supposed to work. It seems we have to specify the bootloader > code > with -G, thus -G cdboot.img. But -B is apparently used to pass a whole > directory > name which means I don't understand how genisoimage knows which is the second > stage bootloader.
Dumping here what i learned when Vladimir Serbinko told me how to do it with xorriso underneath grub-mkrescue: libisofs/doc/boot_sectors.txt has: ========================================================================= GRUB2 SUN SPARC Core File Address Sources: Mail conversations with Vladimir Serbinenko. GRUB2 lets libisofs write after the disk label block the address and size of a data file in the ISO image. E.g. of /boot/grub/sparc64-ieee1275/core.img. This is combined with a SUN Disk Label which exposes only the single partition describing the overall ISO filesystem size. Byte Range | Value | Meaning ------------ | ---------- | -------------------------------------------------- 512 - 551 | opaque | Code and data provided by GRUB2 | | 552 - 559 | offset | Start byte number of the file. 64-bit big-endian. | | 560 - 563 | size | Number of bytes in the file. 32-bit big-endian. | | 564 - 32767 | opaque | Code and data provided by GRUB2 | | ------------ | ---------- | -------------------------------------------------- ========================================================================= (There is a section "SUN Disk Label and boot images for SUN SPARC" before that special GRUB description.) man xorrisofs: ========================================================================= -B disk_path[,disk_path ...] Cause one or more data files on disk to be written after the end of the ISO image. A SUN Disk Label will be written into the first 512 bytes of the ISO image which lists this image as partition 1 and the given disk_paths as partition 2 up to 8. The disk files should contain suitable boot images for SUN SPARC systems. The pseudo disk_path "..." causes that all empty partition entries become copies of the last non-empty entry. If no other disk_path is given before "..." then all partitions describe the ISO image. In this case, the boot loader code has to be imported by option -G. ========================================================================= util/grub-mkrescue.c does ========================================================================= if (source_dirs[GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275] && system_area == SYS_AREA_SPARC) { ... xorriso_push ("-G"); xorriso_push (sysarea_img); xorriso_push ("-B"); xorriso_push (","); xorriso_push ("--grub2-sparc-core"); xorriso_push ("/boot/grub/sparc64-ieee1275/core.img"); ========================================================================= The mkisofs emulation option --grub2-sparc-core does the stuff described in boot_sectors.txt. (And i see nice examples of grub_util_fopen() and fwrite(3) by which grub-mkrescue could zero the EFI partition's partition table after mformat did its work ...) I hope this helps to get more insight. More background might be known to Vladimir. Have a nice day :) Thomas