1, BCD 介紹 在Win7中與之前的版本的引導(dǎo)系統(tǒng)不同,微軟引入了一種全新的boot loader架構(gòu), Windows Boot Manager
(Bootmgr.exe)。與之前通過Ntldr來初始化硬件設(shè)備、建立內(nèi)存空間的映射圖等,將系統(tǒng)的軟硬件環(huán)境設(shè)置成一個(gè)合適的狀態(tài),為最終調(diào)用操作
系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境相比。Win7中的新架構(gòu)可以實(shí)現(xiàn)完整的硬件獨(dú)立性,且能夠與多種操作系統(tǒng)無縫結(jié)合,讓W(xué)in7的啟動(dòng)/引導(dǎo)過程更加快速與安
全。同時(shí),將之前Windows系統(tǒng)中由Boot.ini管理的內(nèi)容移交給新的Boot Configuration Data (BCD :
啟動(dòng)設(shè)置數(shù)據(jù)),當(dāng)然,也提供了新的啟動(dòng)選項(xiàng)編輯工具,BCDEdit (BCDEdit.exe),來管理啟動(dòng)設(shè)置。
BCDEdit:Win7啟動(dòng)設(shè)置編輯工具
如果是新安裝Win7操作系統(tǒng),你將會(huì)發(fā)現(xiàn)在的文件夾中Boot.ini文件已經(jīng)徹底消失;如果系統(tǒng)中安裝了之前的操作系統(tǒng)版本,雖然仍可找到Boot.ini文件,但是這個(gè)文件只作用于老版本的操作系統(tǒng),并不對(duì)Win7造成任何影響。
在基于EFI (Extensible Firmware Interface : 可擴(kuò)展固件接口,以后采用這種接口的PC會(huì)越來越多
)的計(jì)算機(jī)中,Boot.ini
文件則更不復(fù)存在,在基于EFI的系統(tǒng)中,啟動(dòng)選項(xiàng)被貯存在主板的存儲(chǔ)器中。此時(shí)要修改啟動(dòng)選項(xiàng),就需要使用BCDEdit,甚至在修改Boot.ini
的方式也不能使用原先的文本編輯器。另外一方面,微軟在Win7中提供了可通過WMI (Windows Management
Instrumentation : Windows管理規(guī)范)調(diào)用的BCD類,通過它可以用編程的方式修改BCD數(shù)據(jù)。
BCDEdit的啟動(dòng) BCDEdit不是一個(gè)運(yùn)行于圖形界面程序,而是一個(gè)命令行工具,運(yùn)行文件Bcdedit.exe位于
“\Windows\System32”目錄下。如果需要執(zhí)行BCDEdit,首先應(yīng)進(jìn)入命令行窗口,并要將操作用戶并提升至管理員權(quán)限。在命令行窗口
中,輸入“bcdedit” 即可。
2,BCDEdit命令簡(jiǎn)介 通過命令行工具Bcdedit,用戶可以添加、刪除及修改BCD (Boot Configuration
Data)中的對(duì)象。在BCD中,每個(gè)對(duì)象均具有唯一的 GUID (Globally Unique Identifier :
全局唯一標(biāo)識(shí)符),如系統(tǒng)中的每塊硬盤、每個(gè)分區(qū)的GUID (全局唯一標(biāo)識(shí)符)均不相同。
在BCD中,硬盤或分區(qū)的GUID可分為如下幾類:
{legacy} :指存在上一代Windows系統(tǒng)如Windows XP的硬盤或分區(qū); {default} : 默認(rèn)操作系統(tǒng)所在硬盤或分區(qū); {current} : 當(dāng)前硬盤或分區(qū); {c34b751a-ff09-11d9-9e6e-0030482375e7} : 類似于這個(gè)格式的GUID指其他安裝了操作系統(tǒng)的硬盤或分區(qū)。 (注:這只是個(gè)例子,具體數(shù)字根據(jù)硬盤或分區(qū)參數(shù)會(huì)有相應(yīng)變化,但均會(huì)類似于{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}格式)。 BCDEDIT命令 bcdedit /? : 顯示命令幫助 bcdedit.exe /? CREATESTORE : 顯示命令參數(shù)“ CREATESTORE ”的詳細(xì)信息,——當(dāng)然,“ CREATESTORE ”也只是示例,使用中對(duì)其他任何可用參數(shù)也均可使用類似格式查看該參數(shù)的具體說明。 bcdedit
或 bcdedit /enum all :
顯示Vista和Win7系統(tǒng)當(dāng)前的啟動(dòng)設(shè)置數(shù)據(jù),這時(shí)系統(tǒng)中所有安裝了操作系統(tǒng)的硬盤或分區(qū)均會(huì)顯示相應(yīng)的 GUID 標(biāo)識(shí),如
{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} 。 使用BCDEdit備份與恢復(fù)啟動(dòng)選項(xiàng) 在對(duì)Vista和Win7的啟動(dòng)選項(xiàng)修改之前,最好先對(duì)其備份,以防萬一操作失誤或其他故障導(dǎo)致系統(tǒng)無法啟動(dòng)。
bcdedit /export “D:\BCD Backup\Bcd Backup” : 將啟動(dòng)設(shè)置備份到D盤 “BCD Backup” 目錄下; bcdedit /import “D:\BCD Backup\Bcd Backup” : 恢復(fù)之前備份在D盤 “BCD Backup”目錄下啟動(dòng)選項(xiàng)。 使用BCDEdit修改啟動(dòng)菜單選項(xiàng)
作為一種良好的操作習(xí)慣,在對(duì)Vista和Win7的啟
動(dòng)選項(xiàng)進(jìn)行任何修改前,首先要對(duì)BCD中的啟動(dòng)選項(xiàng)進(jìn)行備份,相應(yīng)的命令上頁我們已介紹過,在此不再贅述;其次,使用“bcdedit ”或“
bcdedit /enum all ”來查看系統(tǒng)中硬盤或分區(qū)的正確 GUID
標(biāo)識(shí),并將其記錄下來。畢竟,BCDEdit只是一款命令行工具,我們操作時(shí)需手動(dòng)輸入類似“{xxxxxxxx-xxxx-xxxx-xxxx-
xxxxxxxxxxxx}”這樣的長(zhǎng)字符串時(shí),很容易出錯(cuò),而這往往會(huì)導(dǎo)致Vista和Win7啟動(dòng)失敗。
3,下面詳細(xì)介紹使用BCDEdit修改啟動(dòng)選項(xiàng)的常用命令格式:
bcdedit /set {legacy} Description “Windows XP Professional SP2” :
修改上一代操作系統(tǒng)在啟動(dòng)菜單中的顯示內(nèi)容,比如說我們也可將其修改為“Vista天地專用XP SP2”之類。注意,命令中的引號(hào)不可省略; bcdedit
/set {current} description “Vista和Win7 Build 5270 x86″ :
修改當(dāng)前啟動(dòng)硬盤或分區(qū)上的操作系統(tǒng)在啟動(dòng)菜單中的顯示內(nèi)容。注意,當(dāng)前分區(qū)上的操作系統(tǒng)可能為Vista和Win7,也可以是其他系統(tǒng),當(dāng)然,命令中的
引號(hào)也不可省略; bcdedit /set {5189b25c-5558-4bf2-bca4-289b11bd29e2}
description “Vista和Win7 Build 5270 x64” :
修改安裝于其他硬盤或分區(qū)的系統(tǒng)在啟動(dòng)菜單中的顯示內(nèi)容,使用這項(xiàng)命令時(shí)一定要注意該硬盤/分區(qū)的GUID輸入正確,相應(yīng)的GUID可通過“
bcdedit ”或“ bcdedit /enum all ”命令查看。 bcdedit /default {current} : 將當(dāng)前啟動(dòng)硬盤/分區(qū)中的操作系統(tǒng)設(shè)置為默認(rèn)啟動(dòng)的系統(tǒng); bcdedit /default {5189b25c-5558-4bf2-bca4-289b11bd29e2} : 設(shè)置指定GUID上的操作系統(tǒng)為默認(rèn)啟動(dòng)的系統(tǒng); bcdedit /default {legacy} : 設(shè)置上一代Windows 系統(tǒng)Windows XP為默認(rèn)啟動(dòng)的系統(tǒng); bcdedit /displayorder : 設(shè)置啟用菜單中各項(xiàng)的顯示順序,如: bcdedit.exe /displayorder {legacy} {current} 將首先顯示W(wǎng)indows XP,然后再顯示默認(rèn)啟動(dòng)的系統(tǒng)如Vista和Win7 bcdedit /timeout 15 : 將默認(rèn)的啟動(dòng)菜單顯示時(shí)間30秒更改為15秒,當(dāng)然,您可以將這個(gè)時(shí)間修改為任何您希望的數(shù)值。 使用BCDEdit修復(fù)硬盤/分區(qū)結(jié)構(gòu)錯(cuò)誤 在對(duì)啟動(dòng)選項(xiàng)的修改過程中,如添加或刪除某個(gè)硬盤/分區(qū)時(shí),可能會(huì)因操作中的不慎導(dǎo)致硬盤/分區(qū)結(jié)構(gòu)的混亂,除了采用恢復(fù)修改前的備份方法外,也可以首先使用BCDEdit來嘗試一下修復(fù)。
具體方法如下:
X:\>X:\boot\fixntfs.exe -lh -all : 這時(shí)的“ X: ”指引導(dǎo)目錄 “boot” 所在的硬盤/分區(qū); bcdedit
/set {5189b25c-5558-4bf2-bca4-289b11bd29e2} device partition=X: :
將指定GUID的分區(qū)設(shè)為啟動(dòng)分區(qū)。注意,這里的“ X: ”的GUID須與指定值不同,同時(shí),運(yùn)行該命令后,必須接著運(yùn)行下面的osdevice命令;
bcdedit /set {5189b25c-5558-4bf2-bca4-289b11bd29e2} osdevice
partition=X: : 將指定GUID的分區(qū)設(shè)為啟動(dòng)分區(qū)。注意,這個(gè)命令必須與上面的device命令配對(duì)使用,同時(shí)“ X:
”的GUID須與指定值不同。
4
基礎(chǔ)教程:BCDEDIT常用命令及使用實(shí)例(圖)
BCDEDIT是從Vista開始引入的啟動(dòng)配置數(shù)據(jù)管理工具,命令行工具用于修改啟動(dòng)配置數(shù)據(jù)存儲(chǔ),可以使用Bcdedit.exe在啟動(dòng)配置數(shù)
據(jù)存儲(chǔ)中添加、刪除、編輯和附加存儲(chǔ)項(xiàng),適應(yīng)Vista/Windows 2008/Windows
7及之后版本系統(tǒng),bcdedit.exe文件位于系統(tǒng)盤的Windows\system32目錄下
,其功能非常強(qiáng)大,很多啟動(dòng)問題都可以通過該命令解決,當(dāng)然前提是你不怕麻煩。
如果只是臨時(shí)為了應(yīng)急,比如啟動(dòng)菜單修復(fù),大家也可以使用一些現(xiàn)成的啟動(dòng)管理軟件,比如EasyBCD等,如果時(shí)間或條件許可,天緣還是建議你多“折騰”一下,下次再遇到類似問題就會(huì)得心應(yīng)手。
一、BCDEDIT常用命令一覽表
功能 |
命令行 |
示例 |
導(dǎo)出備份當(dāng)前系統(tǒng)啟動(dòng)配置數(shù)據(jù) |
bcdedit /export |
把當(dāng)前配置數(shù)據(jù)導(dǎo)出到D盤,并存為Bkup文件,雙引號(hào)可要可不要
bcdedit /export "D:\Bkup" |
導(dǎo)入并覆蓋當(dāng)前系統(tǒng)啟動(dòng)配置數(shù)據(jù) |
bcdedit /import |
把D盤Bkup配置文件導(dǎo)入并覆蓋當(dāng)前配置數(shù)據(jù),雙引號(hào)可要可不要
bcdedit /import "D:\Bkup" |
顯示Bcdedit全部命令幫助 |
bcdedit /?
bcdedit /? |
bcdedit /?,顯示Bcdedit全部命令幫助
bcdedit /? /store,指定顯示store命令幫助,命令前面的斜杠可要可不要 |
在儲(chǔ)存中的列表項(xiàng)目 |
bcdedit [/store ] /enum [ | ] [/v] |
列出當(dāng)前系統(tǒng)全部啟動(dòng)項(xiàng):
bcdedit,或
bcdedit /enum,或bcdedit /enum ACTIVE
顯示所有存儲(chǔ)中的項(xiàng)(包括啟動(dòng)管理器顯示項(xiàng)、固件應(yīng)用程序、啟動(dòng)環(huán)境、繼承項(xiàng)等等):
bcdedit /enum all
列出所有操作系統(tǒng)項(xiàng):
bcdedit /enum OSLOADER
列出所有的啟動(dòng)管理項(xiàng):
bcdedit /enum BOOTMGR
/v參數(shù)可以完整顯示項(xiàng)標(biāo)識(shí)符,而不是使用已知標(biāo)識(shí)符的名稱:
bcdedit /enum ACTIVE /v |
設(shè)置默認(rèn)啟動(dòng)菜單顯示超時(shí) |
bcdedit /timeout |
將默認(rèn)啟動(dòng)菜單顯示超時(shí)時(shí)間設(shè)為5秒
bcdedit /timeout 5 |
創(chuàng)建指定啟動(dòng)項(xiàng)副本 |
bcdedit [/store ] /copy {} /d |
復(fù)制啟動(dòng)項(xiàng)目:
bcdedit /copy {GUID} /d "New entry" |
新建啟動(dòng)項(xiàng)目 |
bcdedit /create [{}] [/d ]
[/application | /inherit [] |
/inherit DEVICE | /device] |
創(chuàng)建Windows XP系統(tǒng)引導(dǎo)項(xiàng):
bcdedit /create {ntldr} /d "Windows XP SP3"
創(chuàng)建一個(gè)Windows 8系統(tǒng)啟動(dòng)項(xiàng):
bcdedit /create /d "Windows 8" /application osloader |
刪除項(xiàng)目 |
bcdedit [/store ] /delete [/f] [/cleanup | /nocleanup] |
徹底刪除指定的啟動(dòng)項(xiàng):
bcdedit /delete {GUID} /cleanup
刪除存儲(chǔ)中涉及NTLDR的OS加載項(xiàng):
bcdedit /delete {GUID} /f |
刪除啟動(dòng)配置數(shù)據(jù)存儲(chǔ)項(xiàng)中的數(shù)據(jù)元素 |
bcdedit [/store ] /deletevalue [] |
刪除啟動(dòng)管理器中的bootsequence選項(xiàng):
bcdedit /deletevalue {bootmgr} bootsequence |
設(shè)定項(xiàng)目選擇項(xiàng)數(shù)值 |
bcdedit [/store ] /set [{}] [ /addfirst | /addlast | /remove ] |
修改啟動(dòng)項(xiàng)描述:
bcdedit /set {GUID} description "Windows 7 SP2" |
設(shè)置啟動(dòng)管理器使用的一次性啟動(dòng)序列 |
bcdedit /bootsequence [...] [ /addfirst | /addlast | /remove ] |
設(shè)定多個(gè)啟動(dòng)序列(ID之間使用空格):
bcdedit /bootsequence {GUID1} {GUID2} {GUID3} { ...}
加入操作系統(tǒng)項(xiàng)目為啟動(dòng)列表最后項(xiàng):
bcdedit /bootsequence {GUID} /addlast |
設(shè)定默認(rèn)啟動(dòng)項(xiàng)目 |
bcdedit /default |
設(shè)定GUID序列為默認(rèn)啟動(dòng)項(xiàng):
bcdedit /default {GUID}
將基于NTLDR的OS設(shè)置為默認(rèn)項(xiàng)(天緣注:多個(gè)NTLDR沒問題?):
bcdedit /default {ntldr} |
設(shè)置啟用管理器使用的顯示順序 |
bcdedit /displayorder [...] [ /addfirst | /addlast | /remove ] |
將指定OS項(xiàng)添加到啟動(dòng)管理顯示順序末尾:
bcdedit /displayorder {GUID} /addlast |
啟用或禁用指定項(xiàng)的緊急管理服務(wù) |
bcdedit /bootems [] { ON | OFF } |
開啟啟動(dòng)管理器緊急處理服務(wù):
bcdedit /bootems {bootmgr} ON |
啟用或禁用指定操作系統(tǒng)啟動(dòng)項(xiàng)的緊急管理服務(wù) |
bcdedit /ems [] { ON | OFF } |
啟用當(dāng)前操作系統(tǒng)啟動(dòng)項(xiàng)的緊急管理服務(wù):
bcdedit /ems ON |
設(shè)置系統(tǒng)全局緊急管理服務(wù)設(shè)置 |
bcdedit /emssettings [ BIOS ] | [ EMSPORT: | [EMSBAUDRATE:] ] |
將緊急管理服務(wù)參數(shù)設(shè)置為使用BIOS設(shè)置:
bcdedit /emssettings BIOS |
|
|
|
其中幾個(gè)參數(shù)解釋:
指定要使用的存儲(chǔ)。如果未指定此選項(xiàng),則使用系統(tǒng)存儲(chǔ)。詳細(xì)信息,請(qǐng)運(yùn)行 "bcdedit /? store"。
指定要修改的項(xiàng)的標(biāo)識(shí)符。如果未指定,則使用 {current}。 有關(guān)標(biāo)識(shí)符的詳細(xì)信息,請(qǐng)運(yùn)行 "bcdedit /? ID"。
指定將創(chuàng)建或修改的選項(xiàng)數(shù)據(jù)類型。有關(guān)數(shù)據(jù)類型的詳細(xì)信息,請(qǐng)運(yùn)行 "bcdedit /? TYPES"。
指定應(yīng)分配給該選項(xiàng)的值。 的格式取決于指定的數(shù)據(jù)類型。 有關(guān)數(shù)據(jù)格式的詳細(xì)信息,請(qǐng)運(yùn)行 "bcdedit /? FORMATS"。
此外BCDEDIT還有幾條命令上表未列出來,可以通過cmd命令行下輸入bcdedit /? 方式查看注解,幫助相當(dāng)詳細(xì)。
二、BCDEDIT完整命令列表(來源Windows 7 Bcdedit幫助)
對(duì)存儲(chǔ)執(zhí)行的命令
======================================
/createstore 新建空的啟動(dòng)配置數(shù)據(jù)存儲(chǔ)。
/export 將系統(tǒng)存儲(chǔ)的內(nèi)容導(dǎo)出到文件。以后可以使用該文件還原系統(tǒng)存儲(chǔ)的狀態(tài)。
/import 使用 /export 命令創(chuàng)建的備份文件來還原系統(tǒng)存儲(chǔ)的狀態(tài)。
/sysstore 設(shè)置系統(tǒng)存儲(chǔ)設(shè)備(僅影響 EFI 系統(tǒng),在重新啟動(dòng)后不再有效, 且僅用于系統(tǒng)存儲(chǔ)設(shè)備不確定的情況下)。
對(duì)存儲(chǔ)中的項(xiàng)執(zhí)行的命令
======================================
/copy 復(fù)制存儲(chǔ)中的項(xiàng)。
/create 在存儲(chǔ)中新建項(xiàng)。
/delete 刪除存儲(chǔ)中的項(xiàng)。
/mirror 創(chuàng)建存儲(chǔ)中項(xiàng)的鏡像。
對(duì)項(xiàng)選項(xiàng)執(zhí)行的命令
======================================
/deletevalue 刪除存儲(chǔ)中的項(xiàng)選項(xiàng)。
/set 設(shè)置存儲(chǔ)中的項(xiàng)選項(xiàng)值。
運(yùn)行 bcdedit /? TYPES 可獲得這些命令使用的數(shù)據(jù)類型的列表。
運(yùn)行 bcdedit /? FORMATS 可獲得有效數(shù)據(jù)格式的列表。
控制輸出的命令
======================================
/enum 列出存儲(chǔ)中的項(xiàng)。
/v 命令行選項(xiàng),完整顯示項(xiàng)標(biāo)識(shí)符,而不是使用已知標(biāo)識(shí)符的名稱。單獨(dú)使用命令 /v 可完整顯示活動(dòng)類型的項(xiàng)標(biāo)識(shí)符。
單獨(dú)運(yùn)行 "bcdedit" 等同于運(yùn)行 "bcdedit /enum ACTIVE"。
控制啟動(dòng)管理器的命令
======================================
/bootsequence 為啟動(dòng)管理器設(shè)置一次性啟動(dòng)序列。
/default 設(shè)置啟動(dòng)管理器將使用的默認(rèn)項(xiàng)。
/displayorder 設(shè)置啟動(dòng)管理器顯示多重引導(dǎo)菜單的順序。
/timeout 設(shè)置啟動(dòng)管理器的超時(shí)值。
/toolsdisplayorder 設(shè)置啟動(dòng)管理器顯示工具菜單的順序。
控制啟動(dòng)應(yīng)用程序緊急管理服務(wù)的命令
======================================
/bootems 啟用或禁用啟動(dòng)應(yīng)用程序的緊急管理服務(wù)。
/ems 啟用或禁用操作系統(tǒng)項(xiàng)的緊急管理服務(wù)。
/emssettings 設(shè)置全局緊急管理服務(wù)參數(shù)。
控制調(diào)試的命令
======================================
/bootdebug 啟用或禁用啟動(dòng)應(yīng)用程序的啟動(dòng)調(diào)試。
/dbgsettings 設(shè)置全局調(diào)試程序參數(shù)。
/debug 啟用或禁用操作系統(tǒng)項(xiàng)的內(nèi)核調(diào)試。
/hypervisorsettings 設(shè)置虛擬機(jī)監(jiān)控程序的參數(shù)。
三、Bcdedit常用設(shè)置修復(fù)及配置示例
1、警告Bcdedit命令需要在管理員權(quán)限下進(jìn)行操作,如下圖:

2、在使用BCD之前,請(qǐng)先備份當(dāng)前系統(tǒng)的啟動(dòng)配置文件方法如下:
bcdedit /export D:\bootbkup
bcdedit /import D:\bootbkup
其中bootbkup是備份的文件名。
3、BCDEDIT運(yùn)行界面,如下圖,請(qǐng)留意圖中的標(biāo)識(shí)符位置和項(xiàng)目名稱。

啟動(dòng)入口最主要是四個(gè)部分:
Identifier標(biāo)識(shí)符——啟動(dòng)入口的系統(tǒng)標(biāo)識(shí),可能是bootmgr、current或id形式等。
device設(shè)備——一般是驅(qū)動(dòng)器路徑或虛擬映像,系統(tǒng)啟動(dòng)引導(dǎo)后入口。
path路徑——是device設(shè)備的位置,系統(tǒng)用來定位啟動(dòng)文件。
description描述——顯示描述,也就是大家見到的菜單顯示。
{bootmgr} ——啟動(dòng)管理器
{current}——當(dāng)前操作系統(tǒng),啟動(dòng)時(shí)選擇的系統(tǒng)
{default} ——缺省默認(rèn)的啟動(dòng)項(xiàng)
{ntldr} ——早期Windows加載
附個(gè)參考地址:http://www./tutorials/2676-bcdedit-how-use.html
四、BCDEDIT常用操作步驟
1、為Windows XP創(chuàng)建一個(gè)分區(qū)啟動(dòng)入口:
bcdedit /create {ntldr} /d "Windows XP"
bcdedit /set {ntldr} device partition=F:
bcdedit /set {ntldr} path ntldr
bcdedit /displayorder {ntldr} /addlast
2、刪除Windows XP啟動(dòng)入口
bcdedit /delete {ntldr} /f
3、設(shè)置啟動(dòng)分區(qū)
bcdedit /set {標(biāo)識(shí)符} device partition=C:
4、增加Linux引導(dǎo)入口
bcdedit /create /d "GrubInstallUbuntu" /application bootsector
命令執(zhí)行后會(huì)返回一個(gè)GUID,然后使用鼠標(biāo)選中右鍵全選,并在標(biāo)題欄中右鍵復(fù)制下來,接著再執(zhí)行以下命令(命令中的GUID需要替換成上面命令返回的ID 值)。
bcdedit /set {GUID} device partition=C:
bcdedit /set {GUID} path grldr.mbr
bcdedit /displayorder {GUID} /addlast
5、關(guān)閉系統(tǒng)DEP保護(hù):
bcdedit.exe/set {current} nx AlwaysOff
6、創(chuàng)建一個(gè)配置數(shù)據(jù)庫:
bcdedit /createstore C:\Myboot
|