[ipxe-devel] [gPXE] What keeps the connection to the SAN traget when gPXE quits, before the AoE driver is loaded ?

Michael Brown mbrown at fensystems.co.uk
Sat Oct 16 15:12:48 UTC 2010


On Saturday 16 Oct 2010 15:47:03 The Mad One wrote:
> I need to explain the San boot sequence(procedure) & compare it to the boot
>  from a local HDD.
> 
> with a local HDD it goes this way: Power Good > POST > secondary BIOSs >OS
>  boot from HDD.
> 
> With a local (physical) hard drive connected to the HDD controller
>  (ATA/SCSI) it's the BIOS that accesses the HDD before the OS's HDD driver
>  is loaded, but how about AoE SAN boot ?
> 
> I know that before gPXE quits it registers the SAN target (AoE or iSCSI) as
>  a BIOS drive, what does that really mean ? How does the BIOS know how (the
>  protocol) to access the BIOS drive over AoE ? Where is the driver
>  responsible for this step ?
> 
> I might be completely wrong or missing an important part of the process so,
>  please, be kind & explain me what is happening in the background.

iPXE hooks the BIOS INT 13 vector, which is the vector used to access disks 
via the BIOS.  Programs such as grub, LILO, MS-DOS, or NTLDR use INT 13 in 
exactly the same way as they would for a local physical disk.  iPXE intercepts 
these calls, retrieves the data using AoE (or iSCSI, or SRP, or FCoE) and 
returns it via the INT 13 interface.

You can read up on the INT 13 interface at 
http://www.ctyme.com/intr/int-13.htm.  (Note that iPXE has to support only a 
tiny subset of the calls listed on that page.)  You can see iPXE's INT 13 
impementation at

  http://git.ipxe.org/ipxe.git/blob/HEAD:/src/arch/i386/interface/pcbios/int13.c

For example, when LILO issues INT 13,42 to read from the disk, this will end 
up calling the function int13_extended_read() in int13.c.

Hope that helps.

(Not CCing gpxe at etherboot.org because Marty Connor censors any messages I send 
to that list.)

Michael



More information about the ipxe-devel mailing list