> Hi,
>
> The documentation on this feature[1] doesn't quite explain how the
> system should actually do a localboot. Is this for BIOS / x86 only?
> There was a recent discussion about this on the U-Boot mailing
> list[2].
>
> Is someone able to help with how / if this should be implemented in
> U-Boot?
>
> Regards,
> Simon
>
I feel that you actually understand the whole point :-)
Syslinux is a bootloader for the PC's - those have a BIOS and
nowadays a Bios Boot Sequence (BBS). And, a specific member of the
syslinux family (package) is pxelinux, which loads from the LAN.
The "local" boot means, that while the PC is trying to boot, in a
particular step of the BIOS Boot Sequence (= the order of bootable
devices) it has loaded PXElinux, and now the user has a choice,
either to chainload some "payload" (e.g. the Linux kernel + initrd or
some such via TFTP), or to hand over to the next entry in the "BIOS
Boot Sequence" - effectively by calling an "iret" at the
top-level
function called by its respective BBS entry, which is effectively a
software interrupt... which will end up trying another boot media,
the next one up in the BBS.
Yes this is specific to machines having a BIOS.
Not sure about UEFI, the bootloader chainloading mechanism is
different, but Syslinux never quite got there with UEFI, so I believe
this point is moot. I haven't actually tried this with iPXE, there
doesn't seem to be an explicit keyword for this. Possibly if you "let
the ipxe boot script fall off the end" or by calling an exit... or
possibly not.
https://www.google.com/search?q=UEFI+exit+ipxe+and+try+the+next+boot+e
ntry%3F
Now compare that to uBoot. Who typically has just a single purpose in
life, and a single option what to boot: the one kernel and initrd,
typically from a NAND flash MTD (or sometimes NOR flash for that
matter). You can possibly break normal boot and try loading something
via TFTP...
Frank