[syslinux] pxelinux, pxe requesting bad filename from tftp

Jeffrey Hutzelman jhutz at cmu.edu
Fri Feb 8 10:36:58 PST 2008


--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






More information about the Syslinux mailing list