[syslinux] isohybrid question

Thomas Schmitt scdbackup at gmx.net
Tue Mar 9 09:02:54 PST 2010


Hi,

> However, as I'm one of the people with commit rights to cdrkit /
> genisoimage I could probably add support for creating isohybrid-style
> images directly inside genisoimage. Does that sound like a sensible /
> reasonable / useful thing to do?

libisofs has an isohybrid MBR generator for
ISOLINUX 3.72.
The C code can be examined (and copied) at
  http://bazaar.launchpad.net/%7Elibburnia-team/libisofs/scdbackup/annotate/head%3A/libisofs/make_isohybrid_mbr.c
resp. in libisofs or GNU xorriso tarballs as
  libisofs/make_isohybrid_mbr.c


I have to confess that i did not test in the last
months whether it still works resp. whether the
signature of the boot image is still the same.

So i now tried with xorriso. Rather than learning
how to prepare a ISOLINUX tree on disk, i just
mount CDs which i know to be bootable.
Regrettably, Lenny's boot image is one tick too old:

  mount -o loop .../debian-504-amd64-netinst.iso /mnt
  strings /mnt/isolinux/isonlinux.bin | grep ISOLINUX

yields

  ISOLINUX 3.71 Debian-2008-09-06 

If it was 3.72+, then the following commands
should make the USB stick at /dev/sbd bootable
as "USB-HDD":

  dev=stdio:/dev/sdb
  xorriso \
     -outdev "$dev" -blank as_needed \
     -map /mnt / \
     -boot_image isolinux dir=/isolinux

Watch for message
  xorriso : NOTE : Will write isohybrid MBR.

For a CD or DVD it would be e.g.
  dev=/dev/sr0
  xorriso ...same.arguments...

------------------------------------------------

I tried with a newer ISOLINUX version out of:
http://rip.7bf.de/current/RIPLinux-9.3-non-X.iso

  mount -o loop .../RIPLinux-9.3-non-X.iso /mnt

Version check

  strings /mnt/boot/isolinux/isonlinux.bin | grep ISOLINUX
  ISOLINUX 3.82 2009-06-09 

I wrote it as new ISO image onto an USB stick
and reproduced the peculiar paths of boot image
and catalog file of RIP-Linux. (Just in case the
catalog file address matters.)

  dev=stdio:/dev/sdb
  xorriso \
     -outdev "$dev" -blank as_needed \
     -map /mnt / \
     -boot_image isolinux bin_path=/boot/isolinux/isolinux.bin \
     -boot_image isolinux cat_path=/boot/boot.cat \
     -boot_image isolinux isohybrid=on
          
Note that xorriso did not load the image but
used /mnt like any other disk directory.
The MBR of RIP-Linux was not copied, but a new
one got generated.
Option   -boot_image isolinux isohybrid=on
would have caused program abort if isolinux.bin
would not bear the expected signature.

This image indeed booted from USB stick.
So above libisofs code seems still to be valid.

(Hopefully hpa will remember to change the
 signature if the 3.72 MBR template isn't usable
 any more.)

------------------------------------------------


Have a nice day :)

Thomas




More information about the Syslinux mailing list