Testing requested: Hybrid ISO/USB boot
benno at FreeBSD.org
Thu Mar 22 18:06:28 UTC 2018
I’ve been working on the ability to create hybrid ISO/HDD boot images for x86, a la what Linux systems do with ISOHYBRID. The general theory seems to be that ISO images have a 32KB hunk of zeroes at the front that they generally ignore so we’ll stick something in there that can handle booting if need be. The cases generally break down as follows:
UEFI with CD: Boots using an EFI system partition embedded in the ISO image. This loads loader, and so on.
UEFI with HDD: Same as above as UEFI doesn’t really care what the underlying medium is and it sees the ISO image.
Legacy BIOS with CD: Boots using El Torrito as always.
And now for the new part:
Legacy BIOS with HDD: Sees a DOS MBR stuck in the 32KB at the front of the ISO image. This MBR contains our MBR boot code, which sees an active BSD slice containing a variant of our BSD boot code that reads from the ISO filesystem instead of UFS. This finds loader in the ISO filesystem and loads that. Loader has had support for reading ISO9660 images off HDDs added. Everything continues normally after that.
The review for these changes is here:
And a version of the standard “bootonly” ISO image built with these changes is here:
I’ve tested this image under qemu and VMware under all four of the BIOS/UEFI and CD/HDD combinations. I’ve also booted a system build around an Asus X399 Prime motherboard with this dd’ed to a USB stick. I’d love some testing on more systems, especially things that are more likely to have more customized boot firmwares (I’m thinking Dell, HP, etc).
More information about the freebsd-hackers