嵌入式linux开机应用程序自启动

时间:2022-03-19 23:36:35

注意:/etc/profile文件只在登陆用户后,才会执行。并且每个用户登陆,都会进行一次。 由/etc/init.d/rcS-->/etc/init.d/rc知道,需要添加的程序可修改rc文件即可。在rc末尾添加如下:# Add By Qiuweibo 2014.5.21 start
if [ -e /etc/init.d/user.sh ]; then
        echo "-QWB-:/etc/init.d/user.sh"
        /etc/init.d/user.sh
fi
# Add By Qiuweibo 2014.5.21 start
之后,再新建文件,并且可执行属性/etc/init.d/user.sh//=================================参考文档===========================init进程运行后,它会访问/etc/inittab文件,该文件确定系统运行于上面的哪个级别。由于嵌入式系统的特性,我们要让系统运行于级别1上,即单用户模式,这只要在/etc/inittab文件的id:3:initdefault行,将3改为0即可。同时每个级别还对应了一个启动各种服务的脚本目录,一般在/etc/rc.d/下面
    接着init进程又分别启动/etc/rc.d/rc.sysinit和与等级n相对应的/etc/rc.d/rcn.d目录里的初始化进程,最后init会运行用户登陆程序,这时在终端上就会显示login:的登录信息,用户登录成功后会启动shell程序,shell启动后,它会读取并执行文件/etc/profile,/etc/bashrc,和用户主目录下的文件.bashrc,这些文件负责建立用户自己的环境
1.通过/Linuxrc脚本直接启动
Linux内核一旦开始执行,它将通过驱动程序来初始化所有硬件设备,这个初始化过程可以在启动时的PC显示器上看到,每个驱动程序都打印一些相关信息。初始化完成后,通常调用的是init,通过loader调用init内的init=/app_program语句(通过loader向核心传入init=/program可以定制首先运行的程序)
比如在桌面Linux系统中,init进程会读取/etc/inittab文件,来决定执行级别和哪些脚本和命令。嵌入式应用开发中,可以根据实际情况决定是否使用标准的init执行方式,也许这个init是个静态程序,它能够完成我们的嵌入应用的特定任务,那完全不用考虑inittab了,在这里可以采用比较灵活的措施。
2.在/etc/init.d下添加启动脚本
一般情况下,大多数的Linux操作系统使用/etc/init.d/(或/etc/rc.d/init.d)下的脚本来配置应用程序的自动启动。
例如,在某些Linux系统中,corn程序通过/etc/init.d/corn脚本启动,Apache通过/etc/init.d/httpd启动,syslogd通过/etc/init.d/syslogd启动,而sshd则通过/etc/init.d/sshd脚本启动。
通常这些脚本通过来自特定rc.d目录的符号链接运行。为了配置从哪个rc.d目录运行脚本,Linux系统提供了许多不同的工具,同时也可以手工进行配置。Linux系统有一个包含所有实际启动脚本文件的目录。它可能是/etc/init.d,也可能是/etc/rc.d/rc.d。同时对应每个运行级别(runlevel)又有一个另外的目录,它们可能是/etc/rc2.d,也可能是/etc/rc.d/rc2.d。这些目录中的文件通常是指向实际脚本文件的符号链接。
3.直接在/etc/rc.d/rc.local脚本中添加命令
在Linux系统中,有一个类似Windows系统中autoexec.bat的文件,它就是/etc/rc.d/rc.local,系统开机后自动运行用户的应用程序或启动系统服务的命令保存在开发板根文件系统的这个文件中。因此可以编辑rc.local文件,将要执行的程序(命令)添加到该文件夹中。Linux系统在启动后还未登录前,将自动执行该程序(命令),达到开机自动运行用户的应用程序的目的。