• 正文
  • 相关推荐
申请入驻 产业图谱

ElfBoard技术贴|如何在【RK3588】ELF 2开发板上实现开机自启应用

09/08 15:33
1135
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
Systemd作为Linux系统默认的初始化系统和服务管理器,凭借其并行启动、依赖管理及统一配置机制,显著提升了系统启动效率。针对开机自启动需求,Systemd的实现机制如下:

1、服务单元机制

Systemd将每个服务/脚本抽象为.service单元文件,其中包含启动命令、依赖关系、运行环境等声明式配置。

2、依赖控制与目标绑定

通过[Install]段的WantedBy=multi-user.target将服务关联到系统运行目标,确保在操作系统完成基础初始化后自动触发服务启动。

3、强一致性保障

Systemd会监控服务进程,支持自动重启和日志收集,确保自启动服务的持续可用性。

脚本自启

配置Systemd服务单元实现脚本自启

1、首先创建test1.sh脚本

root@elf2-desktop:~# cd /home/elf/
root@elf2-desktop:/home/elf# vi test1.sh

添加以下内容:

#!/bin/bash
echo "start" >> /home/elf/c.txt

2、给脚本可执行权限

root@elf2-desktop:/home/elf# chmod 777 test1.sh

3、新建要启动的服务文件

创建并编辑test1.service文件

root@elf2-desktop:/home/elf# vi /etc/systemd/system/test1.service

在test1.service里编辑以下内容

[Unit]
Description=/etc/rc.local Compatibility
After=multi-user.target
[Service]
Type=forking
ExecStart=/home/elf/test1.sh
[Install]
WantedBy=multi-user.target

4、让系统获取到自定义的service文件并设置开机启动

root@elf2-desktop:/home/elf# systemctl daemon-reload
root@elf2-desktop:/home/elf# systemctl enable test1.service

5、执行sync后,reboot重启

root@elf2-desktop:/home/elf# sync
root@elf2-desktop:/home/elf# reboot

6、验证

root@elf2-desktop:~# cat /home/elf/c.txt 
start  //读取文件的内容,出现start说明脚本开机自启成功。

界面应用自启

配置 systemd 服务单元实现带界面应用自启

1、首先创建test2.sh脚本

root@elf2-desktop:~# cd /home/elf/
root@elf2-desktop:/home/elf# vi test2.sh

以HelloWorld为例进行测试,添加以下内容:

#!/bin/bash
sleep 3
export DISPLAY=:0.0
/home/elf/HelloWorld &

sleep 3的原因为multi-user启动顺序较早,不添加sleep参数会导致应用启动失败,Ubuntu系统启动过程中,用户带界面的应用启动需要等待界面组件准备完成,这里测试elf2需要2秒左右正常进入系统,所以延时3s再启动应用。

2、给脚本可执行权限

root@elf2-desktop:/home/elf# chmod 777 test2.sh

3、新建要启动的服务文件

创建并编辑test2.service文件

root@elf2-desktop:/home/elf# vi /etc/systemd/system/test2.service

在start.service里编辑以下内容

[Unit]
Description=/etc/rc.local Compatibility
After=multi-user.target
[Service]
Type=forking 
ExecStart=sudo -u elf /home/elf/test2.sh
[Install]
WantedBy=multi-user.target

4、让系统获取到自定义的service文件并设置开机启动

root@elf2-desktop:/home/elf# systemctl daemon-reload
root@elf2-desktop:/home/elf# systemctl enable test2.service

5、执行sync后,reboot重启

root@elf2-desktop:/home/elf# sync
root@elf2-desktop:/home/elf# reboot

6、验证

界面配置带界面应用自启

通过 gnome-session-properties 命令可以打开开机自启工程配置界面,在这里添加用户自己的应用/脚本即可,下述以HelloWorld为例进行测试。

1、调试串口执行命令

elf@elf2-desktop:~$ export DISPLAY=:0.0
elf@elf2-desktop:~$ gnome-session-properties

此时板端会出现如下界面

选择Add添加自己的启动脚本

选择添加后按提示保存退出即可。

2、添加的test3.sh脚本内容如下:

#!/bin/bash
export DISPLAY=:0.0
/home/elf/HelloWorld &

3、给脚本提供可执行权限chmod +x /home/elf/test3.sh

4、sync保存重启,验证是否自启动

运行应用时隐藏侧边栏

通过系统设置 选中"Auto-hide the dock"再运行Qt等应用时侧边栏就会隐藏,运行效果如下:

飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐