# PXE problems

## ward schmit

My target

I would like to have a diskless node (10.0.0.150) in my network.

What have I done until now?

I followed Gentoos' guide for diskless nodes (http://www.gentoo.org/doc/en/diskless-howto.xml), got DHCP, TFTP, and NFS running as they should be (I suppose). And I did most of it exactly as descriped in the guide.

Except for the ip-addresses and other specific parameters (depending on my network configuration) I did everything the same as in the guide, however, in.tftpd (in /etc/conf.d) is somewhat different due to problems with the NIC in my diskless node (http://www.cti-texas.com/cti-texas/noname5.html):

```
INTFTPD_OPTS="-l -v -s ${INTFTPD_PATH} -r blksize
```

Otherwise it wouldn't communicate as it should with TFTPD. I found the following again and again in the output of tcpdump: "33 RRQ "/pxelinux.0" octet blksiz"

Fortunately I found the workaround for it on: http://syslinux.zytor.com/hardware.php#network under "PXE stacks based on Intel's 0.99 series code". 

So what's your problem?

My diskless node still doesn't boot properly. It gives the message: "Transferring control to bootstrap", and nothing happens.

The tcpdump (#tcpdump host 10.0.0.155 and 10.0.0.150) output on my server (10.0.0.150) is:

```

18:14:57.503862 IP (tos 0x10, ttl  16, id 0, offset 0, flags [none], length: 328) ward0.bootps > 10.0.0.155.bootpc: BOOTP/DHCP, Reply, length: 300, xid:0xc7c58e30, flags: [none]

          Your IP: 10.0.0.155

          Server IP: ward0 [|bootp]

18:14:57.512728 IP (tos 0x10, ttl  16, id 0, offset 0, flags [none], length: 328) ward0.bootps > 10.0.0.155.bootpc: BOOTP/DHCP, Reply, length: 300, xid:0xc7c58e30, flags: [none]

          Your IP: 10.0.0.155

          Server IP: ward0 [|bootp]

18:14:57.513246 arp who-has ward0 tell 10.0.0.155

18:14:57.513312 arp reply ward0 is-at 00:50:da:29:9d:cb

18:14:57.513400 IP (tos 0x0, ttl  20, id 2, offset 0, flags [none], length: 61) 10.0.0.155.2070 > ward0.tftp:  33 RRQ "/pxelinux.0" octet blksiz

18:14:57.514222 IP (tos 0x0, ttl  64, id 33426, offset 0, flags [none], length: 32) ward0.32952 > 10.0.0.155.2070: [bad udp cksum 854c!] UDP, length: 4

18:14:57.514339 IP (tos 0x0, ttl  20, id 3, offset 0, flags [none], length: 32) 10.0.0.155.2070 > ward0.32952: [udp sum ok] UDP, length: 4

18:15:02.513320 arp who-has 10.0.0.155 tell ward0

18:15:03.513167 arp who-has 10.0.0.155 tell ward0

18:15:04.513016 arp who-has 10.0.0.155 tell ward0

```

After that, network activity stops. I searched for "Transferring control to bootstrap" on Google, but it gave only one hit (http://smartdata.usbid.com/datasheets/usbid/readme.pdf). The only thing the document tells me about the message is that in a later revision of the software (Intel LANDesk) the message was removed because it wasn't internationalizable. So, does someone know where I need to search for? Or even beter; a solution for my problem. I think DHCP is working properly, and the node is able to connect to TFTP, isn't it? If you guys want I can post my dhcpd.conf too. Meanwhile I'm trying to find another NIC with PXE-capabilities.

Thanks in advance!

----------

## jamapii

I've never seen this, but I've seen something like "No boot filename received" on an old board.

Installing this

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

DESCRIPTION="pxe server for port 4011"

HOMEPAGE="http://www.kano.org.uk/projects/pxe/"

SRC_URI="http://www.kano.org.uk/projects/pxe/${P}.tar.gz"

RESTRICT=nomirror

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86"

IUSE=""

DEPEND=""

PDEPEND="$DEPEND"

src_compile() {

        econf || die

        emake || die

}

src_install() {

        dosbin pxe

        dodoc README* Changes INSTALL README THANKS

        insinto /etc

        doins pxe.conf

}

```

 running it and using multicast tftp, using something like "route add -net 239.255.0.0 netmask 255.255.255.0 eth1" on the tftp server, solved it. But this may be completely unrelated.

----------

## ward schmit

 *jamapii wrote:*   

> I've never seen this, but I've seen something like "No boot filename received" on an old board.
> 
> Installing this
> 
> ```
> ...

 

It's running multicast already.

I gave it a try on my laptop, a Toshiba Satellite 4600PRO, which has an Intel PRO/100 VE NIC (Intel Boot Agent). It doesn't even see the DHCP, even though I changed the MAC-address in my config (see below). 

```

# dhcpd.conf

ddns-update-style none;

option space PXE;

option PXE.mtftp-ip               code 1 = ip-address;

option PXE.mtftp-cport            code 2 = unsigned integer 16;

option PXE.mtftp-sport            code 3 = unsigned integer 16;

option PXE.mtftp-tmout            code 4 = unsigned integer 8;

option PXE.mtftp-delay            code 5 = unsigned integer 8;

option PXE.discovery-control      code 6 = unsigned integer 8;

option PXE.discovery-mcast-addr   code 7 = ip-address;

default-lease-time 600;

max-lease-time 7200;

deny unknown-clients;

subnet 10.0.0.0 netmask 255.255.255.0 {

}

  class "pxeclients" {

    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";

    option vendor-class-identifier "PXEClient";

    vendor-option-space PXE;

 

    # At least one of the vendor-specific PXE options must be set in

    # order for the client boot ROMs to realize that we are a PXE-compliant

    # server.  We set the MCAST IP address to 0.0.0.0 to tell the boot ROM

    # that we can't provide multicast TFTP (address 0.0.0.0 means no

    # address).

 

    option PXE.mtftp-ip 0.0.0.0;

 

    # This is the name of the file the boot ROMs should download.

    filename "pxelinux.0";

    # This is the name of the server they should get it from.

    # Use the master's IP

    next-server 10.0.0.150;

  }

 #If you are using etherboot with a non specific image

   class "etherboot" {

        if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {

        filename "/diskless/vmlinuz";

        }

  }

# If this DHCP server is the official DHCP server for the local

# network, the authoritative directive should be uncommented.

#authoritative;

# Use this to send dhcp log messages to a different log file (you also

# have to hack syslog.conf to complete the redirection).

log-facility local7;

# No service will be given on this subnet, but declaring it helps the 

# DHCP server to understand the network topology.

host slave {

   hardware ethernet      00:00:39:51:AA:32;

   fixed-address         10.0.0.155;

   server-name         "ward0";

#   option routers         10.0.0.138;

#   option domain-name-servers   10.0.0.138;

   option host-name      "slave";

   option root-path      "/diskless/10.0.0.155";

   if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {

                           filename "/vmlinuz_arch";

        } else if substring (option vendor-class-identifier, 0,9) ="PXEClient" {

                        filename "/pxelinux.0";

        }

}

```

Maybe something is wrong in my config?   :Embarassed: 

----------

