上節已係統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)