系統(tǒng)啟動(dòng)的兩種引導(dǎo)方式
計(jì)算機(jī)系統(tǒng)引導(dǎo)方式主要有兩種:一種是傳統(tǒng)的BIOS模式,另一種是新型UEFI(全稱統(tǒng)一的可擴(kuò)展固件接口)模式。UEFI啟動(dòng)也可以看作是Bios的升級(jí)版。不同模式對(duì)應(yīng)不同的磁盤分區(qū)類型,BIOS只可以識(shí)別MBR分區(qū);而UEFI可同時(shí)識(shí)別MBR分區(qū)和GPT分區(qū),所以在UEFI下可以啟動(dòng)不同磁盤類型中的操作系統(tǒng)。
BIOS芯片
- BIOS+MBR引導(dǎo)過(guò)程
BIOS引導(dǎo)過(guò)程:開(kāi)機(jī)自檢>BIOS>MBR(主引導(dǎo)記錄)–>DPT(磁盤分區(qū)表)>PBR(分區(qū)引導(dǎo)記錄)> Bootmgr(引導(dǎo)管理器)/NTLDR>BCD(從vista開(kāi)始的引導(dǎo)配置數(shù)據(jù))/boot.ini(XP 引導(dǎo)配置文件)>Winload.exe>內(nèi)核加載 >windows vista+/windows xp
- 開(kāi)機(jī)自檢,BIOS先要對(duì)CPU初始化,然后跳轉(zhuǎn)到BIOS啟動(dòng)處進(jìn)行POST自檢,(此過(guò)程如有嚴(yán)重錯(cuò)誤,則電腦會(huì)用不同的報(bào)警聲音提醒),接下來(lái)采用讀中斷的方式加載各種硬件,完成硬件的初始化。
- 讀入MBR(主引導(dǎo)記錄),MBR主要功能是在分區(qū)表(DPT)中尋找可引導(dǎo)的活動(dòng)分區(qū)(也叫激活主分區(qū)),并找到該分區(qū)的引導(dǎo)扇區(qū)(分區(qū)的第一個(gè)扇區(qū))中的分區(qū)引導(dǎo)記錄(PBR),載入PBR中的啟動(dòng)管理器(bootmgr.exe或NTLDR)。注意:MBR磁盤分區(qū)格式下,一個(gè)磁盤只允許有一個(gè)分區(qū)是活動(dòng)的,因此啟動(dòng)文件(bootmgr、BCD)必須存放在活動(dòng)的主分區(qū)內(nèi),這樣才能找到系統(tǒng)載入程序。
- 啟動(dòng)管理器讀取該分區(qū)boot文件夾里的啟動(dòng)配置文本BCD(或根目錄下boot.ini),然后根據(jù)啟動(dòng)設(shè)置文件定位并加載二級(jí)引導(dǎo)載入程序winload.exe來(lái)加載OS內(nèi)核。如果有多個(gè)系統(tǒng),啟動(dòng)配置文件就會(huì)有多個(gè)啟動(dòng)項(xiàng),相應(yīng)的bootmgr也會(huì)提供選擇菜單,然后則根據(jù)用戶選擇來(lái)決定加載哪個(gè)系統(tǒng)的Winload(多系統(tǒng)引導(dǎo)選擇)。
- UEFI+GPT 引導(dǎo)過(guò)程
UEFI引導(dǎo)過(guò)程:開(kāi)機(jī)>UEFI>GPT分區(qū)表>ESP分區(qū)(也稱EFI分區(qū))>efiMicrosoftbootbootmgfw.efi>efiMicrosoftBCD>Windowssystem32winload.efi。此過(guò)程沒(méi)有MBR參與。
- 開(kāi)機(jī)啟動(dòng)自檢,執(zhí)行UEFI初始化模塊;
- UEFI執(zhí)行后,會(huì)進(jìn)行CPU、北橋、南橋及存儲(chǔ)器初始化工作,當(dāng)這部分設(shè)備就緒后,緊接著它就載入U(xiǎn)EFI驅(qū)動(dòng)執(zhí)行環(huán)境(Driver Execution Environment,簡(jiǎn)稱DXE)。當(dāng)DXE被載入時(shí),系統(tǒng)就可以加載硬件設(shè)備的UEFI驅(qū)動(dòng)程序了。DXE使用了枚舉的方式加載各種總線及設(shè)備驅(qū)動(dòng),UEFI驅(qū)動(dòng)程序可以放置于系統(tǒng)的任何位置,只要保證它可以按順序被正確枚舉。借助這一點(diǎn),我們可以把眾多設(shè)備的驅(qū)動(dòng)放置在磁盤的UEFI專用分區(qū)中(ESP分區(qū)),當(dāng)系統(tǒng)正確加載這個(gè)磁盤后,這些驅(qū)動(dòng)就可以被讀取并應(yīng)用了。在這個(gè)特性的作用下,即使新設(shè)備再多,UEFI也可以輕松地一一支持,由此克服了傳統(tǒng)BIOS捉襟見(jiàn)肘的情形。UEFI能支持網(wǎng)絡(luò)設(shè)備并輕松聯(lián)網(wǎng),原因就在于此。
- 從EFI分區(qū)找到啟動(dòng)管理器(efiMicrosoftbootbootmgfw.efi)。
- 啟動(dòng)管理器導(dǎo)入EFI分區(qū)BCD文件(efiMicrosoftBCD),然后根據(jù)其配置內(nèi)容加載引導(dǎo)加載程序winload.efi(C:Windowssystem32winload.efi)來(lái)加載OS內(nèi)核。如果BCD中有多個(gè)配置項(xiàng),則會(huì)讓用戶選擇要啟動(dòng)的系統(tǒng)。如果有多個(gè)系統(tǒng),啟動(dòng)設(shè)置文件就會(huì)有多個(gè)啟動(dòng)項(xiàng),相應(yīng)的bootmgr也會(huì)提供選擇菜單,然后則根據(jù)用戶選擇來(lái)決定加載哪個(gè)系統(tǒng)的Winload(多系統(tǒng)引導(dǎo)原理)。
在GPT磁盤格式下,windows系統(tǒng)的啟動(dòng)文件和啟動(dòng)配置文件(bootmgfw.efi、BCD)是存放在一個(gè)不可見(jiàn)的FAT格式的分區(qū)里的(也叫ESP分區(qū)或EFI分區(qū))。
多系統(tǒng)啟動(dòng)原理
多系統(tǒng)啟動(dòng)(以Windows系統(tǒng)為例)中,BIOS+MBR和UEFI+GPT的引導(dǎo)方法基本上是一樣的,都是通過(guò)啟動(dòng)配置文件(BCD或boot.ini)來(lái)顯示啟動(dòng)菜單,當(dāng)用戶選中其中某個(gè)啟動(dòng)項(xiàng)后,啟動(dòng)管理器會(huì)加載不同分區(qū)的Winload以啟動(dòng)此分區(qū)下的操作系統(tǒng)。
以下是通過(guò)BOOTICE修改啟動(dòng)配置文件(BCD),添加多系統(tǒng)啟動(dòng)項(xiàng):
名詞解釋
BIOS:基本輸入輸出系統(tǒng)(Basic Input Output System)。它是一組固化到計(jì)算機(jī)主板上一個(gè)ROM芯片上的程序,它保存著計(jì)算機(jī)最重要的基本輸入輸出的程序、開(kāi)機(jī)后自檢程序和系統(tǒng)自啟動(dòng)程序,它可從CMOS中讀寫系統(tǒng)設(shè)置的具體信息。完成硬件的初始化后,開(kāi)始讀入磁盤中的主引導(dǎo)記錄(MBR)。
MBR:主引導(dǎo)記錄(Master Boot Record)是位于磁盤最前邊的一段引導(dǎo)(Loader)代碼,主要有啟動(dòng)代碼、硬盤分區(qū)表和結(jié)束標(biāo)志字三部分組成。它負(fù)責(zé)磁盤操作系統(tǒng)(DOS)對(duì)磁盤進(jìn)行讀寫時(shí)分區(qū)合法性的判別、分區(qū)引導(dǎo)信息的定位,硬盤的主引導(dǎo)記錄(MBR)是不屬于任何一個(gè)操作系統(tǒng)的,它先于所有的操作系統(tǒng)而被調(diào)入內(nèi)存,并發(fā)揮作用,然后才將控制權(quán)交給主分區(qū)(活動(dòng)分區(qū))內(nèi)的操作系統(tǒng)。
DPT:磁盤分區(qū)表(Disk Partition Table)屬于主引導(dǎo)記錄中的第二部分,占據(jù)主引導(dǎo)扇區(qū)的64個(gè)字節(jié)(偏移01BEH--偏移01FDH),可以對(duì)四個(gè)分區(qū)的信息進(jìn)行描述,其中每個(gè)分區(qū)的信息占據(jù)16個(gè)字節(jié)。
PBR:分區(qū)引導(dǎo)記錄 (Partition Boot Record)可以加載該分區(qū)的io.sys (dos / win9x) 或 ntldr(win2000 xp 2003) 或 bootmgr (vista/win2008/win7/win10 )。
bootmgr:?jiǎn)?dòng)管理器(Boot Manager),是在Windows Vista、Windows 7、windows 8/8.1和windows 10中使用的新的啟動(dòng)管理器,以代替Windows NT系列操作系統(tǒng)(Windows XP、Windows 2003)中的啟動(dòng)管理器——NTLDR。
NTLDR:是一個(gè)隱藏的、只讀的系統(tǒng)文件,位置在系統(tǒng)盤的根目錄,功能是讀取boot.ini,之后裝載所選操作系統(tǒng)。是windows nt 4.0/windows 2000/windows xp/windows server 2003的引導(dǎo)文件。
BCD:啟動(dòng)設(shè)置數(shù)據(jù)(Boot Configuration Data) ,BCD是操作系統(tǒng)中的啟動(dòng)設(shè)置數(shù)據(jù),在有vista或windows7的多重操作系統(tǒng)中,系統(tǒng)通過(guò)bootmgr程序?qū)隑CD文件完成啟動(dòng)菜單的引導(dǎo)。可以在高級(jí) 系統(tǒng)設(shè)置-啟動(dòng)和故障恢復(fù) 中調(diào)整開(kāi)機(jī)默認(rèn)操作系統(tǒng)和等待時(shí)間。
boot.ini:?jiǎn)?dòng)配置文件,Windows NT、Windows 2000、Windows XP、Windows Server 2003主要依賴Boot.ini文件來(lái)確定計(jì)算機(jī)在引導(dǎo)過(guò)程中顯示的可供選取的操作系統(tǒng)類別、等待時(shí)間等。
UEFI:統(tǒng)一的可擴(kuò)展固件接口(Unified Extensible Firmware Interface), 這種接口用于操作系統(tǒng)自動(dòng)從預(yù)啟動(dòng)的操作環(huán)境,加載到一種操作系統(tǒng)上。
GPT:GUID磁盤分區(qū)表(GUID Partition Table)是一個(gè)實(shí)體硬盤的分區(qū)表的結(jié)構(gòu)布局的標(biāo)準(zhǔn)。用于替代BIOS系統(tǒng)存儲(chǔ)邏輯塊地址和大小信息的主開(kāi)機(jī)紀(jì)錄(MBR)分區(qū)表。