嵌入式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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM