I'm trying to boot a WinPE using pxelinux.

Here is my entry in the pxelinux.cfg/default file :

LABEL Windows Preinstallation Environment
    COM32 linux.c32
    APPEND wimboot initrdfile=http://pxe/winpe/bcd,http://pxe/winpe/boot.sdi,http://pxe/winpe/boot.wim

I'm using wimboot (from the iPXE project) and it works well with legacy-bios computers (I can use my WinPE without any troubles). I followed this documentation of iPXE wimboot and adapted it to pxelinux.

When it comes to a UEFI computer, it doesn't work anymore. It loads everything and on the last step it seems to crash :

Loading wimboot... ok
Encapsulating http://pxe/winpe/bcd... ok
Encapsulating http://pxe/winpe/boot.sdi... ok
Encapsulating http://pxe/winpe/boot.wim... ok
Failed to exit boot services: 0x8000000000000002
syslinux_boot_linux() failed: Error 0
linux.c32: Boot aborted!

All my other entries in pxelinux.cfg/default are working.

What can I do to make WinPE boots when I'm on a UEFI computer ?

  • You have make sure it uses UEFI mode, see: WinPE: Boot in UEFI or legacy BIOS mode, look at the bottom about removing the files for the mode you don't want it to start in. – Brian Jul 7 '15 at 15:53
  • Since i'm only serving bcd, boot.sdi and boot.wim, I don't have a "bootmgr" nor an "efi" folder. – Bahaïka Jul 7 '15 at 16:02

Today you won't be able to boot in UEFI mode with Syslinux/winboot. Syslinux 6.03 supports BIOS and UEFI mode but not all the tools of the Syslinux ecosystem are at the moment migrated to UEFI.

i.e. if you used to boot pxelinux.0 (BIOS) now you should boot syslinux.efi (UEFI). linux.c32 is a BIOS only tool that has not been migrated to UEFI yet (I mean is not able to load an efi image). The same with chainload,pxechn, wimboot, etc. The iPXE project has similar issues it's not completely migrated to UEFI then you have features that only work on BIOS.

To boot UEFI winPE today the best option is defining bootmgrfw.efi as your NBP (Network Boot Program) even when this will force you to allocate the BCD in a predetermined path or use the corresponding DHCP option.

  • I already serve syslinux.efi for EFI clients. I haven't seen that linux.c32 wasn't ported. wimboot do supports EFI (it's in the documentations). Where did you find these informations? – Bahaïka Jul 7 '15 at 16:31
  • syslinux.efi today (6.03) is unable to "chainload" an uefi image (bootmgrfw.efi). That's why linux.c32 aborts. I get the info from syslinux mailing list and its code. – Pat Jul 7 '15 at 17:01
  • I will give a try to grub2 then, I've read somewhere that it can do it. – Bahaïka Jul 7 '15 at 17:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.