Isohybrid tool is used for creating Hybrid images from bootable ISO images. The Hybrid image created by isohybrid tool can be used as an USB image or as an ISO image.
While creating hybrid images, the tool adds an MBR (Master Boot Record) in the first 512 bytes of the ISO image and pads the end of the image with zeros, so that the size of the final image is a multiple of 1M. Thus created MBR will have one partition listed, starting at offset zero (by default) and ending at the end of the hybrid image. For example fdisk -l on an isohybrid image would like the following:
linux# fdisk -l Centos60-Base.iso
Disk Centos60-Base.iso: 231 MB, 231735296 bytes
64 heads, 32 sectors/track, 221 cylinders, total 452608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf2d79d93
Device Boot Start End Blocks Id System
Centos60-Base.iso1 * 0 452607 226304 83 Linux
Usually BIOSes expect the MBR to be present at the first 512 bytes and the first partition to start after the first sector (first 512 bytes). Since these two overlap in the case of the Hybrid iso images, servers' BIOS gets confused and treats this image as a Floppy image and fails to boot with the message "isolinux.bin missing or corrupt". If the "USB Flash Drive emulation Type" is updated to "HDD/Hard Disk" from "Auto", in the BIOS, the image will start to boot. This setting will force the BIOS to read the MBR and boot to the USB key as if it were a HDD. Below are screenshots of the required BIOS changes in 8G, 9G, 10G, 11G servers respectively:
The other obvious workaround to this issue is to build a hybrid image so that the first partition starts at non-zero offset. Unfortunately, this brings forth other issues. According to the ISO 9660 specification, the first 32KB of an ISO image is un-used (mostly zeroed out). The isohybrid tool uses the first 512 bytes of this space to setup the MBR of the hybrid image. The partition that starts at a non-zero offset (between 0 and 32KB) will have all zeros at the start of the partition, instead of a superblock providing the filesystem information. This will cause the mount program to fail mounting the partition (ex: /dev/sda1), thereby causing a boot failure.
AFAIK xorriso seems to be the only tool which creates hybrid images with non-zero offset, which can be dual-mounted (both as overall device[/dev/sda] and as a partition[/dev/sda1]). More information about this tool can be found at the wiki page: http://libburnia-project.org/wiki/PartitionOffset.
To sum up, Hybrid ISO images created with zero offset boot-up with right BIOS changes. The images with non-zero offset don’t boot unless the boot scripts are updated to mount the overall device instead of the partition or right tools are used for creating images which support dual-mounting.
The 12th generation servers had the above mentioned BIOS option of choosing the USB mode, disabled. So there was no way to boot an iso hybrid image on 12G servers from an USB key. The BIOS version released today (06/26/2012) and the future releases for the 12G systems will have the right fix in them. So the customers will have to update the BIOS on their servers to be able to boot an ISO Hybrid image from an USB Key