centos 6.x開機啟動流程
BIOS(COMS)檢查
加載Bios,bios包含所有硬件信息(CPU,內存,硬盤,時鐘,鼠標鍵盤等等)讀MBR
硬盤上第0磁道第一個扇區被稱為MBR(master boot recoder,主引導記錄),它的大小問512字節,可存放了預加載啟動信息,分區表信息。
系統找到bios所指定的硬盤的MBR后,就會將其復制到0x7c00地址所在的物理內存中。其實被復制到物理內存的內容就是boot loader,而具體到電腦,那就是lilo或者grub了。boot loader
boot loader 就是在操作系統運行之前執行一段小程序。通過這段小程序。我們可以初始化硬件信息、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核做好一切準備。
boot loader有若干種,其中grub是最常見的loader
系統讀取內存中的grub配置信息(menu.lst或者grub.lst),并依照此配置來啟動不同的操作系統kernel load
根據grub設定的內核映像所在的路徑,系統讀取內存映像,并進行解壓操作。此時,屏幕一般會輸出“Uncompressing Linux”的提示。當解壓縮內核完成后,屏幕輸出“OK, booting the kernel”。
系統將解壓后的內核放置在內存中,并調用start_kernel()函數來啟動一系列的初始化函數并初始化各種設備,完成Linux核心環境的建立。用戶層init依據inittab文件設定運行級別
內核加載完成后,第一個運行的程序是/sbin/init,該程序會讀取/etc/inittab文件,并依據此文件夾進行初始化工作。
Linux的運行級別:
0 關機
1 當用戶模式
2 不帶網絡的多用戶模式
3 帶網絡的多用戶模式
4 預留,沒使用
5 帶網絡,有支持x-windows的多用戶模式
6 重啟init執行rc.sysinit
系統執行的第一個用戶層程序是/etc/rc.d/rc.sysinit腳本程序。
它做的工作:設定PATH、設定網絡配置、啟動swap分區、設定/proc等等加載內核庫
具體依據/etc/modules.conf文件及/etc/modules.d目錄下的文件來加載內核模塊執行不同級別的腳本程序
根據運行級別不同,系統會運行rc0.d到rc6.d中相應的腳本程序,來完成相應的初始化工作和啟動相應的服務/etc/rc.d/rc.local
rc.load是在一切初始化工作后,留給用戶進行個性化的地方/bin/login
系統已經進入到了等待用戶輸入username和password的時候了