UEFI 引導與 BIOS 引導在原理上有什麼區別?
翻譯匠哦@聶偉林
BIOS啟動流程:
- 系統開機 - 上電自檢(Power On Self Test 或 POST)。
- POST過後初始化用於啟動的硬體(磁碟、鍵盤控制器等)。
- BIOS會運行BIOS磁碟啟動順序中第一個磁碟的首440bytes(MBR啟動代碼區域)內的代碼。
- 啟動引導代碼從BIOS獲得控制權,然後引導啟動下一階段的代碼(如果有的話)(一般是系統的啟動引導代碼)。
- 再次被啟動的代碼(二階段代碼)(即啟動引導)會查閱支持和配置文件。
- 根據配置文件中的信息,啟動引導程序會將內核和initramfs文件載入系統的RAM中,然後開始啟動內核。
UEFI啟動流程:
- 系統開機 - 上電自檢(Power On Self Test 或 POST)。
- UEFI 固件被載入,並由它初始化啟動要用的硬體。
- 固件讀取其引導管理器以確定從何處(比如,從哪個硬碟及分區)載入哪個 UEFI 應用。
- 固件按照引導管理器中的啟動項目,載入UEFI 應用。
- 已啟動的 UEFI 應用還可以啟動其他應用(對應於 UEFI shell 或 rEFInd 之類的引導管理器的情況)或者啟動內核及initramfs(對應於GRUB之類引導器的情況),這取決於 UEFI 應用的配置。
瀉……葯?
bios不太懂,uefi的開機過程有一個很神奇的特點可以講一講
cpu收到某引腳的信號後,完成自己的初始化進入real mode然後cs:ip指到著名位置執行bios晶元的指令,這個時候只有cpu,內存還沒有初始化
然後uefi固件執行sec
sec的作用是驗證……其實就沒啥用啦。不過sec在執行前uefi固件會把cpu從real mode設置為P mode或long mode……which means, x64系平台其實在其他部分初始化之前cpu就已經進入long mode了。
sec完成後執行pei……額忘了說car
因為內存沒有初始化,所以實際上uefi固件這個時候沒內存用,然後uefi把cpu的緩存設置為一種狀態可以用作內存,叫做cache as ram,這是在sec階段做的。pei接著用sec設置好的cache as ram,然後執行一堆peim,就是初始化模塊啦,這些模塊是初始化一些硬體用的,pei完成後內存就初始化好了反正。
然後dxe是載入驅動的過程
然後就要運行application了
參考文獻no money的答案uefi原理與編程沒有原理,只有規定
http://www.uefi.org/sites/default/files/resources/2_4_Errata_B.pdfArch Linux 社區的 Wiki 有比較靠譜的介紹:Unified Extensible Firmware Interface。
其中的兩者的核心流程分別為:Boot Process under BIOS
- System switched on - Power On Self Test, or POST process
- After POST BIOS initializes the necessary system hardware for booting (disk, keyboard controllers etc.)
- BIOS launches the first 440 bytes (MBR boot code region) of the first disk in the BIOS disk order
- The MBR boot code then takes control from BIOS and launches its next stage code (if any) (mostly bootloader code)
- The launched (2nd stage) code (actual bootloader) then reads its support and config files
- Based on the data in its config files, the bootloader loads the kernel and initramfs into system memory (RAM) and launches the kernel
Boot Process under UEFI
- System switched on - Power On Self Test, or POST process.
- UEFI firmware is loaded. Firmware initializes the hardware required for booting.
- Firmware then reads its Boot Manager data to determine which UEFI application to be launched and from where (i.e. from which disk and partition).
- Firmware then launches the UEFI application as defined in the boot entry in the firmware"s boot manager.
- The launched UEFI application may launch another application (in case of UEFI Shell or a boot manager like rEFInd) or the kernel and initramfs (in case of a bootloader like GRUB) depending on how the UEFI application was configured.
從這裡我們可以看到一些區別。而根據我的使用經驗來看,UEFI 確實更為現代化一些,啟動程序被更為合理地進行了管理。
P.S. 當然,以上粗略的結論是沒有結合 Secure Boot 的。最近被這東西折騰的夠嗆。對普通用戶最大的區別是,符合標準的bootloader必須為UEFI保證二進位兼容。
結果:
32位UEFI固件只能啟動32位操作系統。64位UEFI固件只能啟動64位操作系統。由於歷史因素、OEM政策,許多低內存品牌機和平板都採用不帶CSM的32位UEFI固件,未來它們可能無法升級到64位Windows。看了所有的答案,其實說的都對也都不對。都對是說基本上說的都是正確的事,說不對是說並沒有真正的正面回答提問者的問題。
首先,我假設您問的是兩者在『引導』的方式,原理上的不同。這是我對您問題的最直觀的理解。
區別其實很簡單,傳統BIOS,我們也稱之為legacy bios,他的引導方式很簡單,就是上電自檢後,跑完POST,幹完一大堆活以後,會去讀取啟動設備的 0磁軌 1扇區 上面的前512位元組(MBR)的數據。這就是我們常說的啟動扇區,boot sector,BIOS會看最後兩個位元組是不是55 AA,如果是就用一條jmp指令跳過去就是了
而UEFI引導則是基於文件系統的,理論上沒有MBR這樣的東西(當然,實際上為了兼容性等等一大堆問題,可能磁碟上還是會有個MBR)。boot的時候,載入啟動設備上面的uefi loader,換句話說,uefi loader是一個永遠也不會返回的uefi app就是了
根據蘋果系統啟動方式的熟悉也可以大致了解下區別【Mac技術組】Mac 系統引導過程概述 BootCamp 的秘密
最根本的區別是:1. BIOS那個時候沒有統一的規範,UEFI有啦。2. BIOS那個時候總有個1M的情節,UEFI沒有了。3. BIOS那個時候是彙編寫的,UEFI99%是C語言,更類似現在的軟體角度。4. 其實我覺得沒啥區別,就是Intel為了搞壟斷,自己搞了個規則出來,大家都得按這個規則來玩,怎麼玩都逃不出他的手掌心。
怎麼都答不到點上的,基本的形式差別是:
BIOS把MBR讀出來交給CPU執行,做MBR做想做的事。
UEFI是查找磁碟里的efiootootx64.efi文件,啟動這個可執行程序,讓這程序做想做的事。
直接好處除了開機快點外,最重要的是裝系統超級方便了。
把微軟爸爸的系統鏡像解壓到U盤就能裝機去了,不用再各種啟動盤製作工具艹U盤的MBR(那些年戰XP戰各種主板兼容回憶起來真的一臉血)。
上面已經答的很好了
其實UEFI就是BIOS,2者功能上完全一樣,都是初始化硬體,也就是把電腦主機的硬體工作起來,然後載入操作系統。
個人覺得UEFI有如下優點:
UEFI啟動的時候讀的是文件系統,而不是硬碟分區,這樣在硬碟分區失敗的時候不會導致啟動不了,啟動也更加靈活,從U盤啟動,只需要 U盤為fat32格式就可以了。但是也有不方便的時候,比如啟動DOS系統,當然現在也很少有人用到了。
當然現在啟動需要功能越來越少了,很多工作都放到操作系統去了。現在UEFI只需要保證系統更快啟動就可以了。
維基有詳細的說明,建議提問題前先查下資料https://zh.m.wikipedia.org/wiki/統一可延伸韌體介面
推薦閱讀:
※UEFI+GPT與BIOS+MBR各自有什麼優缺點?
※Win10下固態硬碟與機械硬碟混搭應該採取GPT還是MBR?
※uefi啟動全部過程是怎麼樣的?
※買的新電腦,去裝系統技術那邊說現在的電腦都是UEFI,一定要裝正版系統!請問現在電腦只支持正版系統嗎?
※UEFI 模式下如何安裝 Ubuntu 16.04?