I am currently struggling with an advanced network booting setup. Basic network booting works for me.
I understand that the Pi does not follow the usual PXE/DHCP rules. It took me a while to figure out that it ignores the filename statement. I do not like it but there are workarounds so this is not an issue.
My DHCP server (dhcpd) specifies a next-server (see log below) that contains the IP address of the TFTP server (192.168.160.22). This works fine for regular x86 PXE clients. The Pi does not take this into account and tries to fetch the files via TFTP from the IP that is running the DHCP server (192.168.161.1) but not from the real TFTP server (192.168.160.22).
Is there a way to tell the Pi to use a different TFTP server IP? Which DHCP option do I have to specify?
Thank you for your help!
My setup:
eth0 of Pi3 with bootcode.bin on SD card (IP 192.168.161.23 in the log below) <-> eth1 of DHCP server (IP: 192.168.161.1)
eth0 of DHCP server box (IP: 192.168.160.?) <-> tftp server (IP: 192.168.160.22)
Code: Select all
17:51:45.622864 IP (tos 0x0, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 348)
0.0.0.0.68 > 255.255.255.255.67: [no cksum] BOOTP/DHCP, Request from b8:27:eb:ab:cd:ef, length 320, xid 0x26f30339, Flags [none] (0x0000)
Client-Ethernet-Address b8:27:eb:ab:cd:ef
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Parameter-Request Option 55, length 12:
Vendor-Option, Vendor-Class, BF, Option 128
Option 129, Option 130, Option 131, Option 132
Option 133, Option 134, Option 135, TFTP
ARCH Option 93, length 2: 0
NDI Option 94, length 3: 1.2.1
GUID Option 97, length 17: 0.109.228.137.45.109.228.137.45.109.228.137.45.109.228.137.45
Vendor-Class Option 60, length 32: "PXEClient:Arch:00000:UNDI:002001"
END Option 255, length 0
17:51:45.632253 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.161.23 tell 192.168.161.1, length 28
17:51:46.631645 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.161.23 tell 192.168.161.1, length 28
17:51:46.634642 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328)
192.168.161.1.67 > 192.168.161.23.68: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x26f30339, Flags [none] (0x0000)
Your-IP 192.168.161.23
Server-IP 192.168.160.22
Client-Ethernet-Address b8:27:eb:ab:cd:ef
file "dummy"
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Offer
Server-ID Option 54, length 4: 192.168.161.1
Lease-Time Option 51, length 4: 600
Vendor-Option Option 43, length 20: 82.97.115.112.98.101.114.114.121.32.80.105.32.66.111.111.116.32.32.32
Subnet-Mask Option 1, length 4: 255.255.255.0
END Option 255, length 0
PAD Option 0, length 0, occurs 16
17:51:46.634832 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.161.1 tell 192.168.161.23, length 46
17:51:46.634951 IP (tos 0x0, ttl 64, id 65181, offset 0, flags [DF], proto ICMP (1), length 48)
192.168.161.1 > 192.168.161.23: ICMP echo request, id 25814, seq 0, length 28
17:51:46.635192 ARP, Ethernet (len 6), IPv4 (len 4), Reply 192.168.161.1 is-at 00:00:e8:00:00:01, length 28
17:51:46.635348 IP (tos 0x0, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 55)
192.168.161.23.49153 > 192.168.161.1.69: [no cksum] 27 RRQ "12345678/start.elf" octet
17:51:46.635618 IP (tos 0xc0, ttl 64, id 65279, offset 0, flags [none], proto ICMP (1), length 83)
192.168.161.1 > 192.168.161.23: ICMP 192.168.161.1 udp port 69 unreachable, length 63
IP (tos 0x0, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 55)
192.168.161.23.49153 > 192.168.161.1.69: [no cksum] 27 RRQ "12345678/start.elf" octet