本博客是关于linux wifi模块的使用(包括设置wifi自动连接),以下都是本人亲身经历和切身感受。此博客秉承以下原则:
作者 | Daniel.Leung |
---|---|
组织 | 池鱼 - YiiGaa |
邮箱 | [email protected] |
日期 | 2019-08-27 |
在公司上班时,一般是一个windows的PC作为常用机器,还有一个用于编译和模拟生产环境的ubuntu服务器。决定做自由职业者后,本来可以用docker模拟出一个ubuntu的服务器的,但是奢侈的习惯一旦养成是没法回头的…所以我还是多买了个dell的服务器,然后就悲剧了。
解决办法倒是有三个:
首先先买一个wifi模块,usb插入的那种。这里选用的标准大概是:
在大学的时候,当时也做过一个usb的wifi网卡,当时零件都是蹭实验室的,就没怎么花钱,但是那个网个网卡从硬件到驱动做了差不多一个月,其实就是闲的…那时候就是对嵌入式痴迷了,都总感觉自己要无敌了,什么都想做,做了过飞行器,声控遥控车。回忆起来好青葱的岁月。题外话,题外话…
如果买了不需要安装驱动的,这一个跳过,但是安个驱动真的值40块钱么…
跟网卡一起包装的还有一个光盘,庆幸了一下自己的服务器有光驱,但是插入光盘,脸都绿了,里面居然自由Mac和windows的驱动,为什么么有linux的…
在官网想下载,更悲剧的是,官网上就自由windows的驱动。
本着不给我解决我就退货的态度找了淘宝店家,店家提供了一个适合我机器内核的驱动。然后按照店家说的步骤安装就行。无非就是make一下代码,make install一下,但我记得当时驱动代码在make的时候报了错,好像gcc的版本问题,我是自己把它的代码改了。如果不知道的话,也可以找店家解决,方正不解决就退货,不能退就一万字差评。
进入正题,wifi模块的使用
需要安装以下的包,所以在用无线之前,还是需要先用有线网的,下面的软件也可以在后面的命令中按照错误提示安装。
默认情况下,wifi模块是不启用的,即执行ifconfig时没有wifi网卡
这时候,输入命令ifconfig -a
即会显示没启用的无线网卡,如果还是没有,就是驱动没安好,或者安装好了没重启。
上面截图中的wlx200db033b7fa就是这个无线网卡。
启动无线网卡命令:
sudo ip link set 网卡 up
上面的命令中网卡
为上面ifconfig -a中查到的无线网卡标识,我这里是ip link set wlx200db033b7fa up
,下面一样,后面不做重复
启动后,再看用ifconfig,无线网卡就能查到了,说明现在网卡就是启动的
sudo iw 网卡 scan | grep SSID
SSID:后面的就是wifi名字
先建立一个conf文件,放在哪里都行,能访问就可以,我习惯把配置文件都放在/home/user(这里是你的用户)/init/下
。
我这里起名是account_setting.conf
,文件内容是
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="lalala"
psk="00005419"
}
这里ctrl_interface后面的值不需要动。反正我机器上这个路径也不存在,但是好使…
ssid
的值替换成你的wifi名,尽量不要有中文和奇奇怪怪的符号,不知道到时候解析有没有问题,psk
是密码。这里的配置是普通的wifi密码配置,如果是其他奇怪的加密方式,那就要看查一下wpa_supplicant配置的相关规则了。
配置好了之后,输入命令
sudo wpa_supplicant -B -c 配置文件位置 -i 网卡
配置文件位置
是上面account_setting.conf
的绝对路径。
连接上wifi后还不能上网,需要获取ip地址
sudo udhcpc -b -i 网卡
获取成功后,ifconfig
查看以下网卡是否有ip了,或者日常的ping一下百度,ping成功了就是能上网了。
这里的获取ip方法,每次获取都是一样的,只要路由的ip个数足够。也有每次不一样的方式,用dhclient 网卡
这个命令就行。这里可能有些网络是需要固定ip才能上网的,这里我没用到,所以如果需要的话,靠你自己了…
上面的内容,已经可以连接wifi了,但是比较扯的是,需要每次开机都手动连接(可能有图形界面的不用,但是有图形界面的话上面的连接也不用一顿操作了)。所以需要做一个脚本驱动开机自动启动。
准备一个文件夹,4.2和4.3文件需要放在同一个文件夹里,如果不在一起,那你需要自己改4.3的脚本了。
上面3.3.4 连接wifi
提到过,上面做了这里跳过
创建account_setting.conf
文件,内容
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="lalala"
psk="00005419"
}
这里ctrl_interface后面的值不需要动。反正我机器上这个路径也不存在,但是好使…
ssid
的值替换成你的wifi名,尽量不要有中文和奇奇怪怪的符号,不知道到时候解析有没有问题,psk
是密码。这里的配置是普通的wifi密码配置,如果是其他奇怪的加密方式,那就要看查一下wpa_supplicant配置的相关规则了。
创建bootstrapping.sh
文件,内容
#!/bin/bash
wifiname='网卡'
accountsetting='account_setting.conf'
ip link set $wifiname up&&
wpa_supplicant -B -c $(dirname $0)/$accountsetting -i $wifiname &&
udhcpc -b -i $wifiname
上面的网卡
需要替换成你的网卡标识,account_setting.conf
为wifi配置文件名。
chmod 755 这两个文件
这里防止开机启动时由于权限不足而无法启动脚本。
以下以ubuntu为例子
在/etc/rc.local文件(其他系统都有这个开机启动的配置文件)追加我们的脚本
/home/daniel-leung/init/wificonf/bootstrapping.sh
为4.3 脚本准备
的脚本路径,一定要写在exit 0之前。
这个我wifi连接居然弄了半天,不过估计用的机会很少,一是一般都喜欢用有图形的系统,二是一般无图形的服务器系统都是有网线的。
站在巨人肩膀上还是有必要的,所以以后能安图形界面还是要安一个。