UEFI /windows boot manager /MBR /syslinux /NT loader /GRUB /變色龍 /Clover 這些術語是什麼關係?
自己查過不少名詞解釋,但對操作系統的引導流程仍理解不清,上面列出的這些名詞哪些是同一層次(作用類似)的?各自又有什麼關係?
BIOS/(U)EFI:啟動加電,檢查硬體,載入系統引導程序。
MBR/GPT:磁碟分區表格式,規定如何把物理硬碟分割成多個分區。
Windows Boot Manager/NT Loader(NTLDR)/Linux Loader(LILO)/Syslinux/GRUB/Clover/變色龍:引導程序(Boot Loader),由 BIOS/EFI 載入到內存,獲得硬體控制權並讓系統其餘部分正常載入運行。
理解整體概念,名詞再多也不怕。
按下電源鍵,系統進入複位狀態,處理器的指令指針被複位為Reset Vector地址,這裡存放一條跳轉指令,將跳轉至Sytem BIOS(下稱SysBIOS)正文段開始執行。
SysBIOS基本目標有三:找到輸入設備、輸出設備以及大容量存儲。輸入設備通常為PS2/USB鍵盤,輸出設備通常為顯卡(對應顯示器),大容量存儲通常為IDE/SATA/SAS磁碟、軟盤、光碟機等。SysBIOS嘗試通過存儲設備載入啟動器, 啟動器選擇合適的操作系統啟動項,完成控制權的移交。另一種啟動方式為PXE,通過網路,根據服務端配置進行操作系統的引導。花樣翻得再多,基本脫離不了這些概念:
SysBIOS -&> UEFIBootloader -&> Windows Boot Manager/syslinux/NT loader/GRUB/變色龍/Clover那麼MBR是什麼呢?這要從老舊的SysBIOS說起。SysBIOS通常存儲在主板ROM晶元中,受限於存儲容量,通常體積很小,功能也有限。事實上有一些功能還需要設備提供,例如顯卡/大容量存儲/PXE網卡設備會提供一份代碼固件(也稱為BIOS),當SysBIOS發現這些設備時會從設備上取出這份代碼並載入執行。而存儲在磁碟上的並不是裸文件,而是包含文件系統的,文件系統千千萬,又互相不兼容,如果將文件系統驅動置入SysBIOS中,不僅體積超標,而且新增的文件系統又無法支持。所以需要一種不依賴文件系統的方法使得SysBIOS能夠讀取磁碟文件,這就是MBR。MBR利用磁碟起始第一個扇區(512B)描述了整塊磁碟的分區信息並包含一段執行代碼,利用這段代碼跳轉至Bootloader。Bootloader存儲在磁碟上,因此就有更大的發揮空間提供更多的功能支持。如果對於GURB有一定的使用經驗,注意stage1與stage2,而且stage1文件大小恰好為512B,因為stage1就是存儲在MBR扇區內的文件,stage2對應真正的Bootloader。其它的Bootloader大同小異。
上面所說都是基於老舊的SysBIOS(稱為Legacy BIOS)。現在的ROM空間更大了,可以存儲的代碼更多了。UEFI的設計目標就是替代Legacy BIOS,不僅實現更多功能,更提供了整套的介面與標準,其99%的代碼是C語言,相對使用彙編語言編寫,降低了開發難度。通過良好的模型抽象,可以實現更多難以想像的功能:現在某些支持UEFI的主板,甚至可以在BIOS中通過只管的圖形化操作完成硬體的配置與超頻,這是Legacy BIOS無法想像的。
附註:
除MBR外,GPT也是磁碟分區布局的一種。隨著磁碟容量的提升,GPT解決了MBR支持磁碟容量上限的瓶頸。MBR最大支持2.2TB,其計算方法為:512Bx2^32/1000/1000/1000≈2.2TB。推薦閱讀:
※為什麼內存的頻率恰好是1333,不是1444,不是別的數啊?
※DDR4的下一代內存會是怎樣的?
※合唱有沒有可能完全用計算機模擬?
※影響電腦運行速度最主要的硬體是什麼?
※當我們在談論XX是否線程安全時,我們在談論什麼?