Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdboot.exe 文件的關系



本教程針對於UEFI啟動來敘述的,根據普遍的支持UEFI的機器來敘述。

標題簡要說明:
Windows Boot Manager  --------安裝完Windows系統后而出現的啟動選項(相關的信息存儲在NVRAM),可以刪除和建立,和bcdboot.exe有關

Bootmgfw.efi  --------引導Windows的引導文件  
Bootx64.efi ---------UEFI的必需引導文件
bcdboot.exe--------修復UEFI啟動的命令行工具,微軟出品

開始前先引進兩個概念:

計算機默認引導  -----------就是不管你的計算機有沒有操作系統,定義了UEFI啟動后將通過Bootx64.efi 引導你的計算機,並進入各種模式,維護、安裝計算機或者系統。
                                          這里是 Bootx64.efi ,它只是一個通用名,權限豐富且大於Windows 默認,就是說如果你的Windows 默認的啟動文件不在了,
                                          啟動計算機默認的引導文件Bootx64.efi 也是可以啟動計算機的。使用計算機默認文件隨時可以在各種環境下啟動計算機,EFI SHELL、ISO、
                                          Windows、Linux...都可以,通吃型.

Windows默認引導 -------就是你為計算機安裝了操作系統,或者修復了UEFI引導后,啟動菜單會有 Windows Boot Manager 選項,該選項默認從bootmgfw.efi 啟動系統
                                          bootmgfw.efi  該位置的該文件只能用於啟動Windows,不是通用名,權限單一

0、
對於UEFI啟動環境來說,Bootx64.efi 用處更大,這里Bootx64.efi 是個通用名,就是所任意有效的efi改成Bootx64.efi 都被計算機啟動加載,並啟動。
bootmgfw.efi 不是通用名,只適合啟動Windows。

當然對於UEFI啟動Windows來說Bootx64.efi 和bootmgfw.efi 其實是同一個文件,二者的循環冗余校驗CRC值是一樣的。
他們都有啟動windows的能力,但是身處的位置不一樣,

efi\boot\bootx64.efi 
efi\microsoft\boot\bootmgfw.efi

對系統的引導產生的影響肯定也不一樣,下面我們來驗證....

從三個方向來講:(以下結論都經過事實驗證,經得住任何懷疑和猜測!!)
========================================================
1、光盤介質UEFI啟動【已驗證】:

通過分析微軟原裝鏡像的UEFI引導記錄(efisys.bin)我發現,最初出光盤的引導文件是efi\boot\bootx64.efi,因為此項驗證較簡單,我總共驗證了:
win7 x64 ;win8 x86 ;win8 x64 三者的光盤引導文件分別是 bootx64.efi  bootia32.efi  bootx64.efi

結論:UEFI在光盤上的啟動不依賴於操作系統,可認為是無操作系統環境,故 bootx64.efi 是計算機默認引導文件========================================================

2、移動磁盤介質UEFI啟動【已驗證】:

普遍的,可以從論壇上看到通過bootx64.efi 啟動U盤

結論:UEFI在移動磁盤介質上的啟動不依賴於操作系統,可認為是無操作系統環境,故 bootx64.efi 是計算機默認引導文件
========================================================

3、本地磁盤介質UEFI啟動【已驗證】:

::原生ESP(or efi)分區引導文件分析

在微軟win10 x64的操作系統,分析efi分區的全部文件,分別存在: 
efi\boot\bootx64.efi 
efi\microsoft\boot\bootmgfw.efi

我們不禁思考:哪個文件測試真正用到的呢?計算機默認啟動哪個呢?系統默認啟動哪個呢?

那好很簡單,我們依次刪除他們看看系統能否啟動就知道了....

1、刪除 bootmgfw.efi ,保留 bootx64.efi  

>結果:
選擇 從本地硬盤啟動 系統仍然可以引導進入
選擇 Windows Boot Manager 
進入失敗


2、刪除 bootx64.efi ,保留 bootmgfw.efi  

>結果:
選擇 從本地硬盤啟動 進入失敗
選擇 Windows Boot Manager 系統仍然可以引導進入

結論:
bootx64.efi 是計算機默認引導文件
bootmgfw.efi 是 Windows默認引導文件



4、bcdboot 和 “Windows Boot Manager ” “ Bootmgfw.efi” “  Bootx64.efi ” 之間的聯系

bcdboot 修復系統引導的命令格式: bcdboot 系統位置 /l 語言

例:

 

1 bcdboot c:\windows /l zh-cn

 

我們執行完這段代碼后:

bcdboot.exe 會修復系統引導,而且會同時修復計算機默認引導Windows 默認引導,在efi分區同時出現bootx64.efi和bootmgfw.efi,

並且bootx64.efi是由bootmgfw.efi 改名而來的。與此同時在Boot Menu啟動選擇菜單那里生成“Windows Boot Manager”,

Windows Boot Manager 及其包含的信息是保存在主板上的NVRAM里面的,而不是保存在硬盤上,故刪除Windows Boot Manager需要到BIOS設置區刪除。

::這里我們如果通過bcdedit查看bcd文件的話,我們可以發現,bootmgfw.efi 是 Windows默認引導文件。所以我們的結論同原生ESP分區測試的結論一樣。


UEFI規范中,關於NVRAM的正解:
NVRAM是BIOS ROM中的一段區域,一般定義為64k byte, 現在EFI把所有的變量都存在這里。

結論:
bootx64.efi 是計算機默認引導文件
bootmgfw.efi 是 Windows默認引導文件

最后:
寫這篇帖子最主要的原因,是能夠讓那些不是很明白Bootx64.efiBootmgfw.efi區別的、或者模糊知道的朋友,清楚了解二者之間的關聯以及區別不要再有 Bootx64.efi就是Bootmgfw.efi改名而來的、Bootx64.efi就是Bootmgfw.efi
像這些不正確的說法,以免誤導后來的朋友.....
准確的說:“Bootx64.efi 可以是 Bootmgfw.efi,也可以是其他任意有效的efi程序

另:
通過上面的驗證可以知道UEFI下修復Windows 引導可以分為:修復計算機默認引導Windows默認引導。

比較通用的是修復計算機默認引導,如果你能夠會UEFI下手動/自動修復計算機默認引導,那么修復Windows 默認引導也不在話下,

從UEFI層面上說,Windows其實是計算機的一個efi應用,它被計算機包含了。所以修復計算機默認引導才是萬能的

當然,在不會手動修復的時候,bcdboot還是很有用的,正常情況下都能修復。只要你的系統沒有經過過度精簡,bcdboot應該都能搞定,
能夠學會手動修復就不用擔心這些了。



下方是一個手動修復計算機默認引導的視頻教程,在一樓底部,視頻看起來很直觀,一看就懂。修復計算機默認引導后,我們可以直接引導Windows,
而可以不必理會Windows默認引導是否存在或者是否正確。

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=303679&page=3#pid2789441

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=299643&page=1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM