[ipxe-devel] SAN Boot Windows XP with USB-NIC.

Michael Brown mbrown at fensystems.co.uk
Thu Mar 10 22:16:49 UTC 2011


On Thursday 10 Mar 2011 16:53:31 jerrycheng-hinet wrote:
> >> Could you build with DEBUG=undinet and tell me what is shown for the
> >> lines
> >>
> >>  UNDINIC 0x<address> has type <type>, speed <speed>, flags <flags>
> >>  UNDINIC 0x<address> uses IRQ <irq>
> 
> I found the following 3 lines in red:
> UNDINIC using UNDI 0xc0a59078
> UNDINIC 0x17990 is 00:50:fc:8e:c7:8d on IRQ 11
> UNDINIC 0x17990 has type DIX+802.3, speed 10000000, flags 0000cc1b

Thanks for that.  It seems as though your NIC is reporting IRQ 11 but is 
definitely *not* setting the IRQ_SUPPORTED bit in the flags.

Muralidhar: I applied a patch a while ago to fix interoperability with Emulex 
NICs, which (along with several others) don't provide UNDI interrupts.  What 
does the Emulex stack provide as an IRQ number (via 
PXENV_UNDI_GET_INFORMATION)?

I'm wondering if we can safely change the logic in undinet.c to effectively be

  undinic->irq_supported = ( ( undi_iface.ServiceFlags & SUPPORTED_IRQ ) ||
                                              ( undi_indo.IntNumber != 0 ) );

i.e. assume that the NIC supports interrupts if *either* the ServiceFlags 
indicate SUPPORTED_IRQ *or* the IRQ number is non-zero.

> >> That message must be coming from NTLDR rather than iPXE.  Could you try
> >> building with DEBUG=int13, so we can see what is happening?
> 
> There are a few lines of hex dump after "Registerd as BIOS drive
> 0x80/Booting from BIOS drive 0x80". Because the screen scrolled too fast, I
> can't get message of the hex dump.
> I can only see the final 2 lines showed "Booting from SAN device 0x80/INT
>  13 drive 80 booting" after the hex dump.

As of yesterday, you can enable syslog debugging in iPXE, which will let you 
capture these messages over the network rather than via a serial port.  Simply 
enable CONSOLE_SYSLOG in config/console.h, and configure the DHCP server to hand 
out a syslog server address.  For example:

  option log-servers 192.168.0.1;

You also need to ensure that your syslog daemon is configured to accept 
messages from remote hosts.  On many systems, this is done by editing 
/etc/sysconfig/syslog and adding the option "-r" to the syslogd command line.

> I originally think it should be the similiar issue like "booting windows xp
> from USB device". After a few days of work, following the instructions of
> http://www.ngine.de/article/id/8, I can successfully boot windows xp via
>  USB flash drive.
> Then, I try to install all of the NB drivers to the flash drive, install
>  "MS iscsi initiator" and "sanboot" to the flash drive, use flash drive to
>  make a image file, and used ipxe to sanboot this image file. However, the
>  result remained the same. The screen hanged at "Couldn't open drive
> multi(0)disk(0)rdisk(0)partition(1)/NTLDR couldn't open drive
> multi(0)disk(0)rdisk(0)partition(1)".
> 
> Could you please give me some suggestion about the next step? Thanks in
> advance!

I think the DEBUG=int13 output is going to be essential.  Since you don't have 
a viable null-modem cable setup, could you try the CONSOLE_SYSLOG option as 
described above?

Thanks,

Michael



More information about the ipxe-devel mailing list