LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Server (https://www.linuxquestions.org/questions/linux-server-73/)
-   -   PXE Boot issues - TFTP? (https://www.linuxquestions.org/questions/linux-server-73/pxe-boot-issues-tftp-654374/)

xiaodown 07-08-2008 02:24 PM

PXE Boot issues - TFTP?
 
I've read a lot about this, and tried all the troubleshooting steps I've found.

I'm getting the PXE-T01 and FILE NOT FOUND when I attempt to boot the test machine via PXE.


Here's what I have:
Machine A:
10.1.1.1 (eth1; eth0 is plugged into "the internet")
running DHCP / tftp
also NFS for kickstart and apache for serving a repo for installs.

Machine B:
(test machine, on same subnet).
this machine is currently installed and up at 10.1.1.151 just to test things.

My dhcpd.conf file (or the relevant bits of it):
Code:

ddns-update-style none;
ignore client-updates;
allow booting;
allow bootp;

(...)
        host test1 {
                next-server 10.1.1.1;
                filename "pxeboot.0";
                hardware ethernet 00:13:72:51:0E:6A;
                fixed-address  10.1.1.150;
        }

My tftp conf file (/etc/xinetd.d/tftp) relevant bits:
Code:

service tftp
{
        disable = no
        socket_type            = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args            = -s /tftpboot
(... etc)

The contents of /tftpboot:
Code:

[root@install1 tftpboot]# ll -h
total 7.2M
-rw-rw-r-- 1 root root 5.5M Jul  8 10:17 initrd.img
-rw-rw-r-- 1 root root  13K Dec 19  2005 pxelinux.0
drwxr-xr-x 2 root root 4.0K Jul  8 14:23 pxelinux.cfg
-rw-rw-r-- 1 root root 1.8M Jul  8 10:17 vmlinuz

The contents of /tftpboot/pxelinux.cfg/default:
(not that this is that important; I don't think it gets this far)
Code:

default linux
timeout 100

label linux
kernel vmlinuz
append initrd=initrd.img ramdisk_size=7177
IPAPPEND 1


Ok, so now that we've established that I understand that tftp chroots into /tftpboot, and I have my files there, and i'm not referencing it in any sort of funny way, we can test tftp with a tftp client on the test machine.

This is from the test machine:

Code:

[root@localhost tftptest]# ll
total 0
[root@localhost tftptest]# tftp -v 10.1.1.1
Connected to 10.1.1.1 (10.1.1.1), port 69
tftp> get pxelinux.0
getting from 10.1.1.1:pxelinux.0 to pxelinux.0 [netascii]
Received 13246 bytes in 0.1 seconds [1336293 bit/s]
tftp> get vmlinuz
getting from 10.1.1.1:vmlinuz to vmlinuz [netascii]
Received 1820167 bytes in -0.2 seconds [-65259427 bit/s]
tftp> get initrd.img
getting from 10.1.1.1:initrd.img to initrd.img [netascii]
Received 5711760 bytes in 10.8 seconds [4238630 bit/s]
tftp> quit
[root@localhost tftptest]# ll
total 7340
-rw-r--r-- 1 root root 5669675 Jul  8 15:17 initrd.img
-rw-r--r-- 1 root root  13100 Jul  8 15:17 pxelinux.0
-rw-r--r-- 1 root root 1806388 Jul  8 15:17 vmlinuz

so CLEARLY tftp is working.

Also, when I boot the client machine, this shows up in /var/log/messages on the server:
Code:

Jul  8 13:57:19 localhost dhcpd: DHCPDISCOVER from 00:13:72:51:0e:6a via eth1
Jul  8 13:57:19 localhost dhcpd: DHCPOFFER on 10.1.1.150 to 00:13:72:51:0e:6a via eth1
Jul  8 13:57:21 localhost dhcpd: Dynamic and static leases present for 10.1.1.150.
Jul  8 13:57:21 localhost dhcpd: Remove host declaration test1 or remove 10.1.1.150
Jul  8 13:57:21 localhost dhcpd: from the dynamic address pool for 10.1.1/24
Jul  8 13:57:21 localhost dhcpd: DHCPREQUEST for 10.1.1.150 (10.1.1.1) from 00:13:72:51:0e:6a via eth1
Jul  8 13:57:21 localhost dhcpd: DHCPACK on 10.1.1.150 to 00:13:72:51:0e:6a via eth1
Jul  8 13:57:21 localhost xinetd[22656]: START: tftp pid=22976 from=10.1.1.150


And yet, I'm getting the PXE FILE NOT FOUND errors when I attempt to boot the client.

So, if the client is hitting the DHCP server during the PXE process, and spawning a TFTP server, and I know the tftp server works and is transferring files... what gives?


~X

xiaodown 07-08-2008 02:31 PM

update:

Now i'm trying rebooting the client machine, and I'm not seeing the tftp thing in /var/log/messages. That may have been incidental.

But, whenever I reboot, the DHCP stuff does show up in /var/log/messages from the attempted PXE boot.

It just never boots.

All I'm trying to do is get it to the point where, just as if I'd booted off a net-boot CD, it's asking me "hit enter, or type linux text for text install". Once I get it to that point, I'm hoping I can pass it options related to kickstart via the "append" and make it kickstart its self after pxe booting. I've got the kickstart stuff working (boot off a CD with linux ip=dhcp ksdevice=eth0 ks=nfs:server:/path and bam, kickstart works).

Just trying to tie PXE booting into that system.

~X

Chromezero 07-08-2008 03:11 PM

You need to have the actual PXE boot file in /tftpboot/pxelinux.cfg/. It should be a file like "01-00-12-34-56-7d-8d", which is 01-MAC Address. This file contains the basic info for the system to boot with. The file name is the mac address of the machine you're trying to PXE boot. It knows to use this file because it's looking for it's own mac address. The file should look somthing like this...
Code:

default ks
label ks
  kernel fc8/vmlinuz
  append initrd=fc6/initrd.img ks=nfs:192.168.2.101:/kickstart/configs/newmachine.fc8 ksdevice=eth0 network

I'm no expert on the subject, but I kickstart machines on a regular basis and this seems to work for me.
*Edit*
You'll need to change the appropriate variables in the pxe config file. The one shown here is for kickstarting a machine, but should give you some idea of what happens.

xiaodown 07-08-2008 03:36 PM

Quote:

Originally Posted by Chromezero (Post 3207970)
You need to have the actual PXE boot file in /tftpboot/pxelinux.cfg/. It should be a file like "01-00-12-34-56-7d-8d", which is 01-MAC Address. This file contains the basic info for the system to boot with. The file name is the mac address of the machine you're trying to PXE boot. It knows to use this file because it's looking for it's own mac address. The file should look somthing like this...
Code:

default ks
label ks
  kernel fc8/vmlinuz
  append initrd=fc6/initrd.img ks=nfs:192.168.2.101:/kickstart/configs/newmachine.fc8 ksdevice=eth0 network

I'm no expert on the subject, but I kickstart machines on a regular basis and this seems to work for me.
*Edit*
You'll need to change the appropriate variables in the pxe config file. The one shown here is for kickstarting a machine, but should give you some idea of what happens.

Right, as I posted above, I have a file /tftpboot/pxelinux.cfg/default which has those options specified. PXELINUX should look through an entire heirarchy of MAC address-named files, then hex-ip named files, then at the bottom, it should look for the file named "default".

I will try to do this, but I'm not even sure that PXE boot is getting this far in the process, or that it's required. I'll post results in a bit.


~X

Chromezero 07-08-2008 03:42 PM

Ah yes, somehow I missed the bit about your default pxe config file. It seems to me like that should work. I've just never tried it that way.

xiaodown 07-08-2008 03:45 PM

Quote:

Originally Posted by Chromezero (Post 3208001)
Ah yes, somehow I missed the bit about your default pxe config file. It seems to me like that should work. I've just never tried it that way.

I tried it with that file, and I'm not in the datacenter to see what flew by on the console (oh, but for an IP KVM). However, I saw this while tailing /var/log/messages:

Code:

Jul  8 16:39:40 localhost dhcpd: DHCPDISCOVER from 00:13:72:51:0e:6a via eth1
Jul  8 16:39:40 localhost dhcpd: DHCPOFFER on 10.1.1.150 to 00:13:72:51:0e:6a via eth1
Jul  8 16:39:42 localhost dhcpd: Dynamic and static leases present for 10.1.1.150.
Jul  8 16:39:42 localhost dhcpd: Remove host declaration test1 or remove 10.1.1.150
Jul  8 16:39:42 localhost dhcpd: from the dynamic address pool for 10.1.1/24
Jul  8 16:39:42 localhost dhcpd: DHCPREQUEST for 10.1.1.150 (10.1.1.1) from 00:13:72:51:0e:6a via eth1
Jul  8 16:39:42 localhost dhcpd: DHCPACK on 10.1.1.150 to 00:13:72:51:0e:6a via eth1
Jul  8 16:39:42 localhost xinetd[25496]: START: tftp pid=25825 from=10.1.1.150


but, alas, in the end it booted to the disk os, and the test machine is back up at its old IP.

It may have wanted me to do something on the console, though, so I'll check on that tomorrow.

~X

xiaodown 07-08-2008 04:05 PM

from the dhcpd.conf file:

filename "pxeboot.0";



oh you've got to be effing kidding me.

I'm trying it now.

~X

xiaodown 07-08-2008 04:15 PM

Quote:

Originally Posted by xiaodown (Post 3208032)
from the dhcpd.conf file:

filename "pxeboot.0";



oh you've got to be effing kidding me.

I'm trying it now.

~X

Yah.

Fixed.

*facepalm*

Chromezero 07-08-2008 06:19 PM

Ahh, I completely overlooked that! Glad to hear it's working though.


All times are GMT -5. The time now is 02:57 PM.