Chinaunix首页 | 论坛 | 博客
  • 博客访问: 411155
  • 博文数量: 118
  • 博客积分: 294
  • 博客等级: 二等列兵
  • 技术积分: 667
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-16 20:31
文章分类

全部博文(118)

文章存档

2014年(3)

2012年(25)

2011年(90)

分类: 嵌入式

2011-11-30 21:40:35

在嵌入式系统内,如果我们使用busybox内的init作为第一个用户进程其启动流程中注意点:
  1。内核在启动start_kernel后经过一系列的初始化后,会调用rest_init函数,在这个函数里会exec(/sbin/init)。
  2。在init启动后会根据是否有inittab文件,决定启动哪些脚本如果没有会有一个默认启动。
  3。在读取inittab文件后,根据如下规则:

/etc/inittab 文件中每个条目用来定义一个子进程,并确定它的启动方法,格式如下 :
:::
例如:
ttySAC0:askfirst:-/bin/sh
(1):表示这个进程要使用的控制台(即标准输入、标准输出、标准错误设备)。如果省略,则使用与init进程一样的控制台。
(2):对于Busybox init程序,这个字段滑意义,可以省略。
(3):表示init程序如何控制这个子进程,
(4): 要执行的程序,它可以是可执行程序,也可以是脚本
如果:字段有"-"字符,表示这个程序被称为“交互的”。在/etc/inittab/文件的控制下,init进程的行为总结如下:
(1)在系统启动前期,init进程首先启动为sysinit wait once的3类子进程。
(2)在系统正常运行期间,init程序首先启动,为respawn askfirst的两类子进程,并监视它们,发现某个子进程退出时重新启动它。
(3) 在系统退出时,执行 为shutdown restart ctrlaltdel的3类子进程之一或全部。
如果根文件系统中没有/etc/initab文件,Busybox init程序将使用如下默认的inittab条目。

             /etc/inittab文件中字段的意义

Action名称

执行条件

说明

Sysinit

系统启动后最先执行

只执行一次,init进程等待它结束才继续执行其它动作

Wait

系统执行完sysinit进程后

只执行一次,init进程等待它结束才继续执行其它动作

Once

系统执行完wait进程后

只执行一次,init进程不等待它结束

Respawn

启动完once进程后

Init进程监测发现子进程退出时,重新启动它

Askfirst

启动完respawn进程后

respawn类似,不过init进程先输出“Please press Enter to actvie this console”,等用户输入驾车键之后才启动子进程

Shutdown

当系统关机时

即重启关闭系统命令时

Restart

Busybox中配置了CONFIG_FEATURE_USE_INITTAB,并且init进程接收到SIGHUP信号时

先重新读取,解析/etc/initab文件,再执行restart程序

Ctrlatldel

按下Ctr+Alt+del组合键时

 

 读取后分为几类:

    根据启动定义性质,分别启动。

其中在启动

Sysinit进程的时候,会如下:

init  fork一次 出现两个init进程。而后第二个init会再次fork 出现第三个init进程,不过第三个init进程存在的时间极短,就会调用exec把需要启动的进程拉入该进程进程名改变。
注意点:
  在以sysinit启动的脚本 必须能返回结束,否则该系统init进程将处于一直等待某个进程的状况,而无法后续回收僵尸进程。
阅读(4740) | 评论(1) | 转发(3) |
给主人留下些什么吧!~~

桔子T恤2011-12-02 00:01:46

在init启动后会根据是否有inittab文件,决定启动哪些脚本如果没有会有一个默认启动。