在一些网络环境下,需要静态IP不够现实,需要使用DHCP进行自动获取IP地址。
udhcpc是一个面向嵌入式系统的非常小的DHCP客户端,字母的缩写微μ- DHCP -客户端client(μDHCPc)。
前提:在KERNEL中需要将 Packet socket(CONFIG_PACKET)和IP: DHCP support(CONFIG_IP_PNP_DHCP)编译进内核或编译成模块。
在内核中添加以下选项:
Networking --->
[*] Networking support
Networking options --->
<* > Packet socket //添加:配置 CONFIG_PACKET
[ * ] IP: DHCP support //添加:配置 CONFIG_IP_PNP_DHCP
[ * ] 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
busybox移植 udhcp
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
编译完成后,busybox就会支持udhcpc(客户端)功能。
如何运行dhcp?
需要把busybox源码中的/examples/udhcp/simple.script 下载到开发板(例如下载到/home目录)上。
并执行
udhcpc -i wlan0 -s /home/simple.script (wlan0是自己的网卡名称)
默认操作
udhcpc默认读取开发板上/usr/share/udhcpc/default.script文件,因此,也可以
mkdir /usr/share/udhcpc/
cp simple.script /usr/share/udhcpc/default.script
chmod +x /usr/share/udhcpc/default.script
udhcpc -i wlan0