Chinaunix首页 | 论坛 | 博客
  • 博客访问: 701987
  • 博文数量: 130
  • 博客积分: 2192
  • 博客等级: 大尉
  • 技术积分: 1410
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-31 15:37
文章分类

全部博文(130)

文章存档

2013年(1)

2012年(4)

2011年(27)

2010年(97)

2009年(1)

分类: 嵌入式

2010-07-14 20:55:27

// 按: 在看《Embedded linux primer》中busybox一章的时候讲到了 他的启动方式和System V的不同,不太明白,于是查了一下。

System V init启动过程

概括地讲,Linux/Unix系统一般有两种不同的初始化启动方式.

1) BSD system init

2) System V init

大多数发行套件的Linux使用了与System V init相仿的init也就是Sys V init,它比传统的BSD system init更容易且更加灵活, System V init的主要思想是定义了不同的"运行级别(runlevel)". 通过配置文件/etc/inittab定义了系统引导时的运行级别, 进入或者切换到一个运行级别时做什么. 每个运行级别对应于一个子目录/etc/rc.d/rc n.d.

 

以下是一个大致的System V init过程:

(1)init 过程执行的第一个脚本是/etc/rc.d/rc.sysinit, (有疑问,按照鸟哥,/etc/rc.d/rc.sysinit 是由etc/inittab调用的,那自然第一个脚本是inittab了,by imjacob)它主要做在各个运行级别中进行初始化工作,包括: 启动交换分区;检查磁盘;设置主机名;检查并挂载文件系统;加载并初始化硬件模块.

(2)执行缺省的运行级别模式

这一步的内容主要在/etc/inittab中体现, inittab文件会告诉init进程要进入什么运行级别,以及在哪里可以找到该运行级别的配置文件.

(3)执行/etc/rc.d/rc.local脚本文件

这也是init过程中执行的最后一个脚本文件,所以用户可以在这个文件中添加一些需要在登录之前执行的命令.

(4)执行/bin/login程序

 

Busybox init启 动过程分析

它的init进程主要进行以下工作:

<*> 为init进程设置信号处理进程

<*>对控制台进行初始化

<*>解析/etc/inittab

<*>在默认情况下,Busybox会运行初始化脚本/etc/init.d/rcS

当init进程对控制台进行初始化完成之后,Busybox会去检查/etc/inittab文件是 否存在,如果存在,就会解析该文件并执行相应的运行级别.

Busybox支持的inittab格式如下所示:

id : runlevel : action : process

这里需要注意的一点是,Busybox所认识的/etc/inittab的格式尽管与Sys V init非常相似,但其中的操作域id具有不同的含义. Busybox中的id用来指定启动的控制台,如果所启动的进程不是可以交互的Shell,就可以空着id的操作域不用去填写.(Sys V中id字段是最多4个字符的字符串,用来唯一标志表项by imjacob,参:

[需要注意]不论Busybox是否能找到inittab文件, Busybox下的init进行执行的第一个脚本都是/etc/init.d/rcS, 而不是Sys V init结构下执行的脚本文件/etc/rc.d/rc.sysinit.

附:

关于 bsd的 启动信息可以参看以下:

http://blog.csdn.net/dog250/archive/2010/02/09/5303619.aspx

阅读(3142) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

嚯嚯嚯嚯2016-05-11 16:04:28

(1)init 过程执行的第一个脚本是/etc/rc.d/rc.sysinit, (有疑问,按照鸟哥,/etc/rc.d/rc.sysinit 是由etc/inittab调用的,那自然第一个脚本是inittab了,by imjacob)它主要做在各个运行级别中进行初始化工作,包括: 启动交换分区;检查磁盘;设置主机名;检查并挂载文件系统;加载并初始化硬件模块

inittab是配置文件而不是脚本