We've had a wishlist bug
(#551951) open against
debian-cd for some time, asking for the creation of "isohybrid" CD
images for i386 and amd64. These are special in that as well as the
normal CD-based ISO9660 filesystem they also contain a valid-looking
DOS-style partition table. Thus, if you simply copy one of these
images raw to a USB stick a normal PC BIOS will boot the image
directly. This would be a neat feature, making it much easier for
people to use standard Debian installer images on their USB sticks
without having to
follow a lot
more instructions.

Support for this feature was added in syslinux/isolinux quite a
while back (thanks to H Peter Anvin and the other syslinux
contributors), but this depended on post-processing images with
the isohybrid program. Due to the special way that we
make our CD and DVD images to produce jigdo images as well, that
wouldn't work for us: the jigdo files would no longer match the ISO
files. Bugger...! Recently, along came more help in the form of Thomas
Schmitt (author of xorriso) and George Danchev, its Debian
maintainer. Recent versions of xorriso support creating isohybrid
images directly, which is very handy. We've worked together in the
last few months on porting my old JTE code (which creates our jigdo
images) from cdrkit to xorriso, and after a lot of testing and
debugging we now have things working fully. I've added a small amount
of code in debian-cd to use the new xorriso features, and for the last
couple of weeks all of the i386, amd64 and i386-amd64 multi-arch CDs
and DVDs have been built as hybrids.

It's been a delight working with Thomas and George - they're
enthusiastic, helpful and friendly. Thanks, guys!

What does this mean for end users?

Instead of having to specially prepare USB sticks for the
installer, you can now simply use dd to write the image
straight to the raw stick, e.g.:

# dd if=debian-testing-i386-netinst.iso of=/dev/sdX

The USB stick should now boot directly, showing exactly the same
bootup screen as if you'd written the image directly to a CD. Yay!

I'm expecting to be using this code from now on for new releases,
i.e. d-i beta and RC releases and for Squeeze itself when we get
there. I'm not planning on backporting this code into the Lenny
branch of debian-cd as it's a lot of work and I don't want to
destabilise things there.

What's next?

We need to clear up some of the maintenance around the code as it
stands; I'm planning on moving libjte inside my existing jigit
package, as that's a sensible place to put it. That will come after
the Squeeze release, though.

We need to finalise boot support for other architectures in
xorriso; I added support for them into mkisofs/genisoimage a long time
ago and we've already moved some of that into xorriso.

Thomas and George have also been working hard to give me
faster/better size estimation code, useful for making debian-cd run
faster.

Finally: I'd like to add support into xorriso for creating
the nasty HFS hybrid images that are needed for booting
Macs. The code that does this in cdrkit is probably some of the worst
that I've ever worked with, and I'd like to get away from it. If only
Apple hadn't stupidly built their proprietary platform around this
shit and had used open standards instead. :-(

Once we have these bits in xorriso, I'll be able to move production
of all of the CDs across from genisoimage to xorriso. Very nearly
there for being able to drop the last remnants of Schily-ware from the
Debian archive...