How to avoid "NBP is too big to fit into free base memory" after searching for boot device repeatedly?

Solution 1:

It is running out of memory. I'm assuming you are using legacy pcbios here, since everything points to that. In this old era, we actually only have 640KB of Base memory to use for initial program.

Now the reason for running out is that in the old pcbios UNDI stack, there actually is no clean way of exiting and cleaning up everything.

The simplest way to "fix" this is to reboot the machine. Maybe some things can be improved, but to help further, a more detailed log of the output is preferred, as well as which iPXE binary you are using, and the full error message that you get (if any) from iPXE (it will have a ipxe.org url in it - also read that page)

I remember a similar issue being discussed (probably in the iPXE forum) but that was many years ago, and don't remember enough to find it. (the error message could help)

EDIT: A few ideas to help you live longer is to:

  1. If you intent to use iPXE, try to use a smaller build of iPXE (many features can be disabled) that way when it is actually needed it can succeed with less memory available. (this does not fix the issue, but does make it try longer before it fails)
  2. Always chain into iPXE, and then have an embedded script that loops, something like:
#!ipxe
:retry
autoboot || goto :retry

This will retry inside iPXE forever, without doing the initialization (and eating memory) on each try.