CentOS系統啟動流程
CentOS 5、6系統啟動流程是差不多的,只是用到的init程序不同和配置文件的表現形式不同,但是為了保證兼容性,CentOS 6在組織上盡可能的向後兼容了CentOS 5。
CentOS 6啟動流程:
POST(加電自檢) --> Boot Sequence(BIOS) --> Bootloader(MBR) --> Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init(/etc/inittab、/etc/init/*.conf) --> 設定默認運行級別 --> 系統初始化腳本 --> 關閉或啟動對應級別下的服務 --> 啟動終端並打印登入提示符 [--> 啟動圖形終端並顯示登入畫面]
l 內核啟動
n POST:全稱是Power-On Self-Test。
n Boot Sequence:根據在BIOS當中Boot Sequence定義的設備啟動次序。
n Bootloader:搜索擁有Bootloader的設備並加載它以顯示操作系統菜單。Bootloader是存放在硬盤上的MBR。
n Kernel:用戶選擇要啟動的操作系統以加載Kernel,而且Kernel可能要借助於ramdisk來驅動根文件系統所在的設備以完成根文件系統加載的操作。
n rootfs:加載根文件系統。
n switchroot:加載完根文件系統以後做根切換。
l 用戶空間啟動
n /sbin/init(/etc/inittab、/etc/init/*.conf):運行init程序,並根據配置文件啟動系統。
n 設定默認運行級別:init根據配置文件(/etc/inittab)運行系統默認級別,例:id:3:initdefault:。
n 系統初始化腳本:init根據配置文件執行系統初始化腳本(/etc/rc.d/rc.sysinit)來完成系統初始化。
u 配置文件
² CentOS 5:/etc/inittab
[root@localhost ~]# cat /etc/inittab ...省略 # System initialization. si::sysinit:/etc/rc.d/rc.sysinit ...省略
² CentOS 6:/etc/init/rcS.conf
[root@CentOS6 ~]# cat /etc/init/rcS.conf ...省略 console output pre-start script ...省略 end script exec /etc/rc.d/rc.sysinit post-stop script ...省略 end script
n 關閉或啟動對應級別下的服務:對應級別為根據系統默認運行級別。
n 啟動終端並打印登入提示符:啟動虛擬終端,通常啟動的是tty1,並打印登入提示符讓用戶輸入帳號、密碼以登入使用。
n 啟動圖形終端:如果系統默認運行級別為5的話還會啟動圖形終端,並顯示登入介面讓用戶輸入帳號、密碼以登入使用。
init程序:
l CentOS 5:SysV
l CentOS 6:Upstart
l CentOS 7:Systemd
配置文件:
l CentOS 5:/etc/inittab
l CentOS 6:/etc/init/*.conf、/etc/inittab
l CentOS 7:/usr/lib/systemd/system/*、/etc/systemd/system/*