交叉编译DHCP4.2.5:使得WIFI网卡动态获取IP

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外网测试:

 

posted @ 2020-05-06 22:52  闹闹爸爸  阅读(1464)  评论(0编辑  收藏  举报