I'm wondering if anyone has ever attempted this before with a Linux PXE Server?

I've got it setup and working for pretty much every other laptop and desktop out there.

This is the first time I have attempted this and we have the official Microsoft Surface USB to LAN Adapter.

Here's my dnsmasq config:

# DHCP range-leases
dhcp-range= eno16777736,,,,1h
# Gateway
# Broadcast Address
# NTP Server
pxe-prompt="Press F8 for menu.", 120
pxe-service=x86PC, "Proceed and choose your operating system", pxelinux

We fail to get the PXE Menu (proceed and choose your operating system) when using the above configuration, we only get the pxe menu when commenting out the following "dhcp-boot=pxelinux.0,pxeserver,".

In the logs I can see the following when PXE booting the surface;

Jun 15 14:12:15 localhost dnsmasq-dhcp[17425]: DHCPDISCOVER(eth0)   c0:33:5e:74:41:65

Jun 15 14:12:15 localhost dnsmasq-dhcp[17425]: DHCPOFFER(eth0) c0:33:5e:74:41:65

Jun 15 14:12:31 localhost dnsmasq-dhcp[17425]: DHCPREQUEST(eth0) c0:33:5e:74:41:65

Jun 15 14:12:31 localhost dnsmasq-dhcp[17425]: DHCPACK(eth0) c0:33:5e:74:41:65

Jun 15 14:12:31 localhost dnsmasq-tftp[17425]: error 8 User aborted the     transfer received from

Jun 15 14:12:31 localhost dnsmasq-tftp[17425]: failed sending     /var/lib/tftpboot/pxelinux.0 to

Jun 15 14:12:31 localhost dnsmasq-tftp[17425]: sent /var/lib/tftpboot/pxelinux.0 to

Here's a tcpdump when the surface is attempting to retrieve the pxelinux.0 file via TFTP. 15:06:29.757118 IP > 40 RRQ
"pxelinux.0" octet blksize 1468 15:06:29.758004 IP > UDP, length 27 15:06:29.759410 IP > UDP, length 30 15:06:29.782301 IP > 32 RRQ
"pxelinux.0" octet blksize 1468

Is this really simple and I have missed something or is it just not possible?

Thankyou guys.

1 Answer 1


Microsoft Surface is an UEFI only device; you won't ever be able to boot pxelinux.0 NBP (which is BIOS only) on that device. That's why you cannot see the booting menu.

If you want to PXE a Microsoft Surface you need something like Serva able to automatically PXE boot/install UEFI and BIOS clients. (I'm related to Serva development)

  • Pat, how can I add UEFI support to the linux pxe server?
    – user156235
    Jun 20, 2016 at 9:55
  • 1
    >how can I add UEFI support to the linux pxe server? this does not have an easy answer; basically your dhcp depending on the client architecture provides the corresponding NBP, and the NBP chainloads to the corresponding bootloader. In a multi-asset when offering Windows OSs you also need to deal with the BCD creation and all thta stuf
    – Pat
    Jun 20, 2016 at 11:52
  • 1
    >want to move it away from running on a windows based server well there's not a Linux based PXE server today doing what Serva does. I could recommend SCCM or MDT but they are also Windows based. I could mention FOG or even Clonezilla but they are HDD image based solutions.
    – Pat
    Jun 20, 2016 at 11:55
  • 1
    >to serve UEFI devices I need bootx64.efi this is a big misunderstanding; bootx64.efi is a "generic" name that can gotten when renaming syslinux,grub,ipxe,etc UEFI agents... then you need a correctly tuned UEFI boot manager; also not an easy task these days. The last versions of syslinux it includes syslinux.efi but til today it cannt chainload efi images then you cannot install windows. iPXE is a different world good for experimenting bad for working, your only choice could be Grub.
    – Pat
    Jun 20, 2016 at 14:16
  • 1
    Serva was getting stuck when loading a Windows 7 ISO: bootmgfw.efi if Serva gets stuck when loading bootmgfw.efi you might have a network issue, or a client with old firmware, etc. Also for UEFI compatibility reasons (old clients not implementing the UEFI standard correctly) Serva includes 3 Boot Manager Modes; try i.e. BMM=2; You should probably add a new question with this issue if you want.
    – Pat
    Jun 20, 2016 at 14:21

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .