linux WiFi源码解析,Wifi移植浅析
作者:熊老師,
大家都知道在做wifi的移植過程中主要是涉及到移植三個東西,一個openssl的移植,一個wpa_suplicant的移植。還有一個就是添加咱們的wifi驅動了,咱們這里使用的rt8192cu.ko。這三個家伙搞定了,咱們的wifi就可以使用了哦。
一 、openssl的移植
我們先來搞清楚openssl是干什么的,為甚么要移植它?帶著這些問題咱們往下看吧!
Openssl是為網絡通信提供安全及數據完整性的一種安全協議,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協議,并提供了豐富的應用程序供測試或其它目的使用。SSL是Secure
Socket Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。源碼下載網站 http://www.openssl.org/source/,咱們用的源碼是openssl-0.9.8e.tar.gz
1.1 解壓源碼
tar xvf openssl-0.9.8e.tar.gz
1.2 給源碼打補丁
openssl源碼編譯需要打wpa_supplicant提供的補丁,我們選擇的openssl版本為openssl-0.9.8e,所以我們要拷貝wpa_supplicant-0.7.2/patches/
openssl-0.9.8e-tls-extensions.patch拷貝到openssl-0.9.8e源碼下。
(在wifi目錄下新建一個openssl目錄)
patch –p1
< openssl-0.9.8e-tls-extensions.patch
1.3配置編譯安裝
./Configure linux-elf-arm
-DL_ENDIAN linux:'arm-none-linux-gnueabi-gcc' shared
--prefix=/home/linux/workdir/wifi/openssl //要視具體路徑而定
make
make
install
這些都是咱們移植手冊上提供的,那么咱們來看看這些參數的含義和這么運用他們的根據。
Linux-elf-arm 表示咱們的平臺是arm,下見圖中INSTALL
-DL_ENDIAN 調試
Linux:‘arm-none-linux-gnueabi-gcc’咱們編譯使用的交叉工具鏈
Shared:生成共享庫
--prefix:就是咱們的安裝路徑,
當然以上的這些參數都是可以調整的,其實這些東西都可以在Makefile INSTALL
README中尋找到的,官方文檔為咱們的配置移植,都提供了詳細的解釋說明的,所以移植不要怕,查看官方文檔就ok的了
二、wpa_suplicant 移植
上面咱們說了openssl就是一個加密的東東,那么wpa_suplicant簡單的說,就是WiFi驅動和用戶的中轉站外加對協議和加密認證的支持。
具體的移植步驟如下:
進入~/workdir/wifi/wpa_supplicant-0.7.2/wpa_supplicant目錄下
makefile修改
下列路徑要視具體情況而定
添加
CC=arm-none-linux-gnueabi-gcc
在
CFLAGS
= -I../src
CFLAGS
= -I../src/utils
下添加:
CFLAGS
= -I/home/linux/workdir/wifi/openssl/include
修改
LIBS
= -lssl
為
LIBS
= -lssl -L/home/linux/workdir/wifi/openssl/lib/
修改
LIBS_p
= -lcrypto
為
LIBS_p
= -lcrypto -L/home/linux/workdir/wifi/openssl/lib/
對于makefile的修改的就不用多說了嗎,如果你有寫的不對的地方,你編譯的時候,它直接就會給出錯誤的提示,根據錯誤提示,鎖定錯誤的源頭,改正即可。
編譯
cp defconfig .config
make
編譯后將產生的wpa_supplicant和wpa_cli拷貝到根文件系統的bin目錄下(/source/rootfs/bin)
三、加載insmod rt8192cu.ko的驅動到開發板上去。
在這里咱們就不詳細說了,因為內核中有都有相應的源碼,編譯后即可有相應的驅動模塊了。
四、wifi的測試
前面三步搞定,咱們的wifi移植,基本上搞定了,剩下的就是怎么了進行測試了。
第一個就是配置咱們的/etc/resolv.conf文件中的nameserver了
1、 在根文件中添加/etc/resolv.conf(/source/rootfs/etc/resolv.conf)
內容為:
# Generated by
NetworkManager
nameserver
202.96.64.68
2、
在根文件系統/etc(/source/rootfs/etc)下添加wpa_supplicant配置文件wpa-psk-tkip.conf
內容為:
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="XXXX"
#無線路由ssid //farsight
key_mgmt=WPA-PSK
proto=WPA
pairwise=CCMP
group=CCMP
psk="XXXXXXXX"
#無線路由密碼 //12345678
}
這個配置文件咱們是怎么來的呢,大家可以看看README和
在這個example目錄下,給出了相應的配置的例子
3、 創建目錄/var/run/wpa_supplicant
mkdir /var/run/wpa_supplicant
-p
4、 啟動開發板完成如下操作
配置無線網卡ip
ifconfig wlan0 192.168.0.200
配置默認網關
route add default gw
192.168.0.1
啟動wpa_supplicant連接無線網絡
wpa_supplicant -B -iwlan0 -c
/etc/wpa-psk-tkip.conf
查看連接狀態
wpa_cli status
后面的啟動wifi,查看工作狀態呀,這些信息都是從哪里來的,你上網搜索發現,每個人寫的參數各不相同。那么我們還是來看看官方的配置。
總結
以上是生活随笔為你收集整理的linux WiFi源码解析,Wifi移植浅析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uboot修改linux源码中参数,将自
- 下一篇: linux usb 重启,在ubuntu