1、首先確認Linux內核編譯生成時選擇了DHCP
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,使make menuconfig,添加以下選項:
Networking Utilities --->
udhcp Server/Client --->
[ ] udhcp Server (udhcpd) //在此不作服務端,www.linuxidc.com故不選。生成udhcpd命令
udhcp Client (udhcpc) //生成udhcpc命令
[ ] Lease display utility (dumpleases)
[ ] Log udhcp messages to syslog (instead of stdout)
[ ] Compile udhcp with noisy debugging messages
若busybox沒編譯相應選項,也可從網上下載相應文件,用arm-linux交叉編譯得到udhcpd,udhcpc命令copy到usr/sbin下就可以了。
說明:有種方法說是從網上下的udhcp_0.9.8cvs20050303.orig.tar.gz文件,解壓後修改Makefile文件,
在19行添加CROSS_COMPILE=arm-linux-
注釋12行的COMBINED_BINARY=1,
否則不生成udhcpc命令。
注:使用0.9.8版本的udhcp貌似也不行,重新編譯Busybox1.9.2版本。
3、使用Busybox下的simple.script,/usr/share/udhcpc/下,並重命名為default.script,修改default.script中RESOLV_CONF="/etc/resolv.conf"為RESOLV_CONF="/tmp/resolv.conf"
說明:從網上下了幾個default.script貌似無法使用,提示無法找到default.script文件,使用上面的方法較好。由於使用Cramfs文件系統,etc目錄不可寫,運行udhcp.c時會提示無法創建resolv.conf
4、將生成的udhcpc復制到開發板/sbin下,在控制台下運行udhcpc即可,很快就可以從DHCP SERVER獲得IP地址。但是有個問題,開發板可以獲得IP地址,在路由器裡也可以看到分配地址了,www.linuxidc.com問題是一使用PING命令,不管是PC 機PING 開發板,還是開發板PING PC 機,就會造成開發板死機。試了好多方法,檢查ROUTE,檢查ARP,修改Default.script ,始終無法解決。