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

Leenders, Peter Peter.Leenders at computacenter.com
Mon Dec 8 05:07: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_Define_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

Hello,

here a short feedback:

As a proof of concept I patched in the compiled ldlinux.e64, vesamenu.c32, libutil.c32 and libcomc32 modules the extension strings c32 to e64 and renamed than the *.c32 module to *.64.
Since I have no syslinux development environment here, I just patched the binaries itself.
Additionally I copied the *.c32 Bios modules to the tftp server. 

As result I have no double filenames and BIOS and UEFI compatible versions are available on the server.

Now it's possible to use UEFI and BIOS modules for vesamenu parallel on a tftp server with one TFTP root directory. I guess the same procedure will work for other com32 modules too, but I haven't tested yet.

It may be worth to think about using different extensions in the main syslinux sourcecode branch to enable parallel UEFI and BIOS booting on a tftp server.

Peter Leenders



More information about the Syslinux mailing list