Hacker News new | ask | show | jobs
by mareo 3251 days ago
I'm an occasional iPXE contributor, I guess it's my time to shine!

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. :)

[1] https://en.wikipedia.org/wiki/INT_13H

[2] https://en.wikipedia.org/wiki/Interrupt_vector_table

1 comments

How does iSCSI work for Windows then?

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?

iPXE uses the iBFT[1] to pass this information to the OS.

ftp://ftp.software.ibm.com/systems/support/bladecenter/iscsi_boot_firmware_table_v1.03.pdf[1]