Next Previous Contents

7. TFTP

PXE requires a special TFTP server. Read pxelinux.doc from the already mentioned syslinux package for details.

In an earlier version of this document I suggested using tftp-hpa started from xinetd. This combination of tools cannot reliably handle much more than 64 clients at a time! With more clients not all of them will get an answer from your TFTP and you will see syslog messages like this: tftpd: read: Connection refused.

Update: Per H. Peter Anvin, the problem with tftp-hpa should be fixed with version 0.17. I haven't tried it myself, though.

To overcome this problem I am now using atftp from ftp://ftp.mamalinux.com/pub/atftp/. This TFTP server can run as stand-alone daemon which is the mode I am using.

Grab the source and compile it. It should compile just fine on Red Hat Linux.

Start the daemon on your TFTP server with some options:

/usr/sbin/atftpd --daemon --no-multicast --group nobody --tftpd-timeout 0 -m 1000 /tftp

Depending on your local group definitions you may not need to change the group ID the daemon is running under. The default group it uses is nogroup.

The TFTP server directory /tftp should look like this:

/tftp/initrd-6.2.img
      initrd-7.2.img
      pxelinux.0
      vmlinuz-6.2
      vmlinuz-7.2
      Kickstart_end

/tftp/pxelinux.cfg/C0A8000B -> default.netboot-7.2
                   C0A8000C -> default.netboot-6.2
                   default
                   default.netboot-6-2
                   default.netboot-7.2

See Section Linux Kernel, Initial RAM disk for how to get the files vmlinuz-6.2, vmlinuz-7.2, initrd-6.2.img, and initrd-7.2.img.

If you want to use the script described in Section A useful script, you should have the empty file Kickstart_end in your TFTP directory:

touch /tftp/Kickstart_end

If you are again, as for the DHCP server, concerned about stability of your TFTP server you can, again, put your /tftp/ directory in a shared file system (like NFS or AFS) and have all your TFTP servers access this shared space. The method for preventing endless re-installation loops of your clients describe in Section A useful script will work even in this setting.


Next Previous Contents