[syslinux] Using of pxelinux configfiles for both BIOS and UEFI boot

Leenders, Peter Peter.Leenders at computacenter.com
Mon Dec 8 07:05:54 PST 2014


> > > Hello everyone,
> > >
> > > I'm using a windows PXE server and I try to upgrade a existing PXELINUX menu structure with actually with BIOS/Legacy mode to work in UEFI mode too.
> > >
> > > Since I have to use ZENworks tftp on the windows server I have only 
> > > one TFTP-root directory not 2 different tftp-root directories like on a standard windows deployment server. ZENworks itself uses for Legacy mode a patched PXELINUX and for UEFI a patched grub boot manager to get both running.
> > >
> > > - Is there a standard approach to use different vesamenu.c32 (and other architecture depending ) files in the pxelinux.cfg/default file depending on the boot architecture - especially for BIOS/Legacy and EFI64?
> > > - Is it e.g. possible to set and use variables depending on the boot architecture in the default menu  pxelinux.cfg/default to address different vesamenu.c32 files?
> > >
> > > I sniffed network traffic, googled and looked at the SYSLINUX wiki, but always get stuck with the problem that I can't address two different vesamenu.c32 (or menu.c32) modules depending on BIOS or UEFI boot.
> > > Maybe I'm just missing just a little detail.
> > >
> > > I'm using SYSLINUX 6.03 for the existing PXE menu structure with a  large number of PXELINUX configuration files (>170), so building a second structure in grub syntax isn't a way I would like to follow up further.
> > >
> > > Using the tftp from the windows deployment could be an option, but would provoke other incompatibility of services of the MDT server and the ZENworks infrastructure services.
> > >
> > > Yours sincerely
> > > Peter Leenders
> > 
> > Hello,
> > 
> > I guess a general use of  constants/variables is still not possible as described in the SYSLINUX wiki - is this correct?
> >      -> 
> > http://www.syslinux.org/wiki/index.php/SYSLINUX#Is_There_A_Way_To_Defi
> > ne_Constants_Or_Variables.3F
> > 
> > Are the "system" flags to handle this or is there a version of vesamenu.c32 (and depending modules) that run with both UEFI and BIOS- I haven't found something like this?
> > 
> > Is it possible to define search paths for the modules so that it is possible to use both UEFI and BIOS in one TFTP root structure without depending on a special dhcp.conf (linux) or in my case using 2 different tftp root structures (windows)?
> > 
> > For belonging ldlinux module the extensions (*.c32, *.e32 and *.e64) allows to use UEFI and BIOS parallel. Unfortunately this concept is not working for the other modules like vesamenu and depending modules. Is there a plan to extent this concept to the other modules?
> > 
> > Peter Leenders
> > 
> > 
> > 
> See the PATH directive:
>  http://www.syslinux.org/wiki/index.php/Config#PATH
> and the links from that section.
>
> For some general information:
>  http://www.syslinux.org/wiki/index.php/Library_modules
>
> For a basic starting point for dhcp config for mixed BIOS/UEFI clients:
> http://www.syslinux.org/wiki/index.php/PXELINUX#UEFI
>
> For multiple architectures / firmware variants, see basic clues:
>  http://www.syslinux.org/wiki/index.php/PXELINUX-Multi-Arch
>
> Note the usage of "::" as tftp root.
>
> You should be aware that mixing versions of Syslinux should be avoided, and that part of the directives are not supported in older versions.
>
> Regards,
> Ady.

Hello Ady,

thank you for your answer. The path directive is fine if one want to use modules in different directories. Unfortunately it does not help if the modules have the same names - first match wins.
The addressing relative to the working dir would help if ldlinux.* is loaded from different directories. In my case only the pxelinux.0 file is loaded from different locations and the loader is loaded from the root. There are more possible places where pxelinux.0 searches for the loader module, but they do not differ between UEFI and BIOS as far as I sniffed the traffic. So here also first match wins.

I worked though the general library modules information, but the only architecture dependency (in path or ) file name is for the loader module. The dependency of the modules is well documented in this page, but don't help to use UEFI and Bios parallel as you have to use different files with same names depending on the arctitecture/Firmware.

I read also the dhcp config part, but on my configuration with 1 TFTP root directory and a windows server this is not applicable. 
Of course it is possible to use 2 different TFTP root directories on a windows server and put one menu structure into a subdirectory of the 2 different tftp roots using mklink.exe.

The part with the DHCP option 209 and 210 options is new to me. It may be worth to follow this if it is possible to use different config files for different architectures (UEFI/Bios) an you have not to change to many submenu files. If one could use variables or constants or path options in here this would help. At the moment I'm not sure if it is possible to use different config files for BIOS/UEFI on a windows server with this option.


Peter



More information about the Syslinux mailing list