[syslinux] Gene, great documentation on PXELINUX-Multi-Arch

Spike White spikewhitetx at gmail.com
Tue Dec 9 10:24:01 PST 2014


Gene,

First off, great documentation on
http://www.syslinux.org/wiki/index.php/PXELINUX-Multi-Arch

You clearly lay out the various techniques.

Just last week, I presented a pxelinux talk to our local Linux meet-up
group. (I've given
this talk before.)


http://2014.texaslinuxfest.org/content/creating-legacy-efi-pxe-server-using-pxelinux.html

Apparently, I'm using the "distinct directory, symlink path" technique.
Good to know.

You might want to document example distinct directory examples.  To more
fully explain
each technique.

Here's my example "distinct directory, symlink path" setup:

.
├── bios
│   ├─ boot
│   │  ├── centos/
│   │  │   └── 6.2/
│   │  │       └── x86_64/
│   │  │           ├── initrd.img
│   │  │           └── vmlinuz
│   │  └── fedora/
│   │      ├── initrd.img
│   │      └── vmlinuz
│   ├── SplashP.png
│   ├── graphics.conf
│   ├── ldlinux.c32
│   ├── libcom32.c32
│   ├── libutil.c32
│   ├── pxelinux.cfg
│   │ └── default
│   ├── pxelinux.0
│   └── vesamenu.c32
└── efi.x64
    └── boot -> ../bios/boot
    ├── SplashP.png -> ../bios/SplashP.png
    ├── graphics.conf  -> ../bios/graphics.conf
    ├── ldlinux.e64
    ├── libcom32.c32
    ├── libutil.c32
    ├── pxelinux.cfg
    │ └── default
    ├── syslinux.efi
    └── vesamenu.c32


and here's an equivalent "distinct directory, common kernel path" example:

.
├─ boot
│  ├── centos/
│  │   └── 6.2/
│  │       └── x86_64/
│  │           ├── initrd.img
│  │           └── vmlinuz
│  └── fedora/
│      ├── initrd.img
│      └── vmlinuz
├── SplashP.png
├── graphics.conf
├─  bios
│   ├── ldlinux.c32
│   ├── libcom32.c32
│   ├── libutil.c32
│   ├── pxelinux.cfg
│   │ └── default
│   ├── pxelinux.0
│   └── vesamenu.c32
└── efi.x64
    ├── ldlinux.e64
    ├── libcom32.c32
    ├── libutil.c32
    ├── pxelinux.cfg
    │ └── default
    ├── syslinux.efi
    └── vesamenu.c32

BTW, I'm a huge fan of the "distinct directory" techniques.  Why?  Because
your DHCP server
has to set up different bootfile-name options anyway, for the various
clients.  That is:
   - a BIOS client has to boot pxelinux.0,
   - a UEFI/32 client has to boot (32-bit) syslinux.efi and
   - a UEFI/64 client has to boot (64-bit) syslinux.efi.

(In my talk, I document three different ISC syntaxes to configure your DHCP
server to do this.)

Since you have to do this effort anyway, it makes sense to provide a
relative path.  For instance,
"bios/pxelinux.0" and "efi64/syslinux.efi".  Then pxelinux is automatically
using distinct dirs,
since all paths are relative to where pxelinux's NBP is found.

For my situation, in my pxelinux.cfg/default files my boot flags &
kickstart files are slightly
different between my BIOS & UEFI clients.  So striving towards a common
config makes little sense.
I can reference a common graphics.conf and SplashP.png, but very little
else.

However, I totally agree with your approach of documenting common
config/common directory.  This
technique may make sense for other scenarios.

I'm reading your "common directory distinct config", about
pxelinux-options. I see
http://www.syslinux.org/wiki/index.php/PXELINUX has a (very short!)
discussion of pxelinux-options
under the "hardcoded options" section.

Looked at the perl source code and makefile.  Running pxelinux-options -h
make more sense as to what
it does.  I see it patches pxelinux.0.  Will it correctly patch
efi64/efi/syslinux.efi as well?  (I
know it claims to).

Spike


More information about the Syslinux mailing list