ISOs of modern Linux distributions contain MBR and GPT partition tables in the first (usually unused) sectors of the ISO file (see Isohybrid - Syslinux Wiki for more details). This way, an ISO can be burned to a CD but also flashed to an USB drive (using DD or Win32DiskImager) and is bootable in both cases.
ReactOS ISOs should also support this to have a single file usable for both CDs and USB drives.
What should be done in my opinion:
- Importing the isohybrid tool from http://repo.or.cz/syslinux.git/blob/HEAD:/utils/isohybrid.c and http://repo.or.cz/syslinux.git/blob/HEAD:/utils/isohybrid.h
This runs standalone when built with the option ISOHYBRID_C_STANDALONE and can just patch any ISO with the necessary MBR bytes.
- Write something like http://repo.or.cz/syslinux.git/blob/bb41e935cc83c6242de24d2271e067d76af3585c:/mbr/isohdpfx.S for FreeLDR.
- Check also that we support/implement support in FreeLDR for hybrid loading, similarly to what is done in http://repo.or.cz/syslinux.git/blob/HEAD:/core/isolinux.asm , below the magic 0x7078c0fb number (labels _hybrid_signature and _start_hybrid).
This should be the steps needed for MBR booting. The isohybrid tool also comes with GPT/UEFI support, but I'm not sure if this is enough for booting ISO-flashed USB drives on UEFI systems.