openSTLinux系统如何配置开机启动自动加载脚本文件连接到某个网络(基于STM32MP1系列)

这篇具有很好参考价值的文章主要介绍了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之间必须有空格

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

在后续使用过程中,新的问题出现了,那就是当系统断电重启后,这个环境变量还在,则脚本在执行过程中会跳过我们想要执行的内容,导致网络连接失败。因此考虑要么在关机或者重启时,将环境变量复位,要么采用systemd服务,配置相关参数,使其再开机后,用户登陆前执行一次即可。

经过查询相关资料以及不断尝试,最终实现了开机只执行一次,在新开ssh会话时不会重复执行,且再次开机可以执行的脚本配置。

主要思路是采用前文提到的“使用`systemd`服务”方法。但是配置上有所不同。
其中`systemd`服务单元文件内容为:

[Unit]
Description=My Script Service
After=network.target multi-user.target
Wants=network.target

[Service]
ExecStart=/your/path/yourshfile.sh
User=root
Group=root
Type=oneshot #开机只执行一次
RemainAfterExit=yes #这可以指示 systemd 服务单元在ExecStart完成后仍然保持激活状态。这允许脚本在后台继续运行。
 
[Install]
 WantedBy=multi-user.target

需要执行的脚本文件内容为:

wpa_supplicant -B -c /etc/zhb_wificonfig/wifi.conf -i wlan0 &
sleep 5
echo -e "\n" #这一步是为了防止wpa_supplicant执行完成后还在那里等待,导致后续服务启动失败,模拟一个回车
udhcpc -i wlan0
wait #这里等待ip分配获取完成,即可进入下一步
echo "nameserver 114.114.114.114" > /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
wait #等待DNS写入完成

以上就是从一开始的想法到最后的实现过程了,希望对读者有帮助。文章来源地址https://www.toymoban.com/news/detail-709962.html

到了这里,关于openSTLinux系统如何配置开机启动自动加载脚本文件连接到某个网络(基于STM32MP1系列)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何配置 Docker 容器在系统启动时自动运行

    在使用 Docker 部署应用程序时,您可能希望配置容器在系统启动时自动启动。这可以通过 Systemd 在 Linux 系统上实现。本文将以一个示例命令和服务(以 pandora 为例)为基础,向您展示如何配置 Docker 容器的自动启动。 以下是详细步骤: 在终端中执行以下命令,创建一个新的

    2024年02月12日
    浏览(37)
  • Windows下快速安装Nginx并配置开机自动启动Nginx

    目录 一、windows系统下Nginx安装启动流程: 二、设置Nginx开机自动启动 1、自启动工具下载 2、自启动工具安装 3、把nginx加入到windows服务中 nginx已经是我们日常开发中在常用不过的工具了,简单快捷的安装和配置,大大减少了我们部署调试浪费的时间,本文给各位同学介绍一下

    2024年02月10日
    浏览(55)
  • Windows用户如何将cpolar内网穿透配置成后台服务,并开机自启动?

    正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 本文介绍,如何将cpolar配置成后台服务,并且开机自动启动。 cpolar是可以将多个隧道配置在配置文件中的,并且可以通过后台服务

    2024年02月14日
    浏览(62)
  • VS010问题汇总(未能正确加载包)( 运行时提示无法启动程序 系统找不到指定的文件问题)(不能自动生成)(vs2010缺少或未指定语言特性)(没有为此解决方案配置选中要生成的项目)

    解决方法:http://t.csdn.cn/BKFoY(参考解决方法)  我的这个问题是参考这个回答中的第二个方法解决的,真的很靠谱,博主昨天被这个问题,重装了VS2010很多次,结果无法解决,是看了文中的方法才得以解决的 解决方法:我的解决方法:是没有生成解决方案,所以需要自己先

    2024年02月04日
    浏览(57)
  • Android APP开机启动,安卓APP开发自启动,安卓启动后APP自动启动 Android让程序开机自动运行APP

    第一步设置获取广播后的业务 第二查权限给APP 理论以上两步做完就可以了。APP也能收到广播信息了, 但是APP没有在桌面启动。 经过再研究,发现要在手机再设置自动开启等业务,以下是小米、魅族的系统设置的一些内容,其它平台自己研究。 这里已经显示收到广播信息  

    2024年02月06日
    浏览(57)
  • Spring Boot如何实现配置文件的自动加载和刷新?

    在使用Spring Boot开发应用程序时,配置文件是非常重要的组成部分。在不同的环境中,我们可能需要使用不同的配置文件,例如在开发、测试和生产环境中使用不同的配置文件。而且,当我们更改配置文件时,我们希望应用程序能够自动加载和刷新配置文件,而无需重启应用

    2024年02月07日
    浏览(58)
  • Unity 创建快捷方式开机自动启动

    先导入插件包👈,再 把导入的 ZYF_AutoRunApp.cs 挂到物体上即可。

    2024年04月14日
    浏览(34)
  • 设置开机自动启动chrome浏览器

    前端时间参与了一体机的项目,需要开启后自动打开应用,没有接触过的项目,一切上搜索。 以下是对项目的开机启动做一个记录... 步骤一 、 设置开机自动启动浏览器 自动全屏访问某个url 分屏一体机,两个显示器分别显示不同的url  1、首先打开C:ProgramDataMicrosoftWindows

    2024年02月06日
    浏览(59)
  • 如何关闭开机启动项 减少开机启动项方法介绍

    如果我们启动电脑的时候发现,开机时间比较长,很有可能就是我们的电脑开机启动项太多,加载的时间造成的。那么如何关闭开机启动项?下面介绍一下电脑不装电脑管家怎么关闭开机启动项。  减少开机启动项方法 1、许多应用程序在安装时都会自作主张添加至系统启动

    2024年02月06日
    浏览(45)
  • windows:开机不自动启动iis的设置方法

    参考:         windows10开机不自动启动iis的设置方法_忘尘~的博客-CSDN博客

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包