需要的工具项目
1.create_ap(用于开启ap)
一、WiFi连接及配置
- (无显示器的情况下)TF卡根目录下修改network-config文件(没有则创建,时间已久我也忘记了)
# This file contains a netplan-compatible configuration which cloud-init
# will apply on first-boot. Please refer to the cloud-init documentation and
# the netplan reference for full details:
#
# https://cloudinit.readthedocs.io/
# https://netplan.io/reference
#
# Some additional examples are commented out below
version: 2
ethernets:
eth0:
dhcp4: true
optional: true
wifis:
wlan0:
dhcp4: true
optional: true
access-points:
"Redmi1#ssid名称":
password: "123456789#密码"
# myworkwifi:
# password: "correct battery horse staple"
# workssid:
# auth:
# key-management: eap
# method: peap
# identity: "me@example.com"
# password: "passw0rd"
# ca-certificate: /etc/my_ca.pem
以上仅用于第一次连接WiFi,如若修改WiFi可通过一下配置文件进行修改
cat /etc/netplan/50-cloud-init.yaml 网络配置目录
- (连接显示器的情况下)通过搜索网络进行连接
- 搜索附近WiFi
sudo iw dev wlan0 scan |grep SSID
- 查看信号强度
wpa_cli scan_results
- 通过命令行方式配置
sudo raspi-config
二、WiFi中续及配置
- 列出网络查看网卡是否存在
ip a #或ls /sys/class/net
- 查看网络连接
ifconfig
- 提权
sudo -i
- 进入目录用户
cd /home/ubuntu #根据自己情况修改
- 下载项目"create_ap"到本地
git clone https://github.com/oblique/create_ap
- 进入文件夹并安装
cd create_ap
sudo make install
sudo apt-get update
- 安装依赖库
sudo apt-get install util-linux procps hostapd iproute2 iw havegeddnsmasq
第一种。开启ap源创建WiFi热点
放射WiFi热点网卡需处在空闲状态不然失败 其中wlan0 作为连接网卡:wlan1为放射网卡 后边为名称及密码
- 网卡如有连接用wpa切断WiFi连接 #注意你的是wlan0还是wlan1
wpa_cli -i wlan1 disable_network 0
sudo create_ap wlan1 wlan0 xiyi 123456789
- 第二种。用wlan1作AP源
sudo create_ap wlan1 wlan0
根据提示输入SSID(网络名)和密码
三、设置开机自启
第一种的。更改配置,这种我这无效
sudo nano /usr/lib/systemd/system/create_ap.service
- 将文本里的
ExecStart=/usr/bin/create_ap --config /etc/create_ap.conf
- 修改为
ExecStart=/usr/bin/create_ap --no-virt --config /etc/create_ap.conf
- 修改Wi-Fi热点配置
sudo nano /etc/create_ap.conf
GATEWAY IP起始地址
SSID Wi-Fi名称
PASSPHRASE Wi-Fi密码
HIDDEN 是否隐藏(默认为0不隐藏)
- 设置开机启动
sudo systemctl enable create_ap.service
- 第二种。用开启WiFi的脚本,再添加到rc.local里
- 创建WiFi脚本
nano auto_ap_WiFi.sh
- 添加内容
#!/bin/sh
sleep 10s
#这里延迟10s是因为rc.local比网卡启动早,要等网卡启动了之后才能进行下面的工作
wpa_cli -i wlan0 disable_network 0
sudo create_ap wlan1 wlan0 xiyi 123456789 &
#那个&是后台的意思,这意味着你可以在这里添加一些其他代码,例如定时关机等等
#Ctrl+X,然后按Y确认保存
- 赋予权限
chmod 777 auto_ap.sh
- 编辑rc.local文件
#!/bin/sh -e
su Ubuntu -c "exec /home/ubuntu/auto_ap_WiFi.sh"
- 重启检测是否可用
sudo reboot
四、若不可以开启rc-local开机自启动
- 查看服务开启状态
systemctl status rc-local
- 如若未开启开启方法如下附链接🔗
开机自动启动脚本设置
由于ubuntu20.04LST没有/etc/rc.local,需要创建一个rc.local的可执行文件
sudo vim /etc/rc.local
脚本内容为
#!/bin/sh -e
su Ubuntu -c "exec /home/ubuntu/auto_ap_WiFi.sh"
给脚本赋权限
sudo chmod +x /etc/rc.local
完成脚本编写后需要启动rc.local.service,命令如下
sudo vim /lib/systemd/system/rc-local.service
做完这一步,还需要最后一步 前面我们说 systemd 默认读取 /etc/systemd/system 下的配置文件, 所以还需要在 /etc/systemd/system 目录下创建软链接
ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
rc.local.service的内容如下
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking 是后台运行的形式
ExecStart 为服务的具体运行命令
ExecReload 为服务的重启命令
ExecStop 为服务的停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
在文件下面添加如下内容,并且修改ExecStart
[Service]
ExecStart=/etc/rc.local start
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
然后把你需要启动脚本写入 /etc/rc.local ,我们不妨写一些测试的脚本放在里面,以便验证脚本是否生效.
#!/bin/sh -e
echo "看到这行字,说明添加自启动脚本成功。" > /usr/local/test.log
exit 0
执行
systemctl enable rc-local
systemctl start rc-local.service #启动服务
systemctl stop rc-local.service #暂停服务
systemctl status rc-local.service #查看状态
systemctl daemon-reload # 重新加载自启服务
查看状态结果如下:
状态 含义
active(running) 表示程序正在执行
atcive(exited) 执行一次就正常退出的服务,不在系统中执行任何程序
active(waiting) 正在执行中,处于阻塞状态,需要等待其他程序执行完才能执行
inactive (dead) 未启动状态
- 查看创建的热点
create_ap --list-running
- 查看连接在 ap 上的设备
create_ap --list-clients 2045 # 该id为之前创建的ap id
在用的是树莓派4b
系统为Ubuntu 20.04.2