设为首页 加入收藏

TOP

openSTLinux系统如何配置开机启动自动加载脚本文件连接到某个网络(基于STM32MP1系列)(一)
2023-09-23 15:44:27 】 浏览:219
Tags:openSTLinux 何配置 加载脚 文件连 基于 STM32MP1 系列

在使用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之间必须有空格

------------------------------------------------------------------------------------------------

在后续使用过程中,新的问题出现了,那就是当系统断电重启后,这个环境变量还在,则脚本在执行过程

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇linux系统创建新的Swap分区 下一篇docker镜像仓库hub.docker.com无..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目