0

我有一块带有 LPC1788、32Mbyte SDRAM、128 Mbyte Nand 闪存的定制板,频率为 108Mhz。我下载了 emcraft uclinux 和网络项目。

问题是busybox udhcpc 命令:

init started: BusyBox v1.17.0 (2014-12-05 16:25:33 CET) 
~ # ifconfig 
~ # udhcpc -f -i eth0 
udhcpc (v1.17.0) started 
Setting IP address 0.0.0.0 on eth0 
Sending discover 0... 
Sending discover 0... 
Sending select for 192.168.0.27... 
Received DHCP NAK 
Sending discover 0... 
Sending select for 192.168.0.27... 
Received DHCP NAK 
Sending discover 0... 
Sending select for 192.168.0.27... 
Received DHCP NAK 
^C 
~ # ifconfig 
eth0 Link encap:Ethernet HWaddr C0:B1:3C:88:88:84 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:37 errors:0 dropped:0 overruns:0 frame:0 
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:1000 
RX bytes:7432 (7.2 KiB) TX bytes:2278 (2.2 KiB) 
Interrupt:28 Base address:0x4000 

~ #

u-boot 不发送 bootargs 网络选项。udhcpc 总是收到 NAK

这是默认脚本:

#!/bin/sh
# udhcpc script edited by Tim Riker

RESOLV_CONF="/etc/resolv.conf"

[ -n "$1" ] || { echo "Error: should be called from udhcpc"; exit 1; }

NETMASK=""
[ -n "$subnet" ] && NETMASK="netmask $subnet"
BROADCAST=""
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"

case "$1" in
deconfig)
echo "Setting IP address 0.0.0.0 on $interface"
ifconfig $interface 0.0.0.0
;;

renew|bound)
echo "Setting IP address $ip on $interface"
ifconfig $interface $ip $NETMASK $BROADCAST

if [ -n "$router" ] ; then
echo "Deleting routers"
while route del default gw 0.0.0.0 dev $interface ; do
:
done

for i in $router ; do
echo "Adding router $i"
route add default gw $i dev $interface
done
fi

echo "Recreating $RESOLV_CONF"
echo -n > $RESOLV_CONF-$$
[ -n "$domain" ] && echo "search $domain" >> $RESOLV_CONF-$$
for i in $dns ; do
echo " Adding DNS server $i"
echo "nameserver $i" >> $RESOLV_CONF-$$
done
mv $RESOLV_CONF-$$ $RESOLV_CONF
;;
esac

exit 0

192.168.0.27 是我路由器的正确 IP 地址,但为什么收到 nak?为什么不工作udhcpc,这是我没有修改的默认项目,我不明白。请给我一个建议!

4

1 回答 1

0

udhcpc 正在做一个发现,并得到一个报价。由于某种原因,当我们请求地址时,dhcp 服务器以 NAK 响应。也许 dhcp 服务器想要一些我们没有请求的特定字段?dhcp 服务器上的日志应该会给出一些想法。如果您没有日志,在另一个节点上运行 tcpdump 可能有助于调试。就像是:

tcpdump -i any -s0 -vvv port 67 or port 68
于 2018-09-13T16:10:50.573 回答