[ipxe-devel] ipxe -> pxelinux.0: "No more network devices"

Michael Brown mbrown at fensystems.co.uk
Thu Dec 8 17:00:10 UTC 2011


On Wednesday 07 Dec 2011 10:34:46 José María Mor Fabregat wrote:
> I'm using gpxe/iPXE for a long time and recently I tested the new
> updated versions to serve some menus using syslinux. I forgot some of
> iPXE characteristics, sure, because after loading  the pxechain.0 all
> things runs well but I can see a message like: "No more network
> devices"

As far as I can tell, most of the iPXE+pxelinux weirdness that people are 
reporting seems to relate to the use of the PXE exit hook.  The general case 
seems to be:

When loading via undionly.kpxe->pxelinux.0, the user selects something to 
boot.  This something (whether Linux kernel, memdisk, chain.c32, etc) appears 
to load correctly.  At the point that it should start executing, control is 
instead returned to iPXE.  The user may see

  No more network devices

followed by the OS loading as expected, or the user may be returned to the 
iPXE shell.  (Typing "exit" in the shell at this point would actually cause 
the OS to load, but I doubt anyone's tried this.)

The problem seems to be that pxelinux detects support for PXENV_FILE_EXIT_HOOK 
and tries to use this instead of shutting down iPXE in the normal way.  My 
best guess is that pxelinux contains code that does something like:

  if ( exit_hook_supported ) {
      set_exit_hook();
      exit_pxelinux();  // return to iPXE
  } else {
      shut_down_pxe_stack();
      boot();
  }

I'm unclear on what pxelinux is expecting to happen.  Exiting back to iPXE 
will simply cause iPXE to continue: if the user started pxelinux.0 from a 
shell, then the user will be returned to the shell; if pxelinux.0 was started 
from a script, then the script will continue executing; if pxelinux.0 was 
loaded as part of the usual autoboot() sequence, then this sequence will 
continue with any remaining network devices.

The attached patch eliminates the symptoms of the problem, by reporting that 
PXENV_FILE_EXIT_HOOK is not supported.  pxelinux then shuts down iPXE in the 
normal way, and everything works as expected.

Shao, hpa: any thoughts?

Michael
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ipxe-disable-exit-hook-hack.patch
Type: text/x-patch
Size: 760 bytes
Desc: not available
URL: <http://lists.ipxe.org/pipermail/ipxe-devel/attachments/20111208/bab06966/attachment.bin>


More information about the ipxe-devel mailing list