上节已系统initramfs已启动完成,将系统控制权交给了真正的rootfs的/sbin/init,下面就是/sbin/init干活的时间了。html
initramfs的init脚本,经过switch_root命令,切换到真正的root fs后,执行的第一个程序就是root fs下的/sbin/init,linux
swith_root newroot init [arg]ubuntu
eg:this
initramfs中切换到真正的rootfs命令是switch_root /sysroot /sbin/initspa
其中root fs挂载到了/sysroot目录下操作系统
/sbin/init:它是系统第一个执行的程序,即便用pa auxf查看,PID为1的程序便是它,它能够理解为系统全部进程的父进程。.net
经过rpm -qf /sbin/init,查看系统中的/sbin/init程序来自于upstart,upstart的详细说明可参见upstart官网[6]。unix
传统的操做系统的/sbin/init是由System V init来管理,而upstart原来是为ubuntu系统开发的,如今被愈来愈多linux系统所使用。关于System Vinit和upstart的区别,可参见文档[7]。htm
/sbin/init主的要流程:blog
一、 执行/etc/rc.sysinit。
二、 执行/etc/rc,rc脚本会根据传入的runlevel,选择运行对应目录下的脚务脚本。
三、 执行/etc/rc.local
大致完成如下几类任务:
一、 文件系统挂载(经过grub传入参数,及配置文件,挂载/修复文件系统)。
二、 模块加载(经过udev规则,加载模块,如网卡、用户自定义规则等)。
三、 SELINUX相关(未了解)。
下面两个连接也有一些说明:
http://linux.chinaunix.net/techdoc/beginner/2009/01/21/1059280.shtm
http://www.cnblogs.com/image-eye/archive/2011/10/21/2220344.html
全部服务脚本目录,不一样级别对应不一样目录的脚本会被执行,这里就再也不详细说明。
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)