Linux启动中init进程的处理
来源:互联网 发布:米8运输直升机数据 编辑:程序博客网 时间:2024/05/17 23:10
Linux启动中init进程的处理:
init进程会根据/etc/inittab配置文件来初始化系统,inittab文件内容大致如下:
可以看到,首先决定启动等级,然后执行rc.sysinit初始化(检查磁盘,激活交换分区),然后根据启动等级执行/etc/init.d/rc,启动等级作为参数传入,然后就会跳到/etc/rcN.d/下面(N为启动等级),然后执行里面的文件,而里面的文件都是指向/etc/init.d/下面的符号链接。如下:
可以看到,实际上接着init启动的服务都是通过init.d目录中的脚本控制的。至于S20fancontrol,中S和20则表示传入S(Start)参数以及启动优先级(越小越高)。所以现在,你应该能明白为什么有些操作说重启某个服务用到了如下的形式:
这种init的过程是System V Init机制,有个缺点就是根据inittab文件来执行,整个过程实际上是一个串行启动的方式,即,服务是一个接一个的启动,所以造成了Linux的启动速度不快。所有后来有人提出了SysVinit的替代程序,从而大大加速了Linux的启动,其中最著名的,也就是现在Ubuntu中使用的upstart了。
———————————–
再来看看Ubuntu中init进程的处理:
前文说到,Ubuntu使用了upstart来进行初始化处理,那么为什么还要说是init进程了?这是因为现在的Ubuntu10.04中还没有完全独立使用upstart启动机制,而是采用SysVinit+Upstart结合的方式(主要是为了和第三方软件兼容)。所有在Ubuntu10.04及以后,你会发现三个特点:
1 没有标准init进程中的/etc/inittab以及rc.sysinit文件。
2 没有标准Upstart中初始化用的rc-default文件以及事件触发目录/etc/event.d。
3 Ubuntu已经不再严格区分各个启动等级(Runlevel)了。
在Ubuntu中,和init有关的就是/etc/init /etc/init.d /etc/rcN.d了(N为启动等级Runlevel,S代表单用户模式)。注意。这里的init,指的是基于Upstart的初始化进程。Ubuntu中的启动流程如下:
1 init读取/etc/init/rc-sysinit.conf文件来确定启动等级,关键内容如下:
2 传递参数给/etc/init.d/rc
3 随后rc根据参数执行/etc/rcN.d里面的脚本
4 rcN.d里面的脚本指向init.d下的脚本,从而让某服务启动
因为Ubuntu中对Runlevel的划分不再明显,所有通过更改Runlevel来裁剪服务的话有时无效,这时候可以通过更改/etc/rcN.d中的脚本来实现。具体可以参见:
如果Ubuntu完全采用Upstart的话,应该就没有启动等级这个概念了,然后所有的事件触发都在/etc/event.d中定义了,rcN.d中的内容也会被移动到event.d中了。
———————————-
参考资料:
http://apps.hi.baidu.com/share/detail/21129066
http://dpinglee.blog.163.com/blog/static/14409775320104244155181/
http://www.linuxdiyf.com/viewarticle.php?id=88835
http://upstart.ubuntu.com/getting-started.html
http://blog.sina.com.cn/s/blog_402a2fb60100ksmd.html
- Linux启动中init进程的处理
- Linux启动中init进程的处理(转)
- Linux启动(init进程)
- 构建Linux根文件系统二:Busybox init进程的启动
- Linux系统启动分析-从start_kernel到init进程的启动
- Android启动的init进程
- Init进程启动Zygote进程的过程
- Android中init.rc文件的解析&&Android init进程启动过程分析
- linux启动init的流程
- 跟踪分析Linux内核的启动过程(start_kernel到init进程启动)
- init进程 && 解析启动脚本init.rc && init.rc中启动sh文件 && JAVA中跑shell
- android init进程启动的大致流程
- start_kernel到init进程启动的过程
- Android的init进程启动过程
- start_kernel到init进程启动的过程
- Android的init启动进程分析
- 《Linux启动过程分析》内核启动init进程
- linux启动分析——init进程与app启动
- 《Linux内核分析》(四)——扒开系统调用的三层皮(上)
- C++第六题20150329
- 【Android开发】布局管理器-线性布局
- 15第三周项目五——数组作数据成员(3)
- Eclipse搭建Erlang开发环境
- Linux启动中init进程的处理
- 二分求幂—递归非递归两种方法
- 解决S5pv210 adb push u-boot.bin /system 的失败问题
- 【C语言】求10个数中的最大值。
- 【Android开发】布局管理器-表格布局
- java,那些年跳进去的坑
- linux命令大全
- srm 303 div2 1000 (简单暴力,分解素因子)
- c/c++单链表的创建和删除,插入,反转操作