BIOS:位於主板上只讀存儲器上的微型操作系統。
a. POST系統自檢:對系統進行整體檢查, 確保各個核心組件存在並正常運行。
b. 設備初始化:初始化核心設備驅動程序, 分配系統資源。
c. 引導設備選擇:選擇引導設備。
d. 移交執行權:將引導設備第一個數據塊(通常是MBR512字節)裝入內存,並轉移執行權。任何引導磁盤的第一個數據塊都必須含有一個小的可執行文件(引導程序)。
Bootloader:(兩個階段)
第一階段: MBR中前446個字節中的小的可執行文(引導加載程序第一階段)負責訪問/boot分區, 並載入引導加載程序第二階段。
第二階段: 加載並執行存儲於磁盤中的Linux內核。
準備初始化內存磁盤(Initial RAM Disk, initrd)環境, 將initrd解壓到RAM。
Kernel:(對內部結構和設備驅動程序進行初始化, 提供初始化文件系統, 啓動init)
執行Linux kernel
啓動並移交執行權給init。
INIT:(/sbin/init)對機器進行初始化, 啓動、停止和監控其他進程。
負責後續啓動工作, 並建立用戶登錄環境。
1. 啓動init後會讀取etc/inittab文件設置運行級別, 確定初始化腳本。
/etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set init default to this)
# 1 - Single user mode root as default user, no network and most demons.
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode used as network server.
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
…
2. /etc/rc.d/rc.sysinit: 初始化Linux系統環境。
根據/etc/inittab中相關行
si::sysinit:/etc/rc.d/rc.sysinit 啓動執行rc.sysinit腳本。
rc.sysinit腳本。
a. 腳本開始查看/etc/sysconfig/network, 爲系統確定主機名, 接着在啓動進程初期proc文件系統被掛載在/proc掛在點上。
b. 查看/etc/red-hat-release文件, 查看並顯示歡迎信息。
c. 從BIOS調用硬件時間, 並用/sbin/hwclock命令初始化系統時間。
注:雙系統用戶經常發現硬件時間和系統時間不對應, 可以用hwclock命令 進行同步。
d. 系統初始化RAID磁盤。
e. 若有LVM等存儲技術在此進行初始化。
f. 將根分區掛載爲只讀, 可以用fsck命令進行操作、修復。
g. 將根分區掛載爲讀寫模式, 仍爲單一掛載分區。
h. 掛載剩餘文件系統。
i. 清除守護進程留下來的各種PID文件, 並把各種應用程序留下來的文件和套
接字保留下來。
j. 重新激活交換空間, 爲滿足系統使用含有根分區位置以外的交換文件。
k. 將最新的引導記錄保存到/var/log/dmesg中。
3. /etc/rc.d/rc*.d: 建立並初始化Runlevel環境。
$ ls /etc/rc.d/
init.d rc0.d rc2.d rc4.d rc6.d rc.sysinit
rc rc1.d rc3.d rc5.d rc.local
根據/etc/inittab中設置確定用哪些腳本文件對系統進行初始化。
響應目錄下均爲指向../init.d/目錄下腳本文件的軟鏈接。
4. /etc/rc.d/rc.local: 定製初始化計劃。
可以添加自己的腳本文件。