环境
内核版本:linux 3.10.14
busybox版本:v1.22.1
开发板:dhcp 客户端
路由器:dhcp 服务器
配置内核
- make menuconfig
[*] Networking support --->
Networking options --->
<*> Packet socket
<*> Unix domain sockets
[*] TCP/IP networking
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] Network packet filtering framework (Netfilter) --->
配置busybox
- make menuconfig
Networking Utilities --->
[*] udhcp client (udhcpc)
[*] udhcp server (udhcpd) (dhcp 服务器可以不配)
建立配置文件
- cd /busybox/examples/udhcp/
- cp simple.script /usr/share/default.script
- (/usr/share/开发板的路径)
- /usr/share/default.script为 udhcpc运行处理的默认脚本
运行
- 开机自启:在/etc/init.d/rcS 添加udhcpc命令(/sbin/udhcpc )
- 手动运行:上电,在板子运行后直接执行udhcpc命令
其他
- 使用dhcp服务时需要一个dhcp服务器,一般是板子做客户端,路由器做dhcp服务器,自动给板子分配IP。
- udhcpc 如果检测不到dhcp服务器会一直“Sending discover...” 导致程序阻塞,可结合udhcpc命令做一些定制化处理
- dhcp 租约到期后,需要重新续租,否则IP可能会被其他设备使用。同时租约到期后会有短暂的网络离线。
Usage: udhcpc [-fbqvaRB] [-t N] [-T SEC] [-A SEC/-n] [-i IFACE] [-s PROG] [-p PIDFILE] [-oC] [-r IP] [-V VENDOR] [-F NAME] [-x OPT:VAL]... [-O OPT]...
常用参数:
- udhcp -i eth0
- udhcp -i eth0 -s ./default.script(指定dhcp处理文件)
- udhcp -q -i eth0 -s ./default.script(获取IP后退出dhcpc)
- udhcp -n -i eth0 -s ./default.script(获取失败退出dhcpc)
- udhcp -nq -i eth0 -t 6 -s ./default.script(重复发送6次)
- udhcpc -b -i eth0 -p /var/run/udhcpc.pid -R 后台运行(-R 退出租约)
- udhcpc -r 重新续租