dhcp-4.2.5-P1.tar.gz 下載鏈接:https://www.isc.org/downloads/
編譯安裝DHCP
cd /root/wifi tar -xvf dhcp-4.2.5-P1.tar.gz
cd dhcp-4.2.5-P1
mkdir build
1)配置編譯選項
./configure --host=arm-linux ac_cv_file__dev_random=yes
2)修改bind目錄下Makefile
cd bind
vim Makefile
在configure后加上如下幾項:
BUILD_CC=gcc ac_cv_file__dev_random=yes --host=arm-linux
修改完成如下所示:
3)解壓bind.tar.gz並修改相關文件
tar -xvf bind.tar.gz cd bind-9.8.4-P2/ vim lib/export/dns/Makefile.in
gen: ${srcdir}/gen.c
${CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
改為:
gen: ${srcdir}/gen.c
${BUILD_CC} ${ALL_CFLAGS} ${LDFLAGS} -o $@ ${srcdir}/gen.c ${LIBS}
BUILD_CC為編譯機器的平台使用的編譯器,之所以為gcc是因為在交叉編譯dhcp時會生成一些中間文件,需要在編譯機器上運行,編譯機器為x86_64平台,所以BUILD_CC=gcc。
4)編譯安裝
cd ../.. make make DESTDIR=$PWD/build install
這時 ls build/usr/local/ 顯示如下:
bin etc include lib sbin share
把build/usr/local/bin目錄下的所有內容拷貝到開發板的/bin目錄下;
把build/usr/local/sbin目錄下的所有內容拷貝到開發板的/sbin目錄下;
把build/usr/local/etc/dhclient.conf.example拷貝到開發板並重命名/etc/dhclient.conf;
把build/usr/local/etc/dhcpd.conf.example拷貝到開發板並重命名/etc/dhcpd.conf;
把client/scripts/linux拷貝到開發板並重命名為/etc/dhclient-script ,執行一下命令給dhclient-script加上可執行權限:chmod +x /etc/dhclient-script,並修改#!/bin/bash為#!/bin/sh。
DHCP使用
mkdir -p /var/db wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0
使用 wpa_cli -iwlan0 status查看wifi的連接狀態,wpa_state=COMPLETED表示連接完成。
使用以下命令:
dhclient wlan0
動態獲取wifi的IP地址。
一接入WIFI網卡,自動執行wpa_supplicant和獲取IP
1) 添加mdev規則文件
vi /etc/mdev.conf
mdev.conf內容如下:
wlan0 0:0 777 * /sbin/auto_wifi.sh
auto_wifi.sh腳本的內容如下:
#!/bin/sh if [ $ACTION = "add" ]; then wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0 wpa_cli -a/sbin/wpa_action.sh -B else killall wpa_supplicant killall wpa_cli killall dhclient fi
然后執行chmod +x /sbin/auto_wifi.sh給腳本加上可執行權限。
2)一連接上WIFI AP, 就自動執行dhclient
創建腳本/sbin/wpa_action.sh:
#!/bin/sh IFNAME=$1 CMD=$2 if [ "$CMD" = "CONNECTED" ]; then echo connect $IFNAME, dhclient for it > /dev/console dhclient $IFNAME fi if [ "$CMD" = "DISCONNECTED" ]; then echo disconnect $IFNAME, kill dhclient for it > /dev/console killall dhclient fi
執行chmod +x /sbin/wpa_action.sh給腳本加上可執行權限。
這樣的話,開發板一接入WIFI網卡,就會自動連接熱點,並給wlan0自動分配好IP地址。
3)網絡連通性測試
/ # cat /etc/resolv.conf search fugue.com. home.vix.com. nameserver 127.0.0.1 nameserver 192.168.1.1 nameserver 192.168.0.1
查看/etc/resolv.conf,發現DNS也自動配置好了。
ping外網測試: