I first saw this trick using iPXE from boot.rackspace.com.
iPXE is also an amazing thing in itself. I would pay for a detailed writeup of the CDROM emulator that does HTTP-range requests when the "device" is accessed.
I first saw this trick using iPXE from boot.rackspace.com.
iPXE is also an amazing thing in itself. I would pay for a detailed writeup of the CDROM emulator that does HTTP-range requests when the "device" is accessed.
Bootloaders are reading block of data from CR-ROM, disk, floppy or USB drive by using int 13h[1] whose handler is set by the BIOS. A bootloader is only asking the BIOS to read data for him and does not have to implement drivers.
iPXE replaces the int 13h handler in the interrupt vector table[2] by its own, and when a read is issued by a bootloader, it performs it with an HTTP range or iSCSI request.
It's actually really simple. :)
I setup iPXE to boot Windows 7 (Embedded Standard technically) to boot off an iSCSI target and it shows up as a disk in Windows. Does Windows still allow for int 13h handlers or is there some other special handling?
ftp://ftp.software.ibm.com/systems/support/bladecenter/iscsi_boot_firmware_table_v1.03.pdf[1]