嵌入式Linux系统开机启动脚本

前言

现代Linux系统通常用systemd管理进程,
但嵌入式Linux系统通常采用SystemV的模式,开机启动脚本保存在/etc/rcX.d目录下,X代表运行级别

运行级别

0:系统停机状态
1:单用户工作状态,也称为维护模式,只允许一个用户(通常是root)登录,用于系统维护和故障排除。它禁止远程登录。
2:多用户状态,但没有网络连接。这意味着允许多个用户登录,但系统不提供网络服务。
3:完全的多用户状态,具有网络连接。这个级别通常用于正常的系统操作,允许多个用户登录,并提供完整的网络服务。
4:通常未使用,保留给用户自定义。在某些发行版中,这个级别可能用于特殊目的。
5:图形界面模式。这个级别通常用于图形用户界面(GUI)操作,允许多个用户登录,并提供图形界面。
6:系统正常关闭并重启。这个级别会导致系统先关闭所有服务和进程,然后重新启动。

rcX.d目录

who -r或者who -a命令可以查看当前的运行级别
在这里插入图片描述

可以看到运行级别是5,那么我们看下/etc/rc5.d这个目录
在这里插入图片描述
S表示start,这里没有K,有的话代表Kill,意为启动和停止服务时的操作
启动就是系统启动的时候的操作;至于停止嘛,我估计是reboot命令时执行的操作,如果你啪一下把电断了那估计就啥都不执行了
S后面的数字代表执行顺序
在这里插入图片描述
在这里插入图片描述
系统启动时串口打印的服务启动顺序和数字对应的顺序一致

/etc/init.d/rc.local

S99rc.local这个文件就是用来执行用户自定义的初始化操作的
它是/etc/init.d/rc.local的软链接
在这里插入图片描述

让我们看下这个文件内容

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.local
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

do_start() {
	if [ -x /etc/rc.local ]; then
		echo -n "Running local boot scripts (/etc/rc.local)"
		/etc/rc.local
		[ $? = 0 ] && echo "." || echo "error"
		return $ES
	fi
}

case "$1" in
    start)
	do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

可以看出来,它的目的就是去执行/etc/rc.local这个文件

/etc/rc.local

我们看下这个文件内容

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


echo 30000 >  /proc/sys/vm/min_free_kbytes
source /etc/profile                  
/opt/QDesktop >/dev/null 2>&1 &
exit 0

设置低于30000字节时开始回收内存、初始化环境变量、还有个似乎是桌面程序的的QDesktop?输出都丢了

这就是启动时的自定义操作,如果想添加什么就在exit 0前追加

比如我想在启动的时候初始化eth0的ip地址:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/390869.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发-HarmonyOS UI架构

初步布局Index 当我们新建一个工程之后,首先会进入Index页。我们先简单的做一个文章列表的显示 class Article {title?: stringdesc?: stringlink?: string }Entry Component struct Index {State articles: Article[] []build() {Row() {Scroll() {Column() …

设计风格:新拟态,一文掌握特征、应用场景、运用方法

Hello,我是大千UI工场,设计风格是我们新开辟的栏目,主要讲解各类UI风格特征、辨识方法、应用场景、运用方法等,包括新拟态、毛玻璃、奢华、新中式等等,有设计需求,我们也可以接单。 一、新拟态风格定义和发…

Vue练习1:组件开发1(头像组件)

样式预览 注释代码 <template><div class"img-box":style"{ //动态style必须为对象width: size rem,height: size rem}"><imgclass"avatar-img":src"url" //动态url/></div> </templ…

智慧公厕管理软件

随着城市化的不断推进&#xff0c;城市公共设施逐渐完善&#xff0c;其中智慧公厕的建设也在不断提速。智慧公厕作为城市基础设施的重要组成部分&#xff0c;对城市卫生水平提升有着不可忽视的作用。而智慧公厕管理软件更是智慧公厕管理的基础&#xff0c;是公共厕所智慧化管理…

javaweb学习day02(CSS)

一、CSS介绍 1 官方文档 CSS 指的是层叠样式表* (Cascading Style Sheets)地址: https://www.w3school.com.cn/css/index.asp离线文档: W3School 离线手册(2017.03.11 版).chm 2 为什么需要 CSS 在没有 CSS 之前&#xff0c;我们想要修改 HTML 元素的样式需要为每个 HTML …

不具备这十个能力,真不能说是专业的B端系统设计师

B端系统的复杂程度要远远的超过C端&#xff0c;作为这类设计师绝对不能满足于&#xff0c;画个界面&#xff0c;拼一下组件能搞定的&#xff0c;真的需要精心研究&#xff0c;本文列举了十项能力&#xff0c;帮助设计师们针对的提升。 一、什么是B端管理系统设计 B端管理系统设…

6、内网安全-横向移动WmiSmbCrackMapExecProxyChainsImpacket

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正&#xff01; 前言&#xff1a; 在内网环境中&#xff0c;主机192.168.3.31有外网网卡能出网&#xff0c;在取得该主机权限后上线&#xff0c;搭建web应用构造后门下载地址&#xff0c;利用该主机执行相…

pytorch常用激活函数笔记

1. relu函数&#xff1a; 公式&#xff1a; 深层网络内部激活函数常用这个 import matplotlib.pyplot as pltdef relu_fun(x):if x>0:return xelse:return 0x np.random.randn(10) y np.arange(10)plt.plot(y,x)for i ,t in enumerate(x):x[i] relu_fun(t) plt.p…

lazarus:LCL 嵌入 fpwebview 组件,做一个简单浏览器

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\lclembed 修改 lclembed.lpr 如下&#xff0c;将 fphttpapp. 注释掉&#xff0c;因为我用不上 a simple…

EXTI外部中断

&#xff1f; 难点&#xff1a;中断向量表、看门狗、NVIC的优先级位&#xff1f;EXTI框图&#xff1f; ------------------------ 中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;--->例如&#xff1a;…

IIC--集成电路总线

目录 一、IIC基础知识 1、设计IIC电路的原因&#xff1a; 2、上拉电阻阻值怎么确定 3、IIC分类 4、IIC协议 二、单片机使用IIC读写数据 1、 IIC发送一个字节数据&#xff1a; 2、IIC读取一个字节数据&#xff1a; 一、IIC基础知识 1、设计IIC电路的原因&#xff1a; (…

day42 一个极简动画效果(复习相关属性)

<!DOCTYPE html> <html><head><title>动画页面</title><style>body {font-family: Arial, sans-serif;background-color: #f2f2f2;margin: 0;padding: 0;}.container {max-width: 800px;margin: 0 auto;margin-top: 100px;padding: 20px;b…

【学网攻】 第(29)节 -- 综合实验二

系列文章目录 目录 系列文章目录 文章目录 前言 一、综合实验 二、实验 1.引入 实验目标 实验设备 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻…

结构体实现位段

位段是结构体的一种&#xff0c; 是一种特殊的结构体。 位段可以自己设定元素的内存大小。不具备平台间的移植性。 位段的定义 下面是一个定义的位段 这里成员后面的数字代表比特位。 int a : 1;代表a只占一个比特位。 位段中的元素只能是int&#xff0c; char&#xff0c;…

C++ vector用法

目录 1. vector&#xff1a; 1.1 vector 说明 1.2 vector初始化&#xff1a; 方式1. 方式2. ​编辑方式3. 方式4. 方式5. 1.3 vector对象的常用内置函数使用&#xff08;举例说明&#xff09; pop_back&#xff08;&#xff09; 2. 顺序访问vector的几种方式&#x…

云计算基础-华为存储实验

存储配置流程 创建硬盘域&#xff08;CK&#xff0c;包括热备CK&#xff09;创建存储池&#xff08;CKG、Extent&#xff09;创建LUN、LUN组、将LUN加入LUN组创建主机、主机组、将主机加入主机组创建映射视图&#xff08;LUN组和主机组的映射&#xff09; 1. 创建CK 创建硬盘…

LEETCODE 167. 两数之和 II - 输入有序数组

class Solution { public:vector<int> twoSum(vector<int>& numbers, int target) {vector<int> result;//双指针 -矩阵// for(int i0;i<numbers.size();i){// for(int jnumbers.size()-1;j>i;j--){// if(numbers[i]numbers[j]target)…

【LLM-RAG】BGE M3-embedding模型(模型篇|混合检索、多阶段训练)

note M3-Embedding联合了3种常用的检索方式&#xff0c;对应三种不同的文本相似度计算方法。可以基于这三种检索方式进行多路召回相关文档&#xff0c;然后基于三种相似度得分平均求和对召回结果做进一步重排。 多阶段训练过程&#xff1a; 第一阶段&#xff1a;第一阶段的自…

(08)Hive——Join连接、谓词下推

前言 Hive-3.1.2版本支持6种join语法。分别是&#xff1a;inner join&#xff08;内连接&#xff09;、left join&#xff08;左连接&#xff09;、right join&#xff08;右连接&#xff09;、full outer join&#xff08;全外连接&#xff09;、left semi join&#xff08;左…

电商小程序08调用缓存

目录 1 将信息存入缓存中2 获取登录信息3 退出登录4 发布预览总结 小程序的登录功能里&#xff0c;如果只是将登录信息保存到全局变量中&#xff0c;存在的问题是如果小程序重新打开&#xff0c;用户的登录状态就丢失了。为了解决这个问题&#xff0c;我们需要用到微搭的缓存的…