Linux – PXE boot — kernel not found on TFTP server

installationlinuxpxe-boot

I followed the following link for PXE boot,
http://www.howtoforge.com/setting-up-a-pxe-install-server-on-ubuntu-9.10-p3

and I was able to ping the client from the server and also when I booted up the client It is getting the IP address from the server.

But later,I got this error

PXELinux 3.82 2009-06-09
. . . [other informations]
!PXE Entry point found (we hope) at 9D3B:0109 via plan A
UNDI code segment at 9D3B len 16C2
UNDI data segment at 933B len A000
Getting cached packet 01 02 03
. . . [other informations]
TFTP prefix:
Trying to load: pxelinux.cfg/ec5db4c0-74fe-d511-b9e7-3d9235afe5a1
Trying to load: pxelinux.cfg/01-00-17-31-b6-5e-a8
Trying to load: pxelinux.cfg/0A64491E
Trying to load: pxelinux.cfg/0A64491
Trying to load: pxelinux.cfg/0A6449
Trying to load: pxelinux.cfg/0A644
Trying to load: pxelinux.cfg/0A64
Trying to load: pxelinux.cfg/0A6
Trying to load: pxelinux.cfg/0A
Trying to load: pxelinux.cfg/0
Trying to load: pxelinux.cfg/default
Unable to locate configuration file
Boot failed: press a key to retry or wait for reset

I have put all the files mentioned in the link in tftpboot.
Can anyone explain what could be the problem.

Best Answer

You may try to run tcpdump (or wireshark) on the boot server and see what the client is asking for. Personally, I like to see what's running on the wire as it's truth, whole truth and only truth ;) and it helps me to determine what's really going on.

Speaking of permissions -- remember about directory permissions too. The process has to have execute (x) permission to the directory to be able to get inside that directory (think: cd /path/x) and read (r) permission to read its content (think: ls /path/x). The execute bit is a must-have, and read permission for the user the tftpd daemon runs shouldn't hurt either.

Next thing, you may add -vvvv to the options inside /etc/default/tftpd-hpa file and restart the server. This will increase logging level of the tftpd-hpa daemon and may give you extra tips as to the root of the problem (take a look inside /var/log/messages).

Another idea: try to get the file your client wants by tftp (you will get what the client wants by listening to what runs on the wire) from the tftp server. If you can download the file, then you are sure, that your tftp server works, files are there, paths are correct and permissions are proper. If there are any other problems, they are on the client side (or client-server protocol mismatch).

Last thing: I do not like the HOWTO's recommendation of making /tftpboot directory world writeable. After you get the setup working remove write permission from the directory. A rogue client can easily fill up the filesystem your /tftpboot directory resides on -- there is no authentication built in into the protocol (hence "trivial" ftp).

Hope the wall of text helps ;)

Related Topic