1. 程式人生 > 實用技巧 >CentOS 5 CentOS 6 啟動流程及關鍵步驟

CentOS 5 CentOS 6 啟動流程及關鍵步驟

CentOS 5 CentOS 6 啟動流程及關鍵步驟

wKiom1YLxFGQwfI-AACjpunNGng763.jpg

1、加電自檢:當開啟主機電源時,主機會喚醒cpu,使其執行CMOS中的BIOS

BIOS檢查必要的硬體是否存在(記憶體、硬碟等)

BIOS其實是一個小型系統,可以完成一些像檢測這樣的任務。

自檢若不通過,關機

2BIOS查詢可啟動裝置

自檢通過,根據BIOS設定的啟動順序(一般有硬碟啟動、光碟啟動、移動裝置啟動、以及網路啟動等,這個設定值可通過人工干預修改以使載入不同的系統)找到第一個具有載入程式(bootloader)即為要載入的裝置,否則繼續查詢

3MBR引導

載入程式在windows中叫ntloader,在linux早期叫

LILOLInux Loader,在CentOS56等版本便為GRUB 0.xGRUB legacybootloader是在MBR512位元組)的前446個位元組,緊接著64位元組是分割槽表、剩餘兩個位元組表示分割槽表是否可用

4GRUB查詢要載入的kernel

此處以C5 C6為例,GRUB的主要作用是提供一個選單,允許使用者選擇要啟動系統或不同的核心版本,把使用者選定的核心裝載到記憶體的特定空間中,解壓展開,並把系統控制權移交給核心,一臺主機上可能裝有不止一個作業系統,使用者可以根據GRUB提供的啟動選單選定作業系統,隨即載入指定核心

GRUB分為三個階段,

stage 1 這段程式碼的其中一段程式碼是

MBR中的 bootloader(446位元組)這一步在GRUB 中是不可或缺的,主要負責當BIOS 交接給GRUB 時,載入存在於各分割槽中的開機檔案,也就是所謂的開機管理程式。其大小大約512位元組

stage1_5 這段程式碼是在緊接著MBR的,輔助GRUB識別stage2所在的檔案系統所在的磁碟stage1.5 被載入時,就已經賦予GRUB 訪問檔案系統目錄的能力(這段程式中有訪問stage2檔案系統的驅動),所以,自然可以在開始找不到stage2 的情況下,從檔案系統目錄中找出stage2 的所在位置,並激活Linux

其大小約32K

stage 2 boot目錄中,不一定在根分割槽上,即,可以獨立分割槽;

stage提供一個GRUB啟動選單,供使用者選擇不同的作業系統選擇不同的作業系統

提供選項,訪問配置檔案、連線下一個bootsector(主機上可能裝的不止一個系統,,可能,可以手動選擇啟動哪個系統,也可以修改其配置檔案以達到不同效果)stage2主要就是根據配置檔案,或手動選擇、設定啟動需要的核心或系統!

在系統讀秒的過程中按任意鍵可進入GRUB選擇選單,如下圖,假如你的主機中不止一個作業系統,你可以根據需要選擇不同的作業系統;wKioL1YLxHbirgqiAAFNxPfq4dc020.jpg

仔細看選單下面的選項,鍵入e鍵,可在開機前進入編輯模式,如下圖,

方框內第一行代表boot目錄所在的位置,此處為第一個磁碟第一個分割槽,

方框內第二行就是你的核心位置及核心,

方框內第三行ramdiskramfs),這是一個虛擬檔案系統,可通過這個檔案系統可找到根分割槽位置 以方便核心找到根分割槽、init程式、以及必要的驅動程式、庫檔案

在這個介面,如果再次鍵入e鍵,可對你選擇的選項進行修改!

在這兩個介面中你也可以按c進入GRUB的命令

wKioL1YLxIeSzWBhAAG_XY-tJ88444.jpg

在以上兩個介面中你也可以按c進入GRUB的命令列模式

wKiom1YLxImi6gUgAAFI0aCupd8629.jpg

這樣手動指定核心及initrd也能啟動系統

5、載入核心S

GRUB通過GRUB2找到核心及ramdiskGRUBCPU的控制權交給核心;CPU將核心載入到記憶體中;此刻核心將是系統的主角,控制著整個作業系統,CPU探測可識別的所有硬體裝置,將ramdisk中載入到記憶體中;kernel藉助ramdisk找到真正的根分割槽,以只讀方式掛載根檔案系統;完成根切換。

linux核心是單核心體系設計,但又引入了模組化機制;一般有核心核心(/boot/vmlinuz)、核心物件(lib/modules/VERSION-RELEASE)、輔助檔案(/boot/[initrd|initramfs])組成

kernel的功能:程序管理、記憶體管理、檔案系統管理、網路管理、驅動程式管理、安全功能

ramdisk具有根檔案系統驅動、根檔案系統,是在安裝系統時根據根分割槽檔案系統及硬體的驅動動態生成的

ramdiskCentOS5initrd)上是以一個磁碟的格式存在的,CPU與之傳輸時還要經過層層快取,因此比較慢;而在CentOS 6initramfs)上,則以一個檔案系統的身份執行,檔案系統自身具有快取功能,無需快取,因此較快,其磁碟位置一般為(/boot/initrd-VERSION-RELEASE.img /boot/initramfs-VERSION-RELEASE.img

ramdisk檔案可通過mkinitrddracut命令製作,製作原理同安裝系統時的動態生成

6、執行/sbin/init

int是所有程序的起點,init程式負責建立程序和銷燬程序

init程式在CentOS5 SysV(服務序列執行,較慢)配置檔案在/etc/initab中,在CentOS6中為Upstart(接近於並行執行,較快),配置檔案為/etc/inittab/etc/init/*.conf

linux具有七個執行級別:

init0 相當於關機

init1 單使用者模式(root無需登入)single,維護模式

init2 多使用者模式,預設會啟動網路功能,但不會啟動NFS,維護模式

init3 多使用者模式,正常模式;文字介面

init4 預留級別,正常模式;圖形介面

init5 多使用者模式,圖形介面

init6 相當於重啟

配置檔案 /etc/inittab下內容的定義

id:runlevel:action:process

id3initdefault 表示預設開機級別為3,自動進入字元介面

si::sysinit/etc/rc.d/rc.sysinit 系統初始化

l#:#:wait:/etc/rc.d/rc 0 當鍵入init #時,進入該執行級別

tty1:2345respawn:/usr/sbin/mingettytty1 2345級別下執行中端tty1

注:CentOS6是靠/etc/init/rcS.conf啟動服務的

當進入指定級別時,執行指定級別下的服務,指定級別下有服務指令碼連結,當進入指定級別式,會執行其目錄下的(k/s開頭的killstart指令碼)

也可以手動修改、刪除或新增某級別下的服務(chkconfig

7、系統初始化

根據/etc/rc.d/rc/rc.sysinit/系統初始化指令碼實現的

(1)設定主機名

(2)設定歡迎介面

(3)啟用udevselinux

(4)掛載/etc/fstab檔案中定義的檔案系統

(5)檢測根檔案系統,並以讀寫方式重新掛載根檔案系統

(6)設定系統時鐘

(7)啟用swap裝置

(8)根據/etc/sysctl.conf檔案設定核心引數

(9)啟用lvmsoftware raid裝置(硬raid是在開機時啟動的)

(10)載入額外裝置驅動程式

(11)清理操作

自此開機完成,系統會在指定級別中執行指定服務

3kernel2.4以後(3)中udev主要在系統第一次訪問硬體時,根據/sys目錄中的檔案生成/dev下的內容,以方便管理員管理硬體

5)在ramdisk的幫助下,kernel第一次將根檔案系統以只讀方式載入如記憶體、

它只能讀,不能寫入資料,這次將以讀寫方式載入根檔案系統


轉載於:https://blog.51cto.com/fallcamel/1699646