bootmgr

bootmgr

bootmgr:啟動管理器。Bootmgr是Boot Manager的縮寫,是在Windows Vista、Windows 7、windows 8/8.1和windows 10中使用的新的啟動管理器,以代替Windows NT系列作業系統(Windows XP、Windows 2003)中的啟動管理器——NTLDR。

定義

bootmgr:啟動管理器。Bootmgr是Boot Manager的縮寫,是在Windows Vista和Windows 7中使用的新的啟動管理器,以代替Windows xp中的啟動管理器—NTLDR。在微軟的Windows Vista,Windows Server 2008和Windows 7作業系統中,其啟動過程與從前的以NT為核心的Windows版本略有不同。bootmgr就相當於Win NT/Win 2000/Win XP時代的NTLDR。

原理

電腦加電後,首先是啟動BIOS程式,BIOS自檢完畢後,找到硬碟上的主引導記錄MBR,MBR讀取DPT(分區表),從中找出活動的主分區,然後讀取活動主分區的PBR(分區引導記錄,也叫DBR),PBR再搜尋分區內的啟動管理器檔案bootmgr,在bootmgr被找到後,控制權就交給了bootmgr。bootmgr讀取\boot\bcd檔案(BCD=Boot Configuration Data ,也就是“啟動配置數據”,簡單地說,windows7下的bcd檔案就相當於xp下的boot.ini檔案),如果存在著多個作業系統並且選擇操作系 統的等待時間不為0的話,這時就會在顯示器上顯示作業系統的選擇界面。在我們選擇啟動Windows 7後,bootmgr就會去啟動盤尋找 WINDOWS\system32\winload.exe,然後通過winload.exe載入windows7核心,從而啟動整個windows7系 統。可以把這個過程簡單地概括為:

BIOS-->MBR-->DPT-->PBR--> Bootmgr-->bcd-->Winload.exe-->核心載入 -->整個windows7系統

可以說,bootmgr就相當於Win NT/Win 2000/Win XP時代的NTLDR。NTLDR是win nt/win2000/WinXP中的引導檔案,是一個隱藏的,唯讀的系統檔案,位置在系統盤的根目錄,它的主要職責是解析Boot.ini檔案,用來裝載作業系統。一個值得注意的變化是,Windows 7啟動管理器是按空格鍵而不是按F8功能鍵調用。 但F8鍵依然具有調取高級啟動選項選單的功能。 為了保持一個可擴展固件接口系統,也為了使版本最高的啟動管理器負責管理所有的作業系統,使啟動管理器具備向下兼容性、而不是向上兼容,Windows啟動管理器對已安裝的所有作業系統統一列為一個可供選擇的選單,在配置 Windows Vista與Windows 2000/XP的多系統共存時,bootmgr 將全面負責計算機的啟動管理工作,NTLDR 將淪為 bootmgr 的替補。舉個例子,假設我們配置了Windows Vista、Windows XP兩個作業系統的共存,bootmgr 啟動選單並不會把 Windows XP也列在啟動選單里,而是將它顯示為“早期版本的 Windows”。

啟動配置數據(BCD)是一種用於啟動時的配置數據固件獨立資料庫。它取代了NTLDR中的boot.ini,是由微軟的新Windows啟動管理器使用。啟動配置數據 (BCD) 存儲包含啟動配置參數,並在Windows Vista 和 Windows Server 2008 作業系統中控制作業系統的啟動方式。這些參數以前位於Boot.ini 檔案中(在基於 BIOS 的作業系統中)或穩定 RAM (NVRAM) 項中(在基於可擴展固件接口的作業系統中)。通過在 BCD 存儲中添加、刪除、編輯和附加項,可以使用 Bcdedit.exe 命令行工具來影響在預作業系統環境中運行的 Windows(R) 代碼。Bcdedit.exe 位於 Windows Vista 分區的 \Windows\System32 目錄中。創建 BCD 旨在為描述啟動配置數據提供一種改進的機制。隨著新固件模型 [例如,可擴展固件接口 (EFI)] 的發展,用戶需要一個可擴展且可互操作的接口以提取底層固件。這一全新的設計為 Windows Vista 中的多種新功能(例如,啟動修復工具和多用戶安裝捷徑)提供了支持。

微軟作業系統Windows 7,然而,這個7 並不是代表 Windows 7 的核心版本已經從 Windows Vista 的 NT 6 升級至 NT 7,而只是代表 Windows 7 是微軟正式發行的桌面 Windows 第七代產品而已。Windows 7 真正的核心版本號僅僅是 NT 6.1,Windows 7 與 Windows Vista 的關係好比是 Windows XP(NT 5.1)與 Windows 2000(NT 5.0)。時隔多年,Windows 又一次與我們玩起了文字遊戲,以至於有人將 Windows 7 戲稱為“NT 6.1 = Windows 非常 6+1 = Windows 7”。 為了更為直觀地理解 Windows 7 = NT 6+1,不妨從 Windows 啟動管理器的層面看待這個問題。與容易混淆的 Windows 正式產品名稱相比,啟動管理器一直是嚴格按照 Windows 系統的核心版本加以區分的。這是由於在配置多重作業系統共存時,必須由版本最高的啟動管理器負責管理所有的作業系統,啟動管理器只具備向下兼容性、不具備向上兼容性。因此,啟動管理器的版本必須嚴格按照高低先後的順序正確排列,而不能像 Windows 的正式名稱一樣胡亂設定,否則便有可能無法正確配置多重作業系統共存。

例如,Windows 2000/XP/Server 2003 之所以都叫做 NT 5.X,是因為它們的啟動管理器全部都是 NTLDR 與 BOOT.ini。在配置 Windows 2000/XP/Server 2003 彼此之間的多系統共存時,每一個作業系統都是由 NTLDR 與 BOOT.INI 統一管理的,大家是平起平坐的關係。而做為 NT 6.X 的 Windows Vista/Server 2008/7 則採用了 BOOTMGR 與 BCD 的新式啟動管理器,在配置 Windows Vista/Server 2008/7 與 Windows 2000/XP/Server 2003 的多系統共存時,BOOTMGR 將全面負責計算機的啟動管理工作,NTLDR 將淪為 BOOTMGR 的替補。舉個例子,假設我們配置了 Windows Vista、Windows XP、Windows Server 2008、Windows Server 2003 四個作業系統的共存,BOOTMGR 啟動選單並不會把 Windows XP 與 Windows Server 2003 分別列在啟動選單里,而是將它們統一顯示為“早期版本的 Windows”。只有做為 NT 6.X 的 Windows Vista 與 Windows Server 2008 才有資格在 BOOTMGR 啟動選單中以獨立選項的姿態出現。我們只有選擇了“早期版本的 Windows”選項,由 BOOTMGR 將啟動控制權移交給 NTLDR 並自動切換為 NTLDR 選單,這時才可以繼續選擇需要啟動 Windows XP 還是 Windows Server 2003。換言之,NTLDR 啟動選單就像是 BOOTMGR 啟動選單的子選單一樣。

現在我們再來看一下 Windows 7,當我們在安裝有 Windows Vista/Server 2008 的計算機中安裝了 Windows 7 後,Windows 7 會將自己添加在 BCD 里,與原有的 Windows Vista/Server 2008 實現共存,BOOTMGR 啟動選單將顯示 Windows 7、Windows Vista/Server 2008 及早期版本的 Windows(如果有的話)三個選項。換言之,Windows 7 採用的啟動管理器依然是 BOOTMGR 與 BCD,它與 Windows Vista/Server 2008 是一個平起平坐的關係。

假如微軟發行了windowsx,Windowsx 的核心版本叫做 NT 7 的話,那么它應該拿出一個版本比 BOOTMGR 與 BCD 更高的新啟動管理器才對,由這個新的啟動管理器接管 BOOTMGR 與 BCD 的工作。當然,目前在現實中是不存在這樣一個啟動管理器的,我們不妨將其假設為 Loader v7。那么,當我們安裝了 Windows NT 7 系統後,Loader v7 將自動取代 BOOTMGR 與 BCD 負責計算機的啟動管理,到時候只有符合 NT 7.X 版本的 Windows 系統才有資格以獨立選項的姿態出現在 Loader v7 選單中,Windows Vista/Server 2008 將被統一顯示為“早期版本的 Windows”、Windows XP/Server 2003 則將被顯示為“更早期版本的 Windows”(當然,如果幾年以後真的有 Loader v7,到時它究竟還能否向下兼容 Windows XP/Server 2003 恐怕很難說了)。

現在,Windows 7 雖然正式名稱叫做 7,但是它卻並沒有拿出這樣一款更高級的 Loader v7 啟動管理器,依然只能依靠 BOOTMGR 與 BCD、同 Windows Vista/Server 2008 平起平坐,因此 Windows 7 的核心版本號還沒有資格提升到 NT 7 的高度,最多只能叫做 NT 6.1 了。就像 Windows 2000/XP/Server 2003 可以並列在一起成為 NT 5.X 系列一樣、Windows Vista/Server 2008/( R2)/2012/2012(R2)/7/8/8.1/8.1 也可以並列在一起組成一個相對完整的 NT 6.X 家族了。

其實,在 Windows 7 核心版本號確定之前,筆者個人還是非常希望 Windows 7 能夠設計新的啟動管理器取代 BOOTMGR 與 BCD,真正成為 NT 7 的。現有的 BOOTMGR 與 BCD 雖然已經很好用,但有一個最大的缺陷就是它始終還是基於純字元界面的、不是一個支持滑鼠操作的 GUI 界面,叫做 Windows 未免有些名不副實。不過,現在的win8(.1)已經實現了這個圖形化GUI。但是,這不是使用更高版本的啟動管理器實現的,而是利用了windows核心。這個界面在出現時系統的核心已經調入,雖然華美便於操作,但為多系統引導和“安全模式”進入帶來了不便。在早期的windows中,在“選擇作業系統”界面,只要你選中了你想啟動的系統,它就會立即啟動。現在的win8.1中,如果你選擇了其它系統,電腦會先退出win8.1,然後電腦只能在重啟一次後才會裝入你選擇的系統(win8.1的核心必須退出記憶體,這要求必須重啟)。這個過程還包括安全模式進入的過程等等,也要先退出win8.1,再重啟。這不僅大大增加了多系統用戶的啟動時間,而且加大了故障恢復的難度(因為當系統嚴重出錯時,win8.1核心無法調入,就無法出現“選擇作業系統”的界面。這樣,如“某公司的備份還原精靈”這樣的恢復工具也無法啟動,你只能藉助隨身碟啟動了)。其它作業系統可是早就實現圖形方式的啟動管理器了,這不得不說是一個遺憾。試想如果開機自檢後可以出現一個圖形化的啟動界面,通過滑鼠點擊按鈕選擇作業系統以及安全模式等選項該有多好,期待 NT 7 將來可以實現。目前只有使用 ERD Commander 等第三方啟動管理器軟體才可以實現這個目的了

解決辦法

bootmgr出現以下三個問題之後的解決辦法:

1, 出現“Bootmgr is missing,please press Ctrl+Alt+Del to restart”錯誤提示時的解決辦法

bootmgr丟失,按Ctrl + Alt + DEL 重新啟動。錯誤往往在以下情況:您不小心刪除了一些重要系統檔案,或者檔案被病毒或惡意軟體損壞或摧毀,還可能您採取了不適當的BIOS模擬等方式,讓你不能訪問桌面環境。

一、插入Windows 對應版本的DVD安裝光碟,用它來啟動電腦,如果沒有正常啟動,請確定在BIOS裡面設定下開機啟動順序,先由DVD驅動器啟動電腦

二、在安裝Winows那個視窗,選擇系統語言、時區、鍵盤模式,然後點擊下一步按鈕

三、在下一步驟的螢幕左下角,點擊“修復您的電腦”

四、如果您有很多Windows硬碟分區的話,請先選擇您要修復的那個分區, 如果您只有一個Windows安裝,那么選擇只有一個

五、在“系統恢複選項”視窗,點擊“啟動修復”,這樣,就可以防止Windows無法啟動,也解決丟失bootmgr錯誤提示的問題

2, 出現“BOOTMGR is compressed Press Ctrl+Alt+Del to restart”錯誤提示時的解決辦法

方法一,找一張winpe光碟,用它引導進入Win PE系統,打開我的電腦,右擊C糟,選擇屬性,把那個“壓縮此驅動器以節約磁碟空間”的勾去掉,然後確定,會出現bootmgr是唯讀檔案,是否忽略,全部忽略即可,好了,大功告成,重啟後一切正常

方法二,windows7對C糟進行了壓縮後,惡夢開始了。重啟後顯示:“BOOTMGR is compressed Press Ctrl+Alt+Del to restart”。解決方法是:

1、用其他系統啟動,選擇修復

2、運行“Bootrec.exe /fixmbr、Bootrec /fixboot"然後重啟

當然在運行這個命令之前,網上的兩種方法我都試過了,C糟也解壓縮了。

網上通用的方法如下:

1、Boot the vista dvd to get to the command line.

expand bootmgr temp

attrib bootmgr -s -r -h

del bootmgr

ren temp bootmgr

attrib bootmgr -a +s +r +h

2、Vista以上系統安裝盤啟動,打開命令提示符,轉到你Windows作業系統的system32(一般為c:\windows\system32),之後“compact /u c:\bootmgr“最好運行"compact /u /a /f /s:C:\",把c:整個分區解壓縮。

3,win2008系統出現“BOOTMGR is missing”解決方案

1、插入windows 2008安裝光碟

2、選擇語言後,點擊修復您的計算機

3、如果找不到作業系統路徑

4、進入命令行模式:每個盤符查看哪個為系統盤:

如 >e:

>dir

找到系統盤符後鍵入:bootrec/rebuildbcd,可以找到windows安裝路徑,按照提示鍵入“y”,然後重啟

5、繼續修復,可以找到系統分區信息,命令行鍵入:

x:sources>cd recovery

x:sources>startrep.exe

自動找到錯誤並修復,修復完成點擊finish,自動重啟後成功進入作業系統。

相關詞條

相關搜尋

熱門詞條

聯絡我們