1

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:

interface=eno16777736,lo,eth0
#bind-interfaces
domain=netdec.lan
# DHCP range-leases
dhcp-range= eno16777736,192.168.1.3,192.168.1.60,255.255.255.0,1h
# PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.133
# Gateway
dhcp-option=3,192.168.1.1
# DNS
dhcp-option=6,192.168.1.1, 8.8.8.8
server=8.8.4.4
# Broadcast Address
dhcp-option=28,10.0.0.255
# NTP Server
dhcp-option=42,0.0.0.0
user=nobody
pxe-prompt="Press F8 for menu.", 120
pxe-service=x86PC, "Proceed and choose your operating system", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
log-dhcp

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,192.168.1.133".

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) 192.168.1.34 c0:33:5e:74:41:65

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

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

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

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

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

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

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

Thankyou guys.

user156235
  • 61
  • 1
  • 9

1 Answers1

2

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
  • 3,519
  • 2
  • 17
  • 17
  • Pat, how can I add UEFI support to the linux pxe server? – user156235 Jun 20 '16 at 09:55
  • I have had a play around with Serva, it's not really what we're looking for, we don't want to be running multiple environments and want to move it away from running on a windows based server. – user156235 Jun 20 '16 at 09:56
  • 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 '16 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 '16 at 11:55
  • Pat - I understand for the linux pxe server to serve UEFI devices I need bootx64.efi - where can I obtain this? – user156235 Jun 20 '16 at 12:42
  • Seperate question, the problem I had with Serva was that it was getting stuck on the following when loading a Windows 7 ISO: bootmgfw.efi Thank you for your help, I really appreciate it. – user156235 Jun 20 '16 at 12:43
  • 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 '16 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 '16 at 14:21
  • Created a seperate question, not sure where I amend the BMM setting. – user156235 Jun 20 '16 at 15:05