Hi, my assembler reading skills are obviously insufficient. It turns out that the bytes in the MBR partition table range are not significant for booting the ISO from qemu -hda.
I boldly zeroed them in a copy of the GNU/Hurd ISO and it still boots. (To make sure that it does not boot by El Torito i copied the terminating volume descriptor from block 19 to block 17.) Encouraged by this outcome, i repacked the ISO by these commands: # Obtain GRUB image file from start of original ISO dd if=debian-hurd-2017-i386-NETINST-1.iso bs=2048 count=16 of=grub_embed mount debian-hurd-2017-i386-NETINST-1.iso /mnt/iso # Most options as learned from file /mnt/iso/.disk/mkisofs # but adding option --protective-msdos-label to create a partition table. xorriso -as mkisofs \ -o test.iso \ -J -joliet-long -r \ -V 'Debian 9.0 h-i386 n' \ --embedded-boot grub_embed \ --protective-msdos-label \ -cache-inodes \ -c boot/boot.cat \ -b boot/grub/grub_eltorito \ -no-emul-boot -boot-load-size 4 -boot-info-table -no-pad \ /mnt/iso The resulting test.iso boots as qemu -hda to the same GRUB menu as the original ISO. The partition table is what grub-mkrescue would ask for in case of i386-pc without any efi platform: $ sbin/fdisk -lu test.iso ... Disklabel type: dos ... Device Boot Start End Sectors Size Id Type test.iso1 * 1 311555 311555 152.1M cd unknown This partition is not mountable because of its start offset 1. But that's how Vladimir wanted it for grub-mkrescue. ------------------------------------------------------------------ Udate after receiving reply on grub-devel: http://lists.gnu.org/archive/html/grub-devel/2017-06/msg00043.html Vladimir 'phcoder' Serbinenko wrote: > Those are only for floppies with old BIOS. If your image is over 2.88 MiB > and thus never useful on floppies, it's safe to overwrite. This explains why it looks like somewhat plausible executable code and why i386-pc/boot.img of Debian 8 is in the state it is in. ------------------------------------------------------------------ So my proposal to Debian GNU/Hurd is to boldly add option --protective-msdos-label to the debian-installer run of xorriso -as mkisofs for hurd. If an empty partition table is desired instead, then at least zeroize the 64 bytes beginning at offset 446 of file "grub_embed" before it gets handed over to xorriso. Have a nice day :) Thomas