(轉載)uefi啓動解析:由原理到實例

這是本文的所有內容:
A:什麼是UEFI,其含義
B:UEFI模塊包含的文件逐個分析及其引導流程+ESP分區的本質
C:判斷本身的機器是X64(64 bit)構架仍是IA32(32 bit)的構架
D:給傳統BIOS下的合盤添加UEFI模塊支持+製做BIOS / UEFI(IA32+X64)
E:給Win8 x86;Win8 x64 的PE添加UEFI啓動支持
F:給VMware虛擬機開啓UEFI,當沒有物理硬件支持的狀況下,不錯的選擇哦。
G:UEFI+GPT系統安裝方法+PE開機自動給ESP分區分配盤符
H:MBR/GPT磁盤轉換
I:EFI SHELL 說明及下載(新增光盤版EFI Shell)網絡


============================================工具

A:什麼是UEFI,其含義 點擊閱讀
============================================
B: 
UEFI模塊包含的文件逐個分析及其引導流程佈局

★ -----------------對於UEFI啓動自己來講,這些文件是必需的
▲----------------- 對於傳統BIOS引導光盤來講,這些文件是製做時必需的
▲----------------- 對於傳統BIOS引導光盤來講,這些文件是引導時必需的
◆ -----------------對於UEFI引導光盤來講,這些文件是製做時必需的
◆ -----------------對於UEFI引導光盤來講,這些文件是引導時必需的
UEFI_MS必需-------------在磁盤介質上,經過UEFI啓動系統,這些文件是必需的測試


=======================================
UEFI 全中文版支持模塊 UEFI_Support.PMF 到D部分下載
=======================================
UEFI_Support.PMF 用Diskgenius 4.20及以上恢復到磁盤時,這些文件意義和用途:字體

(本說明用法:你須要查詢某個文件的用處,直接找那個文件;或者你須要作什麼,從上方認識標示,從本說明標示入手)ui

根目錄
├─boot --------------------------------啓動文件目錄 UEFI_MS必需 + ▲
│ │ BCD --------------------------------傳統BIOS啓動所需BCD菜單文件 ▲
│ │ boot.sdi --------------------------------UEFI/BIOS啓動都須要 UEFI_MS必需 + ▲+ ◆
│ ├─fonts --------------------------------傳統BIOS啓動字體文件目錄(不影響啓動) 
│ │ chs_boot.ttf
│ │ wgl4_boot.ttf
│ └─zh-cn --------------------------------傳統BIOS啓動中文顯示用的目錄(不影響啓動)
│ bootmgr.exe.mui
├─efi--------------------------------UEFI啓動目錄 ★ + UEFI_MS必需 + ◆
│ ├─zh-cn --------------------------------UEFI啓動中文顯示用的目錄(不影響啓動)
│ │ bootia32.efi.mui
│ │ bootx64.efi.mui
│ ├─boot--------------------------------UEFI啓動文件目錄 ★ + UEFI_MS必需 + ◆
│ │ bootia32.efi--------------------------------IA32構架的啓動文件 ★ + UEFI_MS必需 + ◆
│ │ bootx64.efi--------------------------------X64構架的啓動文件 ★ + UEFI_MS必需 + ◆
│ └─microsoft-------------------------------UEFI啓動目錄 UEFI_MS必需 + ◆
│ ├─fonts --------------------------------UEFI啓動中文字體文件目錄(不影響啓動) 
│ │ chs_boot.ttf
│ │ wgl4_boot.ttf
│ └─boot---------------------------------UEFI啓動菜單目錄 UEFI_MS必需 + ◆
│ BCD-------------------------------UEFI啓動菜單 UEFI_MS必需 + ◆
│ 
│─MBR.bin ------------------------製做傳統BIOS下的啓動光盤上時的引導記錄,負責引導Bootmgr,適合x64+x86 ▲
│─bootmgr -----------------------傳統BIOS下的啓動光盤的引導文件,適合x64+x86 ▲
│─UEFI_ALL.BIN-----------------製做UEFi啓動光盤上時的引導記錄(已處理),能夠同時支持引導IA32+X64構架,直接讀取\efi\microsoft\boot\bcd ◆
│─winpe_x86.wim --------------------------------適合IA32構架的winPE,目前僅有Win8 x86 UEFI_MS必需 +▲+ ◆
└─winpe_x64.wim --------------------------------適合X64構架的winPE,目前有Win7/8 x64 UEFI_MS必需+ ▲+ ◆spa

==========================================
而後來講UEFI啓動Windows 的簡要流程:
==========================================
---->>電腦開機(假設已經設置了UEFI爲打開)插件

---->>啓動模塊根據啓動項順序依次查找全部
(FAT分區):\efi\boot\bootia32.efi(IA32構架的啓動文件)
或者
(FAT分區):\efi\boot\bootx64.efi(X64構架的啓動文件)
---->>加載\efi\microsoft\BCD 啓動菜單文件命令行

---->>按照BCD裏面的內容進一步啓動,整個過程和傳統的BIOS相比,沒有引導記錄的參與,不錯不錯blog

提示:
以上的bootia32.efi,bootx64.efi 都是一個efi應用,不一樣的是使用在IA32或者X64構架下。你能夠選擇任意一個efi應用文件,而後更名替代上面的文件。

這裏加載\efi\microsoft\BCD 啓動菜單文件是由於當前的efi文件的內容是微軟寫的,efi內容下一步就指向\efi\microsoft\BCD

咱們固然能夠建立一個abc.efi,而後更名,bootx64.efi 或者bootia32.efi,讓UEFI開機的時候加載,

然而你可讓你本身寫的abc.efi指向某個目錄的某個CFG文件這都隨你願意,從而實現調用......

爲了證明這一點,我下載了EFI SHELL而後將Shell.efi更名爲bootx64.efi,再在X64構架的物理計算機和虛擬機上,進行啓動...

得出的結論是正確的。這是我作好的EFI SHELL文件請到I模塊看說明及下載使用.。
=========================================
 ESP分區的本質
=========================================
ESP:
EFI System Partition
它是當咱們首次爲GPT磁盤分區時會提示創建的,對於UEFI啓動來講,ESP分區不是必需的,可是一個FAT分區確是必須的

ESP的本質是一個FAT分區,只不過度區程序在給GPT磁盤分區的時候提醒你創建ESP,而且你贊成了,那麼程序將創建一個指定大小的FAT分區,
而且命名爲"ESP",從這裏咱們能夠看出 ESP分區能夠用任意位置的任意大小的任意FAT分區代替。

有網友會問,若是存在多個磁盤,每一個磁盤上存在多個FAT分區,怎麼算:
這麼算:多個磁盤根據設定的磁盤啓動順序依次啓動查找FAT分區
每一個磁盤多個FAT分區,那麼誰在前,誰有正確的引導資料就引導誰

注:以上結論本人已經測試成功,非憑空臆想

ESP分區不可見:它是一個特殊的FAT分區,固然可以被任何FAT分區代替,它的特殊性在於,每次關機重啓後,ESP分區的狀態
總會變成不可見,這不是設置隱藏屬性,由於ESP沒有任何隱藏屬性,更加相似於開機過程當中系統將ESP的盤符刪除了,
讓人不能在計算機直接訪問 (G部分有解決方案)


註釋:

好比個人電腦是X64構架的(物理決定),個人UEFI啓動文件只能是(FAT分區):\efi\boot\bootx64.efi,

而若是沒有bootx64.efi文件存在的話,UEFI就啓動失敗,即便存在bootia32.efi,也沒用由於那是IA32構架的電腦使用的

X64構架的電腦使用不了,即便更名,也會由於下一步讀取BCD進一步啓動由於和winload.efi不匹配而失敗。

同理IA32構架的電腦只能使用bootia32.efi。

其實換句話說,X64構架的電腦在UEFI模式下應該是沒法使用Win8 x86的系統和PE的,IA32在UEFI模式下也一樣沒法使用Win7/8 x64的系統和PE

只有在BIOS模式下X64.IA32才能夠,任意使用Win7/8 x86/x64.


聯繫起之後大內存以及X64的普及,那麼之後的電腦基本都是X64的物理構架,IA32的構架將會不多,

也只有早期的電腦存在IA32構架了吧,至少個人RC510是2011年買的是X64構架.....

==================================================
C:
判斷本身的機器是X64(64 bit)構架仍是IA32(32 bit)的構架
一、首先,如今買的機器預裝Win8的大概都是X64構架了吧。個人電腦2011年買的也是X64構架,我想之後都是X64了。。

二、老機器可是可以支持UEFI的,那麼請按照下面的D內容作一個支持UEFI啓動的盤,能夠先不要WIM。

猜想:大部分機器都是X64構架的....

而後,依次:

僅保留\efi\boot\bootia32.efi ,若是可以出現以下方所示的啓動管理界面圖。那麼你的機器是IA32構架的。

僅保留\efi\boot\bootx64.ef,若是可以出現以下方所示的啓動管理界面圖。那麼你的機器是X64構架的。


啓動管理界面:


==================================================

D: 
給傳統BIOS下的合盤添加UEFI模塊支持

該UEFI支持模塊論壇上有的,個人是本身提取自Win8安裝盤的,你們也能夠自行根據我第二部分的文件說明提取,該支持模塊的文件格式是PMF格式,我爲了方便使用作成這樣

BIOS/UEFI 全中文版支持模塊 UEFI_Support.PMF

使用說明:
打開Diskgenius 4.3專業版 或者更高版本,選擇分區,右擊,從文件恢復分區--->選擇PMF文件--->點擊開始。恢復完畢後,分區格式啥的都已經設置完畢了,直接就能夠支持UEFI啓動了。

注:模板裏面的WIM文件是空的,你們自行備齊吧(注意須要PE支持UEFI啓動)樓主我沒有着手DIY趁手的Win8PE。我暫時用的別人現成的。

當你準備齊全全部的WIM文件後,你的U盤就能夠進入UEFI PE啓動了,此時你可使用 Diskgenius 4.3專業版 打包整個分區到PMF之後備用,或者隨便你。


===========================

再談講UEFI啓動支持模塊增長到UD合盤

這個也不難,一句話就是將上面已經作好的,能夠支持UEFI啓動的盤,使用Diskgenius 4.3專業版克隆到你的UD合盤任意一個分區,或者直接將PMF恢復到該分區也能夠。


看圖文教程:
現有分區:

新建尾部分區
右擊現有分區,點擊新建分區


接下來咱們繼續...

出現什麼直接肯定便可。

最後變成這樣:

這樣新建的分區就行了,咱們開始克隆UEFI模塊到UD維護盤

先選擇作好的UEFI支持的U盤,右擊克隆

彈出的選框咱們點擊剛剛分出的UD維護盤尾部分區

確認後就能夠在接下的界面直接點擊開始,一路肯定便可克隆完成。

完成後的樣子:


至此,給你的BIOS模式下的UD啓動盤新增UEFI支持模塊完成!!

==============================================
製做BIOS / UEFI (IA32+X64)三支持啓動ISO超詳細解說&文件提供


目前隨着UEFI的普及,論壇上不少PE的做者紛紛發佈BIOS/UEFI雙啓動ISO,我也有個極致PE,剛剛發佈終結版,惋惜了是Win7 X86的沒法和UEFI搭邊...

廢話少說,如今開始:
要製做 BIOS/UEFI雙啓動ISO 你首先必須瞭解怎樣製做ISO,廣泛的咱們使用微軟的一款叫OSCDimg.exe的命令行工具,該工具非系統自帶須要另外下載。
OSCDimg.exe的版本有不少,固然老版本的是沒法制做BIOS/UEFI雙啓動ISO的咱們要使用2.55版本的。直接到D模塊尾部下載。

說完製做工具,再說製做要點,製做BIOS/UEFI雙啓動ISO須要兩部分的引導記錄(重點):
MBR引導記錄:MBR.bin
UEFI引導記錄:UEFI_X64.bin,UEFI_ia32.bin (前者X64構架用,後者IA32構架用)

再仔細注意下面的OSCDIMG的批處理命令,這是製做BIOS/UEFI雙啓動ISO另外相當重要的一點,我一測試完畢(重點):
@echo off

::要壓制的目錄,至關於光盤的根目錄,表示當前目錄下的Root_Dir目錄
set intdir=.\Root_Dir

::設置光盤的引導文件MBR,表示當前目錄下的MBR.bin文件
set BbootFile=.\MBR.bin

::設置光盤的引導文件UEFI,區分IA32構架引導文件UEFI_ia32.bin,X64構架引導文件UEFI_X64.bin
set UbootFile=.\UEFI_x64.bin

::輸出的文件名,表示輸出到當前目錄下的BootISO.iso文件
set output=.\BootISO.iso

::設置光盤的卷標,表示光盤的卷標是:Bootable
set jb=Bootable

::根據上面已設置的參數,製做
OSCDimg -m -o -u2 -udfver102 -l%jb% -bootdata:2#p00,e,b%BbootFile%#pEF,e,b%UbootFile% %intdir% %output%


注意:
一、執行命令部分成色加粗的u2適用製做PE的雙啓ISO,若是你要製做GRLDR合盤的雙啓模板請將u2改爲u1製做兼容ISO,正常製做PE雙啓ISO推薦u2參數
二、綠色部分能夠任意改,保證正確便可,藍色,部分能夠刪除,黑色加粗部分必須原封不動,至少在你不瞭解含義的狀況下不能動.

==================================================
E:
給Win8 x86;Win8 x64 的PE添加UEFI啓動支持
由於UEFI啓動的是Winload.efi那麼須要補齊相關文件便可,我下載網絡上的一個全功能的 Win8 X64,沒有補齊以前,能夠加載,加載完畢就會出現錯誤。補齊後就沒有問題了,完美UEFI啓動。Win8 x64/x86 UEFI支持文件 點擊下載 
================================================== 
 F:
給VMware虛擬機開啓UEFI,當沒有物理硬件支持的狀況下,不錯的選擇哦。
我只簡單的說下步驟,下載VMware 9,而後按照提示安裝成功。
而後新建虛擬機,注意:在選擇系統的時候選擇 Windows 8 或者 Windows 7/8 x64,不能選擇Windows 7或者更低版本的Windows 。
而後一步步繼續(記住你的虛擬系統的位置),配置好你的虛擬機,該刪除的硬件刪除,設置合理的內存,完畢後關閉虛擬機。
找到你的虛擬系統的位置,而後找到一個.VMX的文件,使用記事本打開,在最後添加一句(紅色部分):firmware = "efi" 
啓動虛擬機,如今你的虛擬機就支持UEFI啓動了。下面的一步步摸索吧。
 注:可以支持UEFI啓動的Windows有:
X86:僅Windows 8(或者之後新出的Windows)
X64:Windows Vista、Windows 7、 Windows 8 (或者之後新出的Windows)
==================================================
G:
UEFI+GPT系統安裝方法
假設我買了一臺機器,沒有預裝系統,可是BIOS默認開啓UEFI,磁盤格式是GPT,沒有光盤,普通的UD維護盤沒法進入系統但裏面有Windows 8鏡像......
如今我開始個人UEFI+GPT系統安裝之旅.....
按照我上面的給你的UD加裝UEFI啓動模塊,(WIM文件本身已經備齊),啓動U盤裏面的PE,進入到Win8PE...
注:UEFI+GPT環境中,Windows 8的光盤鏡像有要求,X64構架的必需使用Windows 8 x64,通常來講新電腦都是x64的.....
使用虛擬光驅加載Windows 8光盤鏡像 或者 提取光盤:\Sources\install.wim文件備用。
首先讓咱們處理一塊新的硬盤(GPT),尚未分區哦

如今咱們開始分區,選擇銀灰色長條,右擊,新建分區

再跳出的對話框裏,按照個人設置勾選....

接下來會理解跳出這個....

好了,咱們好了,這是個人分區佈局

如今,咱們打開 WinNtsetup (本工具已經連續更新N次,版本不影響功能使用)設置界面如圖:
在UEFI+GPT中,ESP(FAT盤是引導盤),這點請注意!

接下來跟着圖走

最後在重啓前咱們看看引導是否就緒.....
在UEFI+GPT中,ESP(FAT盤是引導盤),這點請注意

PE開機自動爲ESP分區分配盤符
完美版:ESP分區顯示批處理
說明:該完美版,在0411下午發佈的版本的基礎上,又花了2小時完善,以前發佈的版本只支持1塊GPT磁盤的ESP分區顯示,
完美版支持理論上支持任意數量的GPT磁盤的ESP分區顯示,智能識別MBR與GPT,不會對MBR分區表的磁盤有任何影響。
測試圖:我使用虛擬機測試了4塊GPT磁盤,虛擬兩塊,U盤模擬兩塊....結果成功顯示所有ESP分區
  
  
完美掛載GPT引導分區——下載地址:點擊下載

內有兩種方案可選!真正智能掛載GPT引導分區。。。(此創意由「糊塗」提出,插件有2011hiboy老師與conlced老師提供,在此表示感謝!)

關於ESP分區:它是一個特殊的FAT分區,固然可以被任何FAT分區代替,在B部分ESP分區的本質我就說過,它的特殊性在於,每次關機
重啓後,ESP分區的狀態總會變成不可見,這不是設置隱藏屬性,由於ESP沒有任何隱藏屬性,更加相似於開機過程當中系統
將ESP的盤符刪除了,讓人不能在計算機直接訪問.
注:PECMD SHOW -1:-1 能夠顯示全部隱藏分區,可是Win8 x86有效,Win8 x64不靈,DISKPART都有效。
==================================================
H:MBR/GPT磁盤轉換
具備不少,基本上分區軟件均可以,奧梅分區助手,Diskgenius,Acronis......
注:轉換會丟失硬盤數據,請謹慎操做和作好必要的備份
本例:Diskgenius

另外相反的:GPT轉換成MBR

注:轉換會丟失硬盤數據,請謹慎操做和作好必要的備份

原文是丟失數據,經本人測試使用Diskgenius進行MBR/GPT的磁盤轉換是不會丟失任何數據的。
==================================================
I:EFI SHELL 說明及下載
現在新買的電腦大多數都會有EFI SHELL的吧,就是相似於一個「DOS窗口」能夠本身收動選擇須要啓動的efi文件,以下圖:

然而有些機器的BIOS裏面只有一個UEFI Boot Support 選項讓咱們選,並無EFI SHELL,咱們就不能體驗手動選擇efi啓動文件了嗎? NO!EFI特性決定了它不須要像BIOS程序同樣老老實實地呆在Flash芯片中,它能夠存在於FAT分區中,而後由開啓UEFI的機器加載.....如今我作好了,直接將PMF文件恢復到U盤便可使用....至於怎麼恢復,那麼請看D部分的PMF文件使用說明PMF格式:EFI SHELL 點擊下載    新增光盤版EFI SHELL 點擊下載 (UEFI啓動有效,已測試)注:該 EFI SHELL 適合 X64構架的計算機使用,IA32構架的機器使用無效....

相關文章
相關標籤/搜索