嵌入式linux中使用 DHCP功能描述
嵌入式linux中使用 DHCP功能描述
busybox中udhcpc的默認script腳本地址為
#define DEFAULT_SCRIPT CONFIG_UDHCPC_DEFAULT_SCRIPT
#define CONFIG_UDHCPC_DEFAULT_SCRIPT "/usr/share/udhcpc/default.script"
我想之所以以它作為默認地址,肯定有他的道理,所以在這個地址上創建它[luther.gliethttp]
luther@gliethttp:/vobs/initramfs$ mkdir usr/share/udhcpc/ -p
luther@gliethttp:/vobs/initramfs$ cp ~/busybox-1.14.3/examples/udhcp/simple.script usr/share/udhcpc/default.script
luther@gliethttp:/vobs/initramfs$ chmod +x usr/share/udhcpc/default.script
在/etc/inittab中加入下面一行語句:
::once:"/sbin/udhcpc >/dev/null 2>&1" # udhcpc會退出,所以不能使用respawn,必須為once,1次,否則將一直出現udhcpc重啟log信息
就這樣簡單的幾行ip和dns就能自動獲取了[luther.gliethttp]
其實有些東西就可以放在rcS等啟動腳本中,有些可以到init腳本中去完成.
# /sbin/udhcpc
由于要使用網絡通訊,所以不可避免的要用到dhcp。理想的網絡通訊方式是下面3種都要支持:
1,接入已有網絡。這便要求可以作為dhcp客戶端。
2,作為DHCP服務器,動態分配IP。
3,指定固定IP
第3種情況沒有什么好說的,簡單說下前2種情況。
使用步驟:
(1)在內核的網絡項里面把DHCP配置上;
(2)在busybox里面把[*]udhcp server(udhcpd)
[*]udhcp client(udhcpc)都選上。
udhcpd就是終端設備作為DHCP服務器
udhcpc就是終端設備作為DHCP客戶端
busybox里面對dhcp都已經給出例子了,
[zhh@localhost busybox-1.14.1]$ ls ./examples/udhcp/
sample.bound sample.deconfig sample.nak sample.renew sample.script simple.script udhcpd.conf
比如使用udhcpc時
就可以直接把simple.script拿來使用,改不改名字都可以,busybox里面默認的目錄文件是/usr/share/udhcpc/default.script
可以查看下幫助
# udhcpc --help
BusyBox v1.14.1 (2010-01-22 10:35:16 CST) multi-call binary
Usage: udhcpc [-Cfbnqtvo] [-c CID] [-V VCLS] [-H HOSTNAME] [-i INTERFACE]
[-p pidfile] [-r IP] [-s script] [-O dhcp-option]... [-P N]
-V CLASSID Vendor class identifier
-i INTERFACE Interface to use (default: eth0)
-H,-h HOSTNAME Client hostname
-c CLIENTID Client identifier
-C Suppress default client identifier
-p file Create pidfile
-r IP IP address to request
-s file Run file at DHCP events (default /usr/share/udhcpc/default.script)
-t N Send up to N request packets
-T N Try to get a lease for N seconds (default 3)
-A N Wait N seconds (default 20) after failure
-O OPT Request DHCP option OPT (cumulative)
-o Do not request any options (unless -O is also given)
-f Run in foreground
-b Background if lease is not immediately obtained
-S Log to syslog too
-n Exit with failure if lease is not immediately obtained
-q Quit after obtaining lease
-R Release IP on quit
-P N Use port N instead of default 68
-a Use arping to validate offered address
#
這樣就很好理解了。
下面就說說使用udhcpd,同樣可以直接把busybox自帶的udhcpd.conf作為參考,怎么設置該文件就不詳述了,去參考相關文檔即可。看看udhcpd怎么使用
# udhcpd --help
BusyBox v1.14.1 (2010-01-22 10:35:16 CST) multi-call binary
Usage: udhcpd [-fS] [-P N] [configfile]
DHCP server
-f Run in foreground
-S Log to syslog too
-P N Use port N instead of default 67
幫助一目了然。
我使用的時候直接
#udhcpd /etc/udhcpd.conf
即可。
還有一個租約文件要簡要說說,使用udhcpd時會要求建立一個租約文件,按照提示創建一個就行了,它起什么作用呢?就是為了記錄客戶端所獲得的IP,如果沒有租約文件,則會重新給客戶端分配一個新IP,如果有,則使用原先分配的IP。
http://blog.sina.com.cn/s/blog_6d7e4eba0100r64r.html
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成