嵌入式Linux通过DHCP自动获取IP地址的方法
嵌入式inux通过DHCP自动获取IP地址1.?
Networking? --- [*] Networking support Networking options? --- * Packet socket //添加.配置CONFIG_PACKET [ * ] IP: DHCP support //添加 [ * ] Network packet filtering replaces ipchains ? --- //添加,后面子选项可不选,配置CONFIG_NETFILTER
说明:若没选 * Packet socket, [ * ] Network packet filtering replaces ipchains ? --- 选项,在执行udhcpc命令时出现如下错误:
~ # udhcpc
udhcpc v0.9.9-pre started
udhcpc[208]: udhcpc v0.9.9-pre started
FATAL: couldn't listen on socket, Address family not supported by protocol
udhcpc[208]: FATAL: couldn't listen on socket, Address family not supported by protocol
2.? Busybox中添加以下选项:
Networking Utilities? --- udhcp Server/Client? --- [] udhcp Server udhcpd //在此不作服务端,故不选。生成udhcpd命令 [*] udhcp Client udhcpc //生成udhcpc命令 [ ] Lease display utility dumpleases [ ]?? Log udhcp messages to syslog instead of stdout [ ]?? Compile udhcp with noisy debugging messages
3.?
从busybox的examples/udhcp/下copy ?simple.script文件到开发板/usr/share/udhcpc/下,并重命名为default.script,udhcp_0.9.8cvs座机电话号码.orig.tar.gz中也有这样的文件。
[root@localhost root]# vi usr/share/udhcpc/default.script
#!/bin/sh
# udhcpc script edited by Tim Riker Tim@Rikers.org
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
RESOLV_CONF "/etc/resolv.conf"
[ -n "$broadcast" ] && BROADCAST "broadcast $broadcast"
[ -n "$subnet" ] && NETMASK "netmask $subnet"
case "$1" in deconfig /sbin/ifconfig $interface 0.0.0.0 ;; renew|bound /sbin/ifconfig $interface $ip $BROADCAST $NETMASK 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 route add default gw $i dev $interface done fi echo -n $RESOLV_CONF [ -n "$domain" ] && echo search $domain $RESOLV_CONF for i in $dns ; do echo adding dns $i echo nameserver $i $RESOLV_CONF done ;;
esac
exit 0
4.? udhcpc就可自动获取IP地址了,以下是执行udhcpc的输出信息:
~ # udhcpc
udhcpc v0.9.9-pre started
udhcpc[228]: udhcpc v0.9.9-pre started
Sending discover...
udhcpc[228]: Sending discover...