I was trying to get my Beagle Bone Black booting from BOOTP following the instructions from:
Everything seems file, netstat was showing the ports 67, 68 and 69 LISTENing and even the /var/log/syslog was showing the board was getting IP:
2025-08 server dhcpd[3611]: reuse_lease: lease age 1653 (secs) under 25% threshold, reply with unaltered, existing lease for 192.168.2.2
2025-08 server dhcpd[3611]: BOOTREQUEST from 68:e7:4a:c7:d7:09 via eth0
2025-08 server dhcpd[3611]: BOOTREPLY on 192.168.2.2 to 68:e7:4a:c7:d7:09 via eth0
Using tcpdump I noticed that the BOOTP was going, but the TFTP RRQ (Read Request) never was called:
$ sudo tcpdump -i eth0 port 67 or port 68 or port 69 -n -vv tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 08:34:51.742019 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 392) 0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 68:e7:4a:c7:d7:09, length 364, xid 0x1, Flags [none] (0x0000) Client-Ethernet-Address 68:e7:4a:c7:d7:09 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 Vendor-Class (60), length 10: "AM335x ROM" Client-ID (61), length 81: hardware-type 5, 01:05:01:81:40:07:03:13:02:01:00:12:15:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:14:21:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:15:09:01:86:3d:37:8a:00:00:00:00 08:34:51.742560 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 328) 192.168.2.1.67 > 192.168.2.2.68: [udp sum ok] BOOTP/DHCP, Reply, length 300, xid 0x1, Flags [none] (0x0000) Your-IP 192.168.2.2 Client-Ethernet-Address 68:e7:4a:c7:d7:09 file "u-boot-spl.bin" Vendor-rfc1048 Extensions Magic Cookie 0x63825363 Subnet-Mask (1), length 4: 255.255.255.0 Domain-Name (15), length 11: "example.org" 08:34:54.758960 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 392) 0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 68:e7:4a:c7:d7:09, length 364, xid 0x1, Flags [none] (0x0000) Client-Ethernet-Address 68:e7:4a:c7:d7:09 Vendor-rfc1048 Extensions Magic Cookie 0x63825363 Vendor-Class (60), length 10: "AM335x ROM" Client-ID (61), length 81: hardware-type 5, 01:05:01:81:40:07:03:13:02:01:00:12:15:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:14:21:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:15:09:01:86:3d:37:8a:00:00:00:00
Then after much searching and ChatGPTing I found the solution: I need to include “next-server 192.168.2.1;” otherwise the board never will know the TFTP server IP. But that is strange because on my other computer runing Ubuntu server I don’t need to include it.
Basically my dhcp.conf not this next-server and everything works as expected:
next-server 192.168.2.1;
subnet 192.168.2.0 netmask 255.255.255.0
{
range dynamic-bootp 192.168.2.2 192.168.2.100;
if substring (option vendor-class-identifier, 0, 10) = "AM335x ROM"
{
filename "u-boot-spl.bin";
}
elsif substring (option vendor-class-identifier, 0, 10) = "DM814x ROM"
{
filename "u-boot-spl.bin";
}
elsif substring (option vendor-class-identifier, 0, 10) = "AM43xx ROM"
{
filename "u-boot.img";
}
elsif substring (option vendor-class-identifier, 0, 17) = "AM335x U-Boot SPL"
{
filename "u-boot.img";
}
elsif substring (option vendor-class-identifier, 0, 10) = "AM43xx U-B"
{
filename "u-boot.img";
}
else
{
filename "zImage";
}
range 192.168.2.101 192.168.2.199;
}