引導過程指的是從計算機通電那一瞬間到CPU開始執行操做系統代碼時的整個過程。在這個很是初期的階段彙總,CPU執行標準的啓動代碼。這部分代碼須要對硬件設備進行探測,尋找最有可能啓動的操做系統而且根據用戶定義的參數啓動這個操做系統。html
大部分PC機仍然使用BIOS引導,默認(通用)的引導加載器(boot loader)。BIOS是一種類型的固件,提供一些簡單的菜單項,用戶經過這寫菜單項能夠修改主板參數、引導設備順序等內容。固件(firmware)能夠看作一種軟件,這種軟件被寫入芯片,因此是「固化」的。固件代碼自己能夠保存在只讀存儲器(ROM)中。也可保存在可編程只讀存儲器(PROM)或者電可擦除只讀存儲器(EEPROM)中,後兩種形式更爲常見。ios
BIOS芯片主要存放:編程
BIOS和固件的功能是同樣的:加載一些基本的自舉(bootstrap)代碼給CPU執行。自舉程序和BIOS或者固件的職責是:初始化硬件、檢測硬件、定位這些引導設備、執行引導加載器程序;引導加載器程序的職責是:尋找選擇的操做系統、將全部必要的命令行參數傳遞給操做系統內核。bootstrap
傳統的BIOS引導操做系統(Windows)以下圖(引用威鋒網):url
計算機開機後,固化在ROM中的BIOS會被加載到內存運行,BIOS自檢完畢後就會加載COMS的參數,經過COMS的參數,BIOS加載啓動磁盤的MBR到內存運行。經過運行MBR的代碼,記錄在MBR分區表中,標記爲活動分區的磁盤分區PBR(Partition Boot Record)被加載到內存運行,PBR在運行後可加載操做系統加載器(如Windows的bootmgr)的代碼到內存運行,操做系統加載器可加載操做系統內核到內存運行,進而完成BIOS的引導流程。操作系統
EFI(Extensible Firmware Interface)是一種取代傳統BIOS的技術。BIOS是一個固定的程序,並且一般是封閉的。EFI是一個全功能的運行時系統,在引導期間提供了更爲強大的接口,甚至在以後的運行時也提供了接口,EFI程序一般是引導加載器。EFI程序其實是一個二進制程序。命令行
EFI的通常由一下幾部分組成:htm
###NVRAM變量接口
NVRAM是固件接口中一個很是強大的功能,並且這顯然是BIOS沒有的功能,NARAM變量是在系統範圍內存在的,操做系統和固件自己均可以訪問。通常來講。NVRAM變量能夠分爲如下幾類:內存
EFI引導操做系統(Windows)過程以下圖(引用威鋒網):
計算機開機後,就會加載固化在只讀存儲器RAM中的pre-EFI初始化程序,進行主橋及存儲器的初始化工做,緊接着載入EFI驅動執行環境(DXE),EFI驅動會被相繼加載及初始化,接着加載、啓動EFI系統,在EFI系統啓動後,GUID分區表就會被識別,以後EFI系統經過加載 NVRAM的參數來決定是否啓動BootCamp程序(蘋果雙重引導的解決方案),不啓動BootCamp程序就會啓動啓動裝載程序(Boot Loader)加載操做系統內核,完成EFI的引導流程。
參考博客:
參考文獻: