注:CentOS系統5.x,6.x和7.x的啟動流程不同,所以本文僅討論CentOS 5.x的啟動流程。
1. POST加電自檢
服務器在開機之后首先會先進行硬件的檢測,在開機界面我們可能會看到檢測硬盤,cpu或raid卡等信息,此界面即硬件自檢界面。
2. BIOS引導
BIOS(BootSequence)用于通過指定的引導裝置引導系統啟動。
3. Bootloader(MBR)
在所有可以引導系統啟動的介質都會存在引導啟動程序,即MBR。當然現在也可能會有UEFI引導啟動的系統,此處只討論MBR引導啟動方式。
- MBR為于硬盤0柱面0扇區的前446字節,隨后的64字節為分區表信息和分區標識位。
此處即為系統引導盤的前512字節,這512字節如果被破壞的話系統將無法啟動。
-
BootLoader分為多種類型,如LiLo,grub等,其中CentOS 系統采用的為grub。
- grub程序為于/boot/grub/目錄下
其中存放有stage1,stage2,grub.conf等信息。
- stage1存放的是MBR的備份信息,如下:
- grub.conf即開機引導啟動的菜單,其內容如下,用戶也可以自己定義:
- grub啟動系統分為多個階段,首先會通過grub.conf文件尋找內核和initrd文件引導系統,然后內核通過initrd文件加載硬盤的根文件系統。
4./sbin/init
/sbin/init為系統的第一個進程,內核加載完畢之后會只讀掛載rootfs,然后尋找/sbin/init,然后內核啟動階段結束,轉由用戶空間啟動階段。
5./etc/inittab
系統啟動之后會運行/etc/inittab文件,此文件定義如下信息:
- 系統默認運行級別;
- 執行/etc/rc.d/rc.sysinit腳本進行系統初始化;
- 關閉對應級別下需要停止的服務,以k*開頭,啟動對應級別下需要運行的服務,以S*開頭;
- 通過mingetty加載指定的tty;
- 加載圖形終端;
- 定義ctrl+alt+del是否可以重啟系統;
-
定義系統斷電和電力恢復的動作;
其中/etc/rc.d/rc.sysinit定義如下內容: - 設置主機名;
- 設置歡迎信息;
- 激活udev和selinux;
- 掛載/etc/fstab文件中定義的所有文件系統;
- 檢測根文件系統,并以讀寫方式重新掛載根文件系統;
- 設置系統時鐘;
- 根據/etc/sysctl.conf文件設置內核參數;
- 激活lvm及軟raid設備;
- 激活各swap設備;
- 加載額外設備的驅動程序;
- 清理等操作;
6. 詳解系統服務加載過程:
系統所有的服務都存放于/etc/init.d/目錄下,然而在/etc/rc.d/存放多個rc#.d命名的目錄,這些目錄定義的就是對應的運行級別下所有需要停止和啟動的服務:
以上為3級別下需要啟動和停止的服務,可以看到所有的服務都是以軟連接的形式存在的。
以軟連接存在原因:
- 所有服務腳本都存放在/etc/init.d/目錄下
-
所有服務腳本都有一個共同過的特性,腳本開頭必須定義如下兩行信息:
#chkconfig 運行級別 啟動優先級 停止優先級
description:*****
如atd服務的腳本:
-
此類腳本收chkconfig管理,當執行以下指定命令之后會在相應rc#.d目錄下創建指定的以K*或S*開頭的腳本軟連接,系統就是通過加載這些腳本的軟連接啟動服務:
chkconfig –add 腳本名 #添加服務
chkconfig –del 腳本名 #刪除服務
chkconfig –level 運行級別 on|off #定義指定服務在指定級別下是否運行
chkconfig –list #列出所有服務信息
以上便是CentOS 5.x的啟動流程總結。
原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/75515