linux 内核加载完成后,启动的第一个进程就是init进程了,可以使用pstree命令查看进程树的根。(现在使用systemd第一个进程是systemd)

init进程以守护进程的方式运行, 它可以完成很多其它进程无法做的工作,比如系统初始化等,因此也可以称之为init系统。

在linux作为服务器或者终端使用时,linux采用了Unix System V中的init系统,即Sysvinit。它是一个基于运行级别的程序。

 

Sysvinit工作方式:

init进程启动时,会读取/etc/inittab下关于runlevel的参数。sysvinit利用文件的命名规则和软连接的方式实现了不同runlevel启动不同的服务。依赖的文件为:

/etc/rc0~6.d 和 rcS.d 0~6 和 S为linux对应的8个运行级别,另外还有一个文件rc.local,这个文件是在启动完系统服务后,用户可以将自己需要启动的服务添加进去的文件。

rcX.d中存放的是init.d目录的链接。因此系统启动后,用户也可以通过/etc/init.d/service start|stop 来操作服务。

 

其实按照runlevel启动服务前,init会先运行rc.sysinit程序,启动某系系统服务,比如:

激活selinux,设置/etc/sysctl.conf中的内核参数,设置系统的主机名,设置系统的时钟,查看RAID、LVM等操作。

 

总之随着linux在移动设备上使用越来越广泛,启动速度慢的劣势越来越成为Sysvinit发展的绊脚石,目前Upstart和systemd使用的也很广泛。最近的消息Ubuntu也将采用Systemd。

 

posted on 2015-03-14 21:59  ayy2014  阅读(147)  评论(0编辑  收藏  举报