我有一个定制板,带有LPC1788,32Mbyte SDRAM,128Mbyte Nand闪存,108Mhz。我下载了emcraft uclinux和网络项目。
poroblem是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不是send 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,这是我不修改的默认项目,我不明白。请给我一个建议!
udhcpc正在做一个发现,并获得报价。出于某种原因,当我们要求地址时,dhcp服务器正在响应NAK。也许dhcp服务器想要一些我们没有请求的特定字段?登录dhcp服务器应该给出一些想法。如果您没有日志,则在另一个节点上运行tcpdump可能有助于调试。就像是:
tcpdump -i any -s0 -vvv port 67 or port 68