让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热点共享了,咱们下一步走


移植过程中参考文献:http://blog.chinaunix.net/uid-22028680-id-3574122.html


有了前面的检测,确定了我们的网卡是能够拥有热点共享功能的,但是如何让它共享出来呢?
于是有了这篇文章的诞生,hostapd移植
hostapd    可以让我们的网线网卡变成热点
1、下载

    git clone git://w1.fi/srv/git/hostap.git

  得到hostap目录,但是里面wpa_supplicant and hostapd的结合在一起,我们这里只需要hostapd

  所以进入hostap/hostapd目录下编译

  发现它依赖另外两个库,一个是前面移植过的libnl,还有一个是openssl

  libnl移植过了就不需要移植了,这里移植一下openssl

  移植文档:http://blog.csdn.net/x_nazgul/article/details/20149595

    

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 <j@w1.fi> 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

    没错,就是他,那么我们得修改一些东西

    这里有个介绍,我就不多说了:http://blog.chinaunix.net/uid-22028680-id-3574921.html

    不过你不要自己去弄了,我弄一个配好的,你只需要修改 

    interface=wlan0//你无线网卡的设备名

    wpa_passphrase=123456789 //密码

    资源:http://blog.csdn.net/x_nazgul/article/details/20207989

    把命令和配置文档放一起,然后

    #./hostapd hostapd.conf 

   搞定,这个时候你应该可以搜索到test热点了 这个热点的名字你也可以再配置文档中修改的 

    你用手机连接了,可以输入密码132456789进行连接,连接上了,但是提示获取IP失败

    喝喝,你懂得,DHCP开始上场了


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统下使用USB无线网卡的步骤如下: 1. 插入USB无线网卡:将无线网卡插入计算机的USB接口。一般情况下,Linux系统会自动检测并识别无线网卡。 2. 查看无线网卡:打开终端,并输入以下命令来查看系统是否已经正确识别无线网卡: ```shell lsusb ``` 这个命令会列出所有连接到计算机的USB设备,你应该能够在列表中找到你的无线网卡。 3. 安装驱动程序:如果系统无法自动识别无线网卡或者无法正常工作,你可能需要手动安装相应的驱动程序。首先,你需要确定你的无线网卡型号和制造商,然后在官方网站上找到对应的Linux驱动程序。下载后,按照驱动程序提供的安装指南进行安装。 4. 配置网络连接:一旦无线网卡被正确地识别和配置,你可以使用网络管理工具(如Network Manager或Wicd)来配置连接到无线网络。 - 网络管理工具通常提供图形界面,可以通过系统设置或应用程序菜单中找到。 - 在网络管理工具中,你可以搜索并找到可用的无线网络,并输入密码或其他身份验证信息进行连接。 5. 测试网络连接:完成配置后,你可以尝试连接到无线网络并测试网络连接是否正常。你可以打开浏览器,访问一个网页,或者使用ping命令测试网络连接。 注意:根据不同的无线网卡型号和Linux发行版,上述步骤可能会有所不同。如果遇到问题,建议查阅无线网卡的制造商网站或者Linux社区中的相关文档和讨论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值