开发版linux随身wifi,让linux下无线网卡变身随身wifi
最痛苦的事莫過于--上班
最最痛苦的事莫過于--上班有網不能上
最最最痛苦的事莫過于--上班有網能上卻沒有wifi
最最最最痛苦的事莫過于--你有無線網卡卻沒有U口可插
最最最最最痛苦的事莫過于--有U口插卻發現U口只在開發板上
最最最最最最痛苦的事莫過于--開發板上有u口但是跑的是linux
最最最最最最最痛苦的事莫過于--linux能驅動網卡,但是如何共享出wifi來啊
于是,,,,為了不讓以上這些人繼續痛苦,我嘗試著解救一下他們!!!!!阿彌陀佛,保佑成功!!
準備:
當我發現自己有一個s5pv210開發板,有一個ralink 150M的無線網卡(辦公柜里面找到的的應該是N多年前前輩留下的),然后,還有人一個
本以為很快就可以解決這個問題,沒有想到,弄了我整整2天2夜(有了這個
iw ; openssl ; libnl; ?hostapd ; iptables ; ?udhcpd
還有內核支持配置(為了確保上面的東西能用,后面移植的時候會介紹到),沒有linux內核源碼的,慎重,喝喝。
動一次打一次,動一次打一次,地刺大慈,東磁大慈,悠悠豈可鬧,let's go
第一步、檢查你的網線網卡擁有夠成為熱點的能力
你是猴子請來的救兵嗎?不是,我是iw
iw命令可以檢測出你的網卡是否具有熱點功能,但是iw沒有在linux系統中自帶,所以我們需要移植它
1、下載
到處找源碼,最后在GIT中找到了
都說這里有,現在這個路徑已經沒有資源了http://linuxwireless.org/download/iw/iw-3.7.tar.bz2
可以在GIT中可以找到iw的源碼
http://git.sipsolutions.net/iw.git/
通過GIT工具即可下載IW源碼 (GIT工具的使用這里就不介紹了)
apt-get install git
完成下載后得到iw目錄
觀看REDEME發現需要依賴另外一個庫 libnl
http://www.infradead.org/~tgr/libnl/
這里可以下載,當時下載的最新版本3.2,結果出現了問題(后面會提到),可以下載1.1版本就行了
解壓libnl并編譯
tar zxvf libnl-3.2.24.tar.gz
./configure --prefix=/絕對路徑 CC=arm-linux-gcc --host=arm
make
make install
生成的庫將在上面指定的 /絕對路徑 中出現 ,待會用于連接
2、編譯iw
需要配置環境變量,因為前面的庫在編譯的時候需要連接
例如: export PKG_CONFIG_PATH=絕對路徑/lib/pkgconfig:$PKG_CONFIG_PATH
在iw解壓好的目錄下執行下面兩條命令(注意export的路徑要和你生成libnl庫的路徑一致)
export PKG_CONFIG_PATH=/home/edu/share/wifi/iw/nlinstall/lib/pkgconfig:$PKG_CONFIG_PATH
make CC=arm-linux-gcc
不需要make install的不出問題就完成事情了
如果編譯不過 可以用root用戶編譯
通常是不會有問題的,但是我的出問題了
錯誤
CC info.o
info.c: In function 'print_phy_handler':
info.c:499: error: implicit declaration of function 'htole16'
make: *** [info.o] 錯誤 1
根據提示找到函數,發現我的系統中沒有 htole16這個函數,我的libnl版本太高了,學過網絡的知道這是大小端轉換函數,直接使用thos()代替了里面的兩個函數就可以了,當然也可以使用低版本對應的nl庫(這個沒有嘗試)
3、將編譯生成的iw文件,拷貝到開發板中就可以檢查網卡是否支持熱點了
./iw list (注意中間是空格)
如果提示找不到庫,記得把libnl生成的庫拷貝到開發板中/lib中來 記得加上cp -a參數
找到 對于網卡的模式提示
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* WDS
* monitor
* mesh point
如果發現里面有AP選項,那么咱們進行下一步,如果沒有,那么感覺淘一個吧,也就是運費的錢(小度的不要的干活,咱們沒有驅動)!
發現有AP選項的,哈哈,恭喜可以進行wifi熱點共享了,咱們下一步走
有了前面的檢測,確定了我們的網卡是能夠擁有熱點共享功能的,但是如何讓它共享出來呢?
于是有了這篇
hostapd ? ?可以讓我們的網線網卡變成熱點
1、下載
git clone git://w1.fi/srv/git/hostap.git
得到hostap目錄,但是里面wpa_supplicant and hostapd的結合在一起,我們這里只需要hostapd
所以進入hostap/hostapd目錄下編譯
發現它依賴另外兩個庫,一個是前面移植過的libnl,還有一個是openssl
libnl移植過了就不需要移植了,這里移植一下openssl
移植文檔:http://www.voidcn.com/article/p-heqxcivr-rm.html
2、移植hostapd
cp defconfig .config
vi .config
修改如下:
修改Makefile?指定編譯器為arm-linux-gcc?指定ssl和libnl頭文件的路徑
修改CC=arm-linux-gcc 并且添加四句話
注意,這里的路徑一點是要你移植的ssl庫和libnl庫對應的路徑
如此,編譯make
便可以得到hostapd 拷貝至開發板,運行hostapd?–v
如果提示找不到庫,記得把libnl生成的庫拷貝到開發板中/lib中來?記得加上cp -a參數
# ./hostapd -v
正確:
hostapd v2.2-devel
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2014, Jouni Malinen and contributors
可能出現的問題:
a、Can't open RFKILL control device: No such file or directory
呵呵,得配置內核了,要是沒有內核源碼那就麻煩了,嘿嘿
配置內核
--- Networking support │ │
│ │ Networking options ---> │ │
│ │ [ ] Amateur Radio support ---> │ │
│ │ < > CAN bus subsystem support ---> │ │
│ │ < > IrDA (infrared) subsystem support ---> │ │
│ │ < > Bluetooth subsystem support ---> │ │
│ │ -*- Wireless ---> │ │
│ │ < > WiMAX Wireless Broadband support ---> │ │
│ │ RF switch subsystem support --->!!這需要選擇!!!
b、ioctl(SIOCGIFBR) failed: Package not installed
這回是橋接網絡的問題,同樣得配置內核
--- Networking support │ │
│ │ Networking options ---> │ │
---》 802.1d Ethernet Bridging!!選擇就行了!!
配置好后編譯內核,下載到開發班,再次運行hostapd沒有問題了
那么到這里證明hostapd編譯好了,但是使用它的時候還得添加一個配置文檔
3、配置文檔
其實hostapd最關鍵的就是配置文檔了,所以得東西都在里面
文檔位置,在我們/hostap/hostapd目錄下,也就是編譯好的hostapd目錄,有一個文件hostapd.conf
沒錯,就是他,那么我們得修改一些東西
不過你不要自己去弄了,我弄一個配好的,你只需要修改
interface=wlan0//你無線網卡的設備名
wpa_passphrase=123456789 //密碼
把命令和配置文檔放一起,然后
#./hostapd hostapd.conf
搞定,這個時候你應該可以搜索到test熱點了 這個熱點的名字你也可以再配置文檔中修改的
你用手機連接了,可以輸入密碼132456789進行連接,連接上了,但是提示獲取IP失敗
喝喝,你懂得,DHCP開始上場了
總結
以上是生活随笔為你收集整理的开发版linux随身wifi,让linux下无线网卡变身随身wifi的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果电脑为什么要换 CPU:Intel
- 下一篇: 实时拍照替换