目录
一、在自己制作的rootfs中移植网卡
1、确认自己制作的rootfs可正常工作并启动
(1)busybox交叉编译制作根文件系统
(2)启动后直接nfs方式挂载文件夹形式的rootfs,测试ok后再做成镜像烧录
(3)挂载参数bootargs:
#设置启动参数
setenv bootargs root=/dev/nfs nfsroot=192.168.1.141:/root/rootfs ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200
#设置开机自启动命令
set bootcmd 'tftp 30008000 zImage; bootm 30008000'
2、需要的工具集确认
(1)iwconfig工具集:另外移植的,不是busybox中的(我们上边使用的根文件系统是我使用busybox制作的)
查看命令在哪:which iwconfig
然后:ls -al 看看是否指向busybox,若是则是其的一个链接,若不是则不是busybox的
(2)dhcp工具集:是busybox中集成的,确认busybox的menuconfig中配置支持了这个
(3)wpa_supplicant工具集:另外移植的,不是busybox中的
3、交叉编译iwconfig
(1)源码下载
https://hewlettpackard.github.io/wireless-tools/Tools.html#latest
(2)修改Makefile进行配置
配置一:设置软件的安装目录(make install),我设为了/home/rootfs
PREFIX = /home/rootfs
ifndef PREFIX
PREFIX = /usr/local
endif
配置二:
CC = arm-linux-gcc
AR = arm-linux-ar
RANLIB = arm-linux-ranlib
配置三:我并未修改,但这设置要清楚,便于以后的开发,动态库与静态库
# Select which library to build and to link tool with
ifdef BUILD_STATIC
IWLIB=$(STATIC)
IWLIB_INSTALL=install-static
else
IWLIB=$(DYNAMIC)
IWLIB_INSTALL=install-dynamic
endif
(3)交叉编译
make
file iwconfig #根据打印出的信息可知是动态链接生成的 (dynamically linked)
(4)部署安装
make install
(5)测试
iwconfig ra0 // 可查看到该无线网卡的相关信息,如名称等,若要修改则修改
// /etc/Wireless/RT2870STA/RT2870STA.dat文件
iwlist ra0 scanning //搜索当前环境可以使用的无线网络
二、移植wpa_supplicant并制作镜像
https://www.cnblogs.com/wanglouxiaozi/p/12829235.html
1、交叉编译 wpa_supplicant
(1)下载wpa_supplicant源码并配置编译。参考http://blog.csdn.net/hktkfly6/article/details/48949863
我使用的是wpa_supplicant-2.6.tar.gz:
tar -zxvf wpa_supplicant-2.6.tar.gz
cd wpa_supplicant-2.6
cd wpa_supplicant
vi README #在其中查看符合这个版本的openssl进行下载
/**************************************************************************/
ptional libraries for EAP-TLS, EAP-PEAP, and EAP-TTLS:
- OpenSSL (tested with 1.0.1 and 1.0.2 versions; assumed to
work with most relatively recent versions; this is likely to be
available with most distributions, http://www.openssl.org/)
/**************************************************************************/
(2)下载配套版本的openssl并配置编译
我使用的是 openssl-1.0.1.tar.gz
1、tar -zxvf openssl-1.0.1.tar.gz
2、cd openssl-1.0.1
3、mkdir install //建立一个安装目录
4、vi Makefile //修改Makefile
CC=arm-linux-gcc
AR=arm-linux-ar$(ARFLAGS) r
RANLIB=arm-linux-ranlib
INSTALLTOP=建立的安装目录,要使用绝对路径,不然在make install的时候会出错
OPENSSLDIR=建立的安装目录,要使用绝对路径,不然在make install的时候会出错
5、报错:make: *** [install_docs] Error 255
修改Makefile中的选项,doc是用于生成man手册的,可以不用
install: all install_sw
至此所需的openssl已配置好,返回之前(1)配置wpa_supplicant继续操作
1、cd /home/usb_network_card/wpa_supplicant-2.6/wpa_supplicant
首先建立配置文件:
2、cp defconfig .config
然后修改Makefile:
CC=arm-linux-gcc
CFLAGS+=-I openssl安装目录/include
LIBS+=-Lopenssl安装目录/lib
3、make
再次出现报错:../src/drivers/driver_nl80211.c:17: fatal error: netlink/genl/genl.h: No such file or directory,表明缺少libnl库,具体操作可参考
(1)去掉配置NL相关的选项省去移植libnl。参考:http://www.cnblogs.com/helloworldtoyou/p/6145995.html
下载网址:https://www.linuxfromscratch.org/blfs/view/svn/basicnet/libnl.html
(2)我们选择修改.config文件,注释掉
# Driver interface for Linux drivers using the nl80211 kernel interface
CONFIG_DRIVER_NL80211=y#注释掉,我们没用到这个
4、再次make,就会我们需要的那两个程序:wpa_cli wpa_supplicant
5、将这两个程序移植到开发板的/usr/bin目录下,进行测试
命令行能否运行,若不能,在ubuntu中 file 生成的可执行程序名,查看程序是否是动态链接,若是,则无法执行可能是所用的动态链接库没找到。
2、在nfs中测试wpa_supplicant使用
wpa_supplicant这个文件会自动创建,但目录我们要手动创建。
mkdi -p /var/run/
chmod -R 777 /var/ 要有足够的权限
移植成功后,仍需按照之前上篇文章《USB WIFI网卡在S5PV210上的移植和使用最全攻略(1)》所讲的内容进行配置。
3、制作ext2镜像并刷机测试
附:/etc/wpa_supplicant.conf文件内容:
ctrl_interface=/var/run/wpa_supplicant
network={
key_mgmt=WPA-PSK
ssid="zhulaoshi"
psk="www.zhulaoshi.org"
}
移植成功后,仍需按照之前上篇文章《USB WIFI网卡在S5PV210上的移植和使用最全攻略(1)》所讲的内容进行配置。
注:本文章参考了《朱老师物联网大讲堂笔记》,并结合了自己的实际开发经历以及网上他人的技术文章,综合整理得到。如有侵权,联系删除!水平有限,欢迎各位在评论区交流。