S32V234 --- Linux 系统设置程序开机自启

一、前言

某些情况下,我们希望板子一上电就能运行某些程序,不需要进入文件系统再去手动执行。以下说明如何去操作。不想看原理可以直接跳到操作部分。

 

二、原理

1. 相关文件

相关文件位于 /etc 下,主要有 inittab、init.d 和 rc.d 三个部分,不同版本的 Linux 系统目录层次可能不一样,但是名字不会变。

2. inittab

内核启动完成之后进入文件系统,运行第一个用户进程 init 进程。Init 进程会读取初始化运行级别文件 /etc/inittab。

该文件的 id:5:initdefault: 语句决定了系统启动时要进行哪些动作。其中“5”表示系统的 runlevel = 5,也就是系统启动首先要去执行 rc5.d 文件夹下的程序链接。可以修改,但不要改为 0 或 6,否则会开不了机或者一直重启。

3. rc.d

准确来说是 rc0.d ~ rc6.d,分别代表七个运行级别。

rc0.d:开机后关机(halt)

rc1.d:单用户模式

rc2.d ~ rc5.d:多用户模式

rc6.d:开机后重启(reboot)

每个运行级别具体执行什么动作,可以查看该运行级别的 rdx.c (x = 0~6)目录下的程序链接。例如:
rc5.d

链接的名称有固定规则:

S 表示 start 启动程序,相当于运行了  xxx start; K 表示 Kill 终止这个程序,相当于运行了 xxx stop。start 和 stop 的具体操作在脚本中实现,但一般 start 表示启动程序,stop 表示终止程序。

S/K 后面的数字表示执行顺序,数字越小,越先执行

4. init.d

/etc/init.d  这个文件目录下存放的就是 rcx.d 里链接的所有脚本。

 init.d

 

三、操作

目标:一开机就执行 /home/root/DMS/ 下的 ./wpi_dms_sonyimx224.elf 程序。

1.     创建运行脚本 run-dms

#!/bin/bash#!/bin/bash

case "$1" in   
          start)       

                  cd /home/root/DMS/       
                  ./wpi_dms_sonyimx224.elf       
                  ;;   
          stop)       
                  ps -aux | grep ./wpi_dms_sonyimx224.elf | awk '{print $2}' | xargs kill -9       
                  ;;
esac

保存并退出,赋予脚本可执行权限:

root@s32v234evb:/etc/init.d# chmod 777 run-dms

运行程序测试一下效果,无误则进入下一步。

root@s32v234evb:/etc/init.d# run-dms start

2.     确认运行级别

查看 /etc/inittab,确认系统启动运行在 rc5.d:
inittab

3.     创建程序软链接

进入 /etc/rc5.d 目录并查看已有的链接。

在当前目录下创建自己想要执行的的程序的软链接,S 表示 run-dms start,99 数字大,最后再运行。此处不需要设置自动停止。

ln -s /etc/init.d/run-dms S99run-dms


创建软连接
重启确认程序是否成功自启。

总结:以上为定义开机自启程序的全部操作,一般情况下开机后程序会自动运行,不需要手动控制了。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论