linux wifi使用 wifi开机自动连接
- 0 引言
- 1 背景
- 2 解决办法
- 3 linux使用wifi模块
- 3.1 wifi模块的选择
- 3.2 安装驱动
- 3.3 wifi连接
- 3.3.1 安装工具
- 3.3.2 启用wifi模块
- 3.3.3 查看可连的wifi
- 3.3.4 连接wifi
- 3.3.5 获取ip地址
- 4 开机自动连接wifi
- 4.1 文件夹准备
- 4.2 wifi账号密码配置文件准备
- 4.3 脚本准备
- 4.4 修改权限
- 4.5 开机启动配置
- 5 后记
0 引言
本博客是关于linux wifi模块的使用(包括设置wifi自动连接),以下都是本人亲身经历和切身感受。此博客秉承以下原则:
- 没有原理性介绍,我不是这个工具的作者,写了也是抄的。
- 没有太详细的操作步骤,操作步骤尽量指向官方文档。
- 没有遇到的或者不值一提的,我都不会写上去。
作者 | Daniel.Leung |
组织 | 池鱼 - YiiGaa |
邮箱 | YiiGaa@126.com |
日期 | 2019-08-27 |
1 背景
在公司上班时,一般是一个windows的PC作为常用机器,还有一个用于编译和模拟生产环境的ubuntu服务器。决定做自由职业者后,本来可以用docker模拟出一个ubuntu的服务器的,但是奢侈的习惯一旦养成是没法回头的…所以我还是多买了个dell的服务器,然后就悲剧了。
- 无网线,房间里没有插网口的地方,路由在很远的地方,用的都是wifi。
- 服务器没有wifi模块,无法联网。
2 解决办法
解决办法倒是有三个:
- 把机器搬到客厅,网线插到路由里,但是家人说放个电脑在那不好看(塑料亲情)…这个方案就完蛋了。
- 用一个旧的路由做桥接,就是用另外的路由连wifi,然后网线插到这个路由里。成功了,欢喜。但总感觉路由离我这么近辐射很大,然后我晚上就关了。然后就发现这个傻逼TP-Link居然每次断电后都需要重新设置…(也许是我的旧路由固件有点老了)。然后在我设置了第三次后忍无可忍了,有了第三个方案。
- 给服务器买个usb网卡。让服务器自己连上wifi。搞完是挺好的,但是弄的过程还是比较痛苦的,而且网上找到的资料都比较零散,所以决定写一个教程。
3 linux使用wifi模块
3.1 wifi模块的选择
首先先买一个wifi模块,usb插入的那种。这里选用的标准大概是:
- 需要支持linux内核的
- 是否需要安装驱动,傲娇的我选择了需要安装驱动的,因为不需要安装驱动的需要80多…
- 是否需要支持5G,我这里选择了支持5G的,因为家里的无线设备比较多,只用2.4G的话肯定会有冲突。不过前提是有5G的wifi网络。
最后我选择了,COMFAST CF-811AC,一个需要安装驱动,支持linux内核,支持5G的usb网卡。挺小的,跟无线鼠标的接收器一样大,40多块钱。
在大学的时候,当时也做过一个usb的wifi网卡,当时零件都是蹭实验室的,就没怎么花钱,但是那个网个网卡从硬件到驱动做了差不多一个月,其实就是闲的…那时候就是对嵌入式痴迷了,都总感觉自己要无敌了,什么都想做,做了过飞行器,声控遥控车。回忆起来好青葱的岁月。题外话,题外话…
3.2 安装驱动
如果买了不需要安装驱动的,这一个跳过,但是安个驱动真的值40块钱么…
跟网卡一起包装的还有一个光盘,庆幸了一下自己的服务器有光驱,但是插入光盘,脸都绿了,里面居然自由Mac和windows的驱动,为什么么有linux的…
在官网想下载,更悲剧的是,官网上就自由windows的驱动。
本着不给我解决我就退货的态度找了淘宝店家,店家提供了一个适合我机器内核的驱动。然后按照店家说的步骤安装就行。无非就是make一下代码,make install一下,但我记得当时驱动代码在make的时候报了错,好像gcc的版本问题,我是自己把它的代码改了。如果不知道的话,也可以找店家解决,方正不解决就退货,不能退就一万字差评。
3.3 wifi连接
进入正题,wifi模块的使用
3.3.1 安装工具
需要安装以下的包,所以在用无线之前,还是需要先用有线网的,下面的软件也可以在后面的命令中按照错误提示安装。
- iw
- wpa_supplicant
- udhcpc
3.3.2 启用wifi模块
默认情况下,wifi模块是不启用的,即执行ifconfig时没有wifi网卡
这时候,输入命令ifconfig -a
即会显示没启用的无线网卡,如果还是没有,就是驱动没安好,或者安装好了没重启。
上面截图中的wlx200db033b7fa就是这个无线网卡。
启动无线网卡命令:
sudo ip link set 网卡 up
上面的命令中网卡
为上面ifconfig -a中查到的无线网卡标识,我这里是ip link set wlx200db033b7fa up
,下面一样,后面不做重复
启动后,再看用ifconfig,无线网卡就能查到了,说明现在网卡就是启动的
3.3.3 查看可连的wifi
sudo iw 网卡 scan | grep SSID
SSID:后面的就是wifi名字
3.3.4 连接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
的绝对路径。
3.3.5 获取ip地址
连接上wifi后还不能上网,需要获取ip地址
sudo udhcpc -b -i 网卡
获取成功后,ifconfig
查看以下网卡是否有ip了,或者日常的ping一下百度,ping成功了就是能上网了。
这里的获取ip方法,每次获取都是一样的,只要路由的ip个数足够。也有每次不一样的方式,用dhclient 网卡
这个命令就行。这里可能有些网络是需要固定ip才能上网的,这里我没用到,所以如果需要的话,靠你自己了…
4 开机自动连接wifi
上面的内容,已经可以连接wifi了,但是比较扯的是,需要每次开机都手动连接(可能有图形界面的不用,但是有图形界面的话上面的连接也不用一顿操作了)。所以需要做一个脚本驱动开机自动启动。
4.1 文件夹准备
准备一个文件夹,4.2和4.3文件需要放在同一个文件夹里,如果不在一起,那你需要自己改4.3的脚本了。
4.2 wifi账号密码配置文件准备
上面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配置的相关规则了。
4.3 脚本准备
创建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配置文件名。
4.4 修改权限
chmod 755 这两个文件
这里防止开机启动时由于权限不足而无法启动脚本。
4.5 开机启动配置
以下以ubuntu为例子
在/etc/rc.local文件(其他系统都有这个开机启动的配置文件)追加我们的脚本
/home/daniel-leung/init/wificonf/bootstrapping.sh
为4.3 脚本准备
的脚本路径,一定要写在exit 0之前。
5 后记
这个我wifi连接居然弄了半天,不过估计用的机会很少,一是一般都喜欢用有图形的系统,二是一般无图形的服务器系统都是有网线的。
站在巨人肩膀上还是有必要的,所以以后能安图形界面还是要安一个。