UEFI 引導與 BIOS 引導在原理上有什麼區別?


翻譯匠哦@聶偉林

BIOS啟動流程:

  1. 系統開機 - 上電自檢(Power On Self Test 或 POST)。
  2. POST過後初始化用於啟動的硬體(磁碟、鍵盤控制器等)。
  3. BIOS會運行BIOS磁碟啟動順序中第一個磁碟的首440bytes(MBR啟動代碼區域)內的代碼。
  4. 啟動引導代碼從BIOS獲得控制權,然後引導啟動下一階段的代碼(如果有的話)(一般是系統的啟動引導代碼)。
  5. 再次被啟動的代碼(二階段代碼)(即啟動引導)會查閱支持和配置文件。
  6. 根據配置文件中的信息,啟動引導程序會將內核和initramfs文件載入系統的RAM中,然後開始啟動內核。

UEFI啟動流程:

  1. 系統開機 - 上電自檢(Power On Self Test 或 POST)。
  2. UEFI 固件被載入,並由它初始化啟動要用的硬體。
  3. 固件讀取其引導管理器以確定從何處(比如,從哪個硬碟及分區)載入哪個 UEFI 應用。
  4. 固件按照引導管理器中的啟動項目,載入UEFI 應用。
  5. 已啟動的 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.pdf


Arch Linux 社區的 Wiki 有比較靠譜的介紹:Unified Extensible Firmware Interface。

其中的兩者的核心流程分別為:

Boot Process under BIOS

  1. System switched on - Power On Self Test, or POST process
  2. After POST BIOS initializes the necessary system hardware for booting (disk, keyboard controllers etc.)
  3. BIOS launches the first 440 bytes (MBR boot code region) of the first disk in the BIOS disk order
  4. The MBR boot code then takes control from BIOS and launches its next stage code (if any) (mostly bootloader code)
  5. The launched (2nd stage) code (actual bootloader) then reads its support and config files
  6. 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

  1. System switched on - Power On Self Test, or POST process.
  2. UEFI firmware is loaded. Firmware initializes the hardware required for booting.
  3. 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).
  4. Firmware then launches the UEFI application as defined in the boot entry in the firmware"s boot manager.
  5. 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?

TAG:Linux | 計算機 | BIOS | UEFI | Windows8 |