在使用pangu开发板过程中,想要配置开发板的USB WiFi模块,利用RTL8188驱动,802.11nWiFi模块,系统自带了WiFi 驱动,只需要在开机后通过wap指令连接指定的WiFi信号即可。
(PS:该WiFi模块只能连接2.4G的AP热点,要注意WiFi类型)。
1.什么是wpa指令
"wpa" 是 "Wi-Fi Protected Access" 的缩写,是一种用于保护无线局域网络(Wi-Fi)的协议和标准。WPA 旨在提供更强大的安全性,以取代旧版的 WEP(Wired Equivalent Privacy)协议,后来又被 WPA2 和 WPA3 所继承。
"wpa_supplicant" 则是一个用于 Linux 和类似操作系统的工具,它实现了 WPA 和 WPA2 的协议,并允许设备连接到受保护的 Wi-Fi 网络。wpa_supplicant 可以在命令行中使用,也可以与其他网络管理工具(如 NetworkManager)一起使用。
在命令行中,你可以使用 "wpa_supplicant" 命令来配置和连接 Wi-Fi 网络,例如:
- - 扫描可用的 Wi-Fi 网络:`wpa_cli scan`
- - 列出可用的 Wi-Fi 网络:`wpa_cli list_networks`
- - 添加新的 Wi-Fi 网络配置:`wpa_cli add_network`
- - 配置 Wi-Fi 网络的 SSID 和密码:`wpa_cli set_network network_id ssid "Your_SSID"` 和 `wpa_cli set_network network_id psk "Your_Password"`
- - 启用 Wi-Fi 网络配置:`wpa_cli enable_network network_id`
- - 断开连接:`wpa_cli disconnect`
- - 连接到 Wi-Fi 网络:`wpa_cli select_network network_id`
2.如何实现openSTLinux系统开机自动加载脚本
要实现系统开机后执行某个shell脚本,有如下几种方法:
1. 使用`systemd`服务:
- 创建一个`systemd`服务单元文件,该文件指定在系统启动后执行你的Shell脚本。
- 在服务单元文件中,使用`After`参数指定你的服务应该在哪些系统目标(targets)之后启动。通常,在`multi-user.target`之后启动,因为这是正常用户登录的目标。
- 在服务单元文件的`ExecStart`字段中指定你的Shell脚本的完整路径。
以下是一个示例`systemd`服务单元文件:
[Unit] Description=My Custom Script Service After=multi-user.target [Service] ExecStart=/path/to/your/script.sh [Install] WantedBy=multi-user.target
- 将上述配置保为`my_custom_script.service`(或其他自定义名称)并放置在`/etc/systemd/system/`目录下。
- 启用服务并启动它:
sudo systemctl enable my_custom_script.service sudo systemctl start my_custom_script.service
这将确保你的Shell脚本在系统完全启动后运行。
2.使用启动脚本:
可以将脚本添加到系统的启动脚本中。这样,当用户登录后,脚本将自动执行。在OpenSTLinux系统中,常见的启动脚本是 ~/.profile
或 ~/.bashrc
(对于每个用户),以及系统级别的启动脚本如 /etc/profile
或 /etc/rc.local
。
-
~/.profile
和~/.bashrc
:这些是每个用户的个人配置文件。通过编辑用户的~/.profile
或~/.bashrc
文件,将你的脚本添加到文件末尾。确保每次用户登录时都会运行脚本。# 打开用户的.profile或.bashrc文件 nano ~/.profile # 在文件末尾添加你的脚本命令 /path/to/your/script.sh
-
/etc/profile
:这是系统级别的全局配置文件,会影响所有用户。将脚本添加到/etc/profile
中,以确保在每个用户登录时都运行脚本。# 打开/etc/profile文件 sudo nano /etc/profile # 在文件末尾添加你的脚本命令 /path/to/your/script.sh
-
/etc/rc.local
:如果需要在系统启动时而不仅仅是用户登录后运行脚本,可以将脚本添加到/etc/rc.local
中。# 打开/etc/rc.local文件 sudo nano /etc/rc.local # 在"exit 0"之前添加你的脚本命令 /path/to/your/script.sh
本文使用第二种方法中的~/.profile进行配置,编写好脚本后,在~/.profile文件末尾添加该脚本文件的路径以及脚本名称即可。
------------------------------------------------------------------------------------------------
由于后续使用过程中,需要多开ssh会话。而每次打开一次新的ssh会话时,都会执行一次用户登录操作,即每次都会再执行一次~/.profile文件,这样的话,自动执行脚本会被多次加载,而wpa_supplicant命令在第二次执行时可能会尝试重新启动 wpa_supplicant 进程,这会导致网络连接断开。通常,只需要在系统启动时一次性启动 wpa_supplicant,不需要多次运行相同的命令。
为了解决这个问题,这里提供两种思路,一种是在/etc/profile文件中加载脚本,第二种方法是在~/.profile设定一个环境变量,给一个初值,在需要自动执行的脚本中,对其进行判断即可。第二种方法示例如下。
/.profile文件实例如下
:
/your/path/xxx.sh
/your/path/xxx.sh文件实例如下
:
if [ "$First_login" != "true" ]; then echo "First_login!"
#在这里放你的脚本内容 else echo "welcome back!" fi
export First_login="true"; #置位环境变量
#if []括号'['和if之间必须有空格
------------------------------------------------------------------------------------------------
在后续使用过程中,新的问题出现了,那就是当系统断电重启后,这个环境变量还在,则脚本在执行过程