Windows作為最流行的個人計算機操作系統,成為了我們學習、工作和生活的一部分。從計算機通電到Windows啟動完成,這具體是怎樣的過程?跟着小編一起去探索吧。
Windows引導過程
Windows作為最流行的個人計算機操作系統,成為了我們學習、工作和生活的一部分。平時使用計算機,我們都得先按下電源鍵然后等待Windows啟動,初始化,進入歡迎頁面,啟動完成。會不會覺得整個過程比較神奇,想一探究竟?其實整個啟動過程經歷了多個階段,接下來小編將一一講述每一個階段,揭開它們神秘的面紗。
通電后CPU首先執行的是主板引導程序,主板引導程序可分為BIOS和UEFI。BIOS是最早的方案,搭配MBR分區使用,BIOS逐漸被UEFI代替,UEFI一般搭配GPT分區使用,所以引導過程會有兩種情況:
1.BIOS + MBR
2.UEFI + GPT
這兩種情況都會分別介紹。
UEFI
UEFI(Unified Extensible Firmware Interface)以靈活擴展、引導更省時等特性,成為了BIOS的替代方案,新推出的主板和操作系統基本上默認使用UEFI引導,小編Win10系統采用的就是UEFI引導。
如何查看自己的計算機是什么方式引導的?
在“此電腦”上右鍵選擇“管理”,彈出“計算機管理”選擇“磁盤管理”,如果能找到一個“EFI系統分區”,那么就是UEFI引導方式了。
UEFI一般搭配GPT分區技術使用,雖然也可以搭配MBR,但是由於MBR磁盤容量最大只能是2TB,在磁盤容量越來越大的今天略顯不足,所以默認都是使用GPT分區技術。GPT可以做到:
1.支持容量超過2TB的磁盤;
2.使用16字節的GUID標識分區類型,不容易沖突;
3.理論上分區數目不限制(受限於Windows只能最多識別128個分區);
4.分區容量幾乎沒有限制,因為使用64位整數,64位整數最大值為2^64 - 1,數值非常大;
5.提供CRC檢驗,檢測數據損壞;
6.備份分區表,提高可靠性。
引導流程
1.按下電源鍵,電源向主板以及其它設備供電,剛開始電壓不穩,主板會持續發送RESET信號給CPU,CPU執行初始化。當電壓穩定后,主板停止發送RESET信號,CPU開始執行指令;
2.CPU讀取UEFI指令,執行UEFI初始化,執行其它設備的初始化;
3.查找EFI分區,EFI分區不需要一定是第一個分區;
4.加載\EFI\Boot\bootx64.efi,在安裝Windows時實際上會使用\EFI\Microsoft\Boot\bootmgfw.efi的內容替換到\EFI\Boot\bootx64.efi,所以\EFI\Boot\bootx64.efi其實就是\EFI\Microsoft\Boot\bootmgfw.efi;
5.bootmgfw.efi會讀取BCD文件,BCD是一個數據庫文件,如果包含多個系統,信息會包含在BCD中,通過顯示一個系統列表供用戶選擇;
6.BCD中包含每個系統的引導文件的路徑,Windows的是\Windows\System32\winload.efi,加載到內存中並執行;
7.winload.efi讀取\Windows\bootstat.dat文件,有需要則顯示引導菜單,比如安全引導等等;接着加載內核程序Ntoskrnl.exe,相關輔助HAL.dll、CI.dll、PSSHED.dll、BootVID.dll,把CPU執行權交給內核程序;
8.內核程序執行系統初始化。
通過上面的流程可知道,引導相關的文件都存放在EFI系統分區中,下圖是小編win10的EFI系統分區的一些文件:
BIOS
BIOS(Basic Input Output System)是最早的引導方案並使用了相當長的一段時間,所以在Win8、Win7、WinXP以及更早的版本都能找到BIOS的引導存在。BIOS只支持MBR分區技術,所以GPT並不適合BIOS。
引導流程
1.上電並穩定后,CPU執行地址0xFFFF0h處指令,此處為BIOS程序;
2.BIOS進行硬件自檢,沒有問題后加載硬盤的第一個扇區到內存0x7c00h處,第一個扇區為MBR(Master
Boot Record),MBR包含執行程序和分區表;
3.CPU開始執行MBR程序,查找第一個活動分區,把活動分區的第一個扇區加載到內存中,活動分區第一個扇區為PBR(Partition Boot Record);
4.CPU開始執行PBR,第一個指令就是跳過BPB(BIOS Parameter Block)到可執行代碼處;BPB包含比較多參數,有族的大小、MFT記錄大小、MFT位置等,用於讀取NTFS文件;
5.PBR讀取VBR(Volume BootRecord,占用分區開始的16扇區)剩余的15扇區到內存中;接着CPU跳轉到0x07C0:027A處,執行BOOTMGR代碼(第二個扇區中);
6.開始尋找bootmgr.exe,找不到則尋找ntldr.exe(win vista之前的系統);
7.CPU加載並跳轉到bootmgr.exe處執行,讀取BCD文件,如果含有多個系統,則列舉顯示供用戶選擇;
8.選擇的是Windows則讀取winload.exe文件到內存中,CPU跳轉到winload.exe處執行,讀取文件\windows\bootstat.dat,,有需要則顯示引導菜單,比如安全引導等等;接着加載內核程序Ntoskrnl.exe,相關輔助HAL.dll、CI.dll、PSSHED.dll、BootVID.dll,把CPU執行權交給內核程序;
9.內核程序執行系統初始化。
可見BIOS引導更多的是通過MBR去引導系統,UEFI則主導整個引導過程。
結束語
在啟動計算機的過程中,難免會遇到各種各樣的問題,比如藍屏、黑屏等等,掌握了其啟動的流程,將有利於我們對各類故障進行排查和修復。