[syslinux] Other projects using pxelinux.cfg behaviour and architecture detection

Robie Basak robie.basak at canonical.com
Fri Aug 31 02:32:40 PDT 2012


Hi,

I have a problem with architecture detection on non-Intel pxelinux
emulators that I'd like to raise with you. This doesn't directly affect
pxelinux and doesn't require any changes at your end, but I thought that
you should be aware of it as there are some compatibility implications.

I'm not sure if you're aware of pxelinux's TFTP fetch behaviour and
the pxelinux.cfg/syslinux having become a de facto standard on other
architectures.

ARM machines needed a method to netboot Linux in a way configurable by
the boot server, so U-Boot (a common ARM bootloader) adopted pxelinux's
TFTP config file fallback mechanism and a subset of the
syslinux/pxelinux config file format.

When working on net booting across architectures, this means that the
same TFTP server can boot Intel (via PXE and pxelinux) and ARM (via
U-Boot which emulates pxelinux's behaviour) in much the same way.

So your documentation of syslinux and pxelinux has also become a
reference for others who are emulating pxelinux's behaviour. Thank you!

Now the problem. This all works fine if the MAC addresses and
architectures are known in advance, but if they aren't, then the booting
machine will fall back to pxelinux.cfg/default. At this point, we don't
know which architecture's kernel to use, since both pxelinux and
U-Boot will fall back to this file without an appropriate indication of
which architecture is being fetched.

I have proposed a solution which solves this by imposing an extra
requirement on pxelinux emulators only (and not on pxelinux itself). It
simply involves emulators fetching a
pxelinux.cfg/default.<arch>-<subarch> file when running on non-Intel
architectures, before falling back to pxelinux.cfg/default as usual.

This way, Intel-only environments carry on as usual. Heterogeneuous
architecture environments can use pxelinux.cfg/default for Intel, and
also specify extra ones for other architectures, and everything should
just work.

This solution introduces a new (arch, subarch) namespace, and ideally it
would be shared across all emulators. But there isn't any central
reference point for this except in your documentation. Do you think it
would be appropriate to define this mechanism and namespace here, even
if pxelinux never uses it directly?

And do you have any other comment on this? Is there a better solution to
this problem?

Further reading: my email to the cross-distro list[1] and the bug I'm
using to track this[2].

Thanks,

Robie

[1] http://lists.linaro.org/pipermail/cross-distro/2012-August/000368.html
[2] https://launchpad.net/bugs/1041092



More information about the Syslinux mailing list