交叉编译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外网测试:
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/12839655.html