Hey, I have a problem booting certain machines with pxelinux. I have pxelinux.0 in the root of my tftp server and dhcp pointing to the right location: # dhcpd.conf authoritative; option domain-name "example.net"; ddns-update-style none; default-lease-time 3600; max-lease-time 86400; subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.3 10.0.0.20; server-name "DHCPjumpstart"; option routers 10.0.0.1; option domain-name-servers 10.0.0.1; # pxelinux filename "pxelinux.0"; option bootfile-name "pxelinux.0"; option tftp-server-name "10.0.0.1"; next-server 10.0.0.1; } Some machines boot as expected but some cannot find the boot file in tftp and exit with TFTP error, file not found. Tcpdump shows the following: 13:06:06.062260 IP 10.0.0.9.2070 > 10.0.0.1.tftp: 33 RRQ "pxelinux.0M-^?" octet blksize 1456 13:06:06.062271 IP 10.0.0.9.2070 > 10.0.0.1.tftp: 33 RRQ "pxelinux.0M-^?" octet blksize 1456 The requested filename seems to have some garbage appended to it. This is on an old Dell optiplex GX1 with a 3com NIC. Below is an output from booting an IBM box with an intel NIC that works as expected: 13:18:22.289320 IP 10.0.0.18.2070 > 10.0.0.1.tftp: 32 RRQ "pxelinux.0" octet blksize 1456 13:18:22.289332 IP 10.0.0.18.2070 > 10.0.0.1.tftp: 32 RRQ "pxelinux.0" octet blksize 1456 I also tried this on a sokeris box (http://www.soekris.com/net5501.htm) which has VIA VT6105M 10/100 Mbit interfaces and this time it was looking for "pxelinux." and also failed. I used exactly the same setup on all 3 machines and I'm quite confused now. What can I be doing wrong? Many thanks, Jedrek
Jeffrey Hutzelman
2008-Feb-08 18:36 UTC
[syslinux] pxelinux, pxe requesting bad filename from tftp
--On Friday, February 08, 2008 02:50:14 PM +0000 Rek Jed <rekjed at gmail.com> wrote:> Hey, > > I have a problem booting certain machines with pxelinux. I have > pxelinux.0 in the root of my tftp server and dhcp pointing to the right > location: > ># dhcpd.conf > authoritative; > option domain-name "example.net"; > ddns-update-style none; > default-lease-time 3600; > max-lease-time 86400; > > subnet 10.0.0.0 netmask 255.255.255.0 { > range 10.0.0.3 10.0.0.20; > server-name "DHCPjumpstart"; > option routers 10.0.0.1; > option domain-name-servers 10.0.0.1; > > # pxelinux > filename "pxelinux.0"; > option bootfile-name "pxelinux.0"; > > option tftp-server-name "10.0.0.1"; > next-server 10.0.0.1; > } > > Some machines boot as expected but some cannot find the boot file in > tftp and exit with TFTP error, file not found. Tcpdump shows the > following: > > 13:06:06.062260 IP 10.0.0.9.2070 > 10.0.0.1.tftp: 33 RRQ > "pxelinux.0M-^?" octet blksize 1456 > 13:06:06.062271 IP 10.0.0.9.2070 > 10.0.0.1.tftp: 33 RRQ > "pxelinux.0M-^?" octet blksize 1456 > > The requested filename seems to have some garbage appended to it. This > is on an old Dell optiplex GX1 with a 3com NIC. Below is an output from > booting an IBM box with an intel NIC that works as expected: > > 13:18:22.289320 IP 10.0.0.18.2070 > 10.0.0.1.tftp: 32 RRQ "pxelinux.0" > octet blksize 1456 > 13:18:22.289332 IP 10.0.0.18.2070 > 10.0.0.1.tftp: 32 RRQ "pxelinux.0" > octet blksize 1456 > > I also tried this on a sokeris box (http://www.soekris.com/net5501.htm) > which has VIA VT6105M 10/100 Mbit interfaces and this time it was > looking for "pxelinux." and also failed. > > I used exactly the same setup on all 3 machines and I'm quite confused > now. What can I be doing wrong?Some old PXE stacks have a bug where they incorrectly include an extra byte in the filename, which happens to be 0xff. It's been a while since I looked at this, so I can't remember if that's actually an end option or comes from some other source, but it's always 0xff. You haven't said what TFTP server you're using, but if it happens to be tftp-hpa, you can use the -m option to specify a map file, and put the following line at the top of the map file: rg (.*)?$ \1 where ? is character 0xff, which is what tcpdump means by "M-^?". You can get this character in vim by typing CTRL-V x f f (see :help i_CTRL-V). Note that depending on how your system is configured, to get the right thing to happen, you may have to :set fileencoding=iso-8859-1. Use hexdump -C to make sure you got what you expected. -- Jeffrey T. Hutzelman (N3NHS) <jhutz+ at cmu.edu> Carnegie Mellon University - Pittsburgh, PA
Geert Stappers
2008-Feb-08 18:48 UTC
[syslinux] pxelinux, pxe requesting bad filename from tftp
On Fri, Feb 08, 2008 at 02:50:14PM +0000, Rek Jed wrote:> Hey,Hello mailinglist,> I have a problem booting certain machines with pxelinux. I have > pxelinux.0 in the root of my tftp server and dhcp pointing to the right > location: > > # dhcpd.conf > authoritative; > option domain-name "example.net"; > ddns-update-style none; > default-lease-time 3600; > max-lease-time 86400; > > subnet 10.0.0.0 netmask 255.255.255.0 { > range 10.0.0.3 10.0.0.20; > server-name "DHCPjumpstart"; > option routers 10.0.0.1; > option domain-name-servers 10.0.0.1; > > # pxelinux > filename "pxelinux.0"; > option bootfile-name "pxelinux.0"; > > option tftp-server-name "10.0.0.1";an IP address as name is odd (but that is not the problem now)> next-server 10.0.0.1; > } > > Some machines boot as expected but some cannot find the boot file in > tftp and exit with TFTP error, file not found. Tcpdump shows the > following: > > 13:06:06.062260 IP 10.0.0.9.2070 > 10.0.0.1.tftp: 33 RRQ > "pxelinux.0M-^?" octet blksize 1456 > 13:06:06.062271 IP 10.0.0.9.2070 > 10.0.0.1.tftp: 33 RRQ > "pxelinux.0M-^?" octet blksize 1456 > > The requested filename seems to have some garbage appended to it. This > is on an old Dell optiplex GX1 with a 3com NIC. Below is an output from > booting an IBM box with an intel NIC that works as expected: > > 13:18:22.289320 IP 10.0.0.18.2070 > 10.0.0.1.tftp: 32 RRQ "pxelinux.0" > octet blksize 1456 > 13:18:22.289332 IP 10.0.0.18.2070 > 10.0.0.1.tftp: 32 RRQ "pxelinux.0" > octet blksize 1456 > > I also tried this on a sokeris box (http://www.soekris.com/net5501.htm) > which has VIA VT6105M 10/100 Mbit interfaces and this time it was > looking for "pxelinux." and also failed. > > I used exactly the same setup on all 3 machines and I'm quite confused > now. What can I be doing wrong?Euh, doing something for the first time can't hardly be doing something wrong. (in other words: this E-mail will not tell you that you did something wrong) What I read in the posting is that there are 3 clients (Dell, IBM & Soekris) And there is a server at address 10.0.0.1. And there might be a fifth computer, the one doing the tcpdump. I think, it is the (DHCP)server that is doing strange things. To check the DHCP server I would run on a client in one session a DHCP client program and in another session dhcpdump[1]> Many thanks,Yes, feedback is allways welcome. Cheers Geert Stappers [1] http://packages.debian.org/lenny/dhcpdump