[syslinux] How to support iSCSI multipath...

Alex Zeffertt alex.zeffertt at eu.citrix.com
Thu Oct 1 02:57:13 PDT 2009


Hi Bootmeisters,

I am using gpxelinux.0 + sanboot.c32 to boot a diskless machine into Linux.  I 
would like to use device-mapper-multipath to provide fault tolerant access to 
its root disk.

Although I am able to do this by hardcoding the additional paths in the initrd, 
it would be better if the bootloader could pass the information in the iBFT 
(iSCSI Boot Firmware Table).  However, at the moment gpxelinux.0 can only build 
iBFTs with one NIC and one target.

As I understand it, gpxelinux.0 consists of two parts linked together: 
pxelinux.gpxe (taken from the etherboot project); and pxelinux.0.  The 
pxelinux.gpxe part runs first and extends the TCP/IP stack of the PXE 
implementation in ROM.  It then runs a script which launches pxelinux.0. 
pxelinux.gpxe provides the iSCSI protocol support which can later be used by the 
sanboot.c32 comboot module.

When "sanboot.c32 iscsi:<tgtip>:<prot>:<port>:<lun>:<iqn>" is run, pxelinux.0 
passes control back to the pxelinux.gpxe component to build the iBFT.  Although 
the target to write to the iBFT it given explicitly, the NIC and IP 
configuration are implicit, and pxelinux.gpxe assumes that these should be the 
NIC that DHCP'd, and the IP configuration provided by the DHCP server.

In order to support multipath I need to make this more flexible.  Ideally 
sanboot.c32 would support an invocation like this:

   sanboot.c32 ibft:<filename>

that would cause it to collect tftp://<next-server>/<filename>, load it into 
memory, read it to determine the NIC and config to use, and then proceed as 
before by logging into the LUN and jumping to its MBR.

Does anybody have any advice about how to go about this, or whether it is even 
feasible?

Thanks in advance for any help, and thank you for syslinux!

Alex




More information about the Syslinux mailing list