歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 嵌入式Linux系統下使用DHCP 為開發板自動分配IP地址

嵌入式Linux系統下使用DHCP 為開發板自動分配IP地址

日期:2017/2/28 16:25:08   编辑:Linux教程

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 ,始終無法解決。

Copyright © Linux教程網 All Rights Reserved