此处以本人的嵌入式设备系统入手,有些说明因设备而异,但大致思路是不会变的。
从Linux启动到执行 init 程序说起
1. init 程序会根据文件/etc/inittab文件(具体文件格式为id:runlevel:action:process)来调用rc脚本
/etc/inittab文件(截取部分,类是于配置文件按需执行,比如我要执行sysinit,调用/etc/init.d.rcS,并不是一次性执行完文件)
::sysinit:/etc/init.d/rcS //挂载磁盘,FLASH,等系统操作
#详细说明: 在rcS脚本内实现遍历执行指定文件夹内的名为S*S30ramdisk)的脚本程序,这些脚本的特点就是能接受start参数
::wait:/etc/init.d/rc //初始化系统网络,主机名等
#详细说明:rc脚本内实现遍历执行指定文件夹内的名为S*(S40networking)的脚本程序,这些脚本的特点就是能接受start参数
::respawn:/sbin/getty 57600 ttyO2 //出现登录的提示框
.....
!!系统级的初始化完毕!
2. 执行完上述两个脚本后,接下来 根据不同用户级别的登录执行不一样的脚本 rc0.d(0为root用户)
!!用户环境初始化完毕!!
3. 接下来执行的是最关系开发者的 脚本 rc.local, 你可以将你想要开机启动的软件写于此
!!自定义程序开机启动
如 /bin/helloworld