Windows 操作系統引導過程 BIOS & EFI


引導過程

引導過程指的是從計算機通電那一瞬間到CPU開始執行操作系統代碼時的整個過程。在這個非常初期的階段匯總,CPU執行標准的啟動代碼。這部分代碼需要對硬件設備進行探測,尋找最有可能啟動的操作系統並且根據用戶定義的參數啟動這個操作系統。

傳統形式的引導:BIOS

大部分PC機仍然使用BIOS引導,默認(通用)的引導加載器(boot loader)。BIOS是一種類型的固件,提供一些簡單的菜單項,用戶通過這寫菜單項可以修改主板參數、引導設備順序等內容。固件(firmware)可以看做一種軟件,這種軟件被寫入芯片,所以是“固化”的。固件代碼本身可以保存在只讀存儲器(ROM)中。也可保存在可編程只讀存儲器(PROM)或者電可擦除只讀存儲器(EEPROM)中,后兩種形式更為常見。

BIOS芯片主要存放:

  • 自診斷程序:通過讀取CMOS中的硬件配置,並對其自檢和初始化
  • CMOS設置程序:引導過程中,用特殊熱鍵啟動,進行設置后,存入CMOS RAM中
  • 系統自舉裝載程序(bootstrap):在自檢成功后將磁盤相對0道0扇區上的引導程序裝入內存運行
  • 主要I/O設置的驅動程序和中斷服務

BIOS和固件的功能是一樣的:加載一些基本的自舉(bootstrap)代碼給CPU執行。自舉程序和BIOS或者固件的職責是:初始化硬件、檢測硬件、定位這些引導設備、執行引導加載器程序;引導加載器程序的職責是:尋找選擇的操作系統、將所有必要的命令行參數傳遞給操作系統內核。

傳統的BIOS引導操作系統(Windows)如下圖(引用威鋒網):

 
 

計算機開機后,固化在ROM中的BIOS會被加載到內存運行,BIOS自檢完畢后就會加載COMS的參數,通過COMS的參數,BIOS加載啟動磁盤的MBR到內存運行。通過運行MBR的代碼,記錄在MBR分區表中,標記為活動分區的磁盤分區PBR(Partition Boot Record)被加載到內存運行,PBR在運行后可加載操作系統加載器(如Windows的bootmgr)的代碼到內存運行,操作系統加載器可加載操作系統內核到內存運行,進而完成BIOS的引導流程。

下一代BIOS:EFI

EFI(Extensible Firmware Interface)是一種取代傳統BIOS的技術。BIOS是一個固定的程序,而且通常是封閉的。EFI是一個全功能的運行時系統,在引導期間提供了更為強大的接口,甚至在之后的運行時也提供了接口,EFI程序通常是引導加載器。EFI程序實際上是一個二進制程序。

EFI的一般由一下幾部分組成:

  • Pre-EFI初始化模塊
  • EFI驅動執行環境
  • EFI驅動程序
  • 兼容性支持模塊(CSM)
  • EFI高層應用
  • GUID磁盤分區

NVRAM變量

NVRAM是固件接口中一個非常強大的功能,而且這顯然是BIOS沒有的功能,NARAM變量是在系統范圍內存在的,操作系統和固件本身都可以訪問。一般來說。NVRAM變量可以分為以下幾類:

  • 引導相關的變量:用於指定要引導的內核和根文件系統,還負責向內核傳遞參數。
  • 固件內部變量:固件使用的變量,一般被操作系統忽略
  • 臨時變量:根據需要設置或清空,通常在重新引導的時候不會保留

EFI引導操作系統(Windows)過程如下圖(引用威鋒網):

 
 

計算機開機后,就會加載固化在只讀存儲器RAM中的pre-EFI初始化程序,進行主橋及存儲器的初始化工作,緊接着載入EFI驅動執行環境(DXE),EFI驅動會被相繼加載及初始化,接着加載、啟動EFI系統,在EFI系統啟動后,GUID分區表就會被識別,之后EFI系統通過加載 NVRAM的參數來決定是否啟動BootCamp程序(蘋果雙重引導的解決方案),不啟動BootCamp程序就會啟動啟動裝載程序(Boot Loader)加載操作系統內核,完成EFI的引導流程。

參考博客:

Mac 系統引導過程概述 & BootCamp 的秘密

參考文獻:

百度百科:bios

百度百科:EFI



作者:CoderKo1o
鏈接:https://www.jianshu.com/p/944fc7104a75
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM