解析Windows 7下的BCD管理工具
BCD(Boot ConfigurationDate)即系統(tǒng)引導配置數(shù)據(jù),這是從WindowsVista開始才引入的。我們知道,在WindowsVista/Server2008中BootManager組件負責系統(tǒng)的初始化和引導工作,而與之相匹配系統(tǒng)的引導數(shù)據(jù)就存儲在BCD中。相信大家非常關(guān)心Windows7下的BCD數(shù)據(jù)管理吧,下面筆者和大家一道就這方面進行一番探討。
1、BCD數(shù)據(jù)管理工具
也許最常用也最熟悉的系統(tǒng)引導管理就是系統(tǒng)高級引導菜單了,在Windows7下也不例外。當系統(tǒng)發(fā)生引導故障時,為了成功進入系統(tǒng)或者進行排錯我們會選擇在系統(tǒng)啟動的過程中按下F8鍵進入高級引導選項菜單,并從這個菜單中選擇一種高級啟動模式進行引導嘗試。在此可供我們選擇的引導方式主要有安全模式、啟用引導日志、最近一次正確配置、目錄服務還原模式以及禁用驅(qū)動程序前面強制等。需要說明的是,索然這些高級模式會暫時性地修復操作系統(tǒng)的啟動方式,以幫助故障的解決和診斷,但是這些模式并不會對引導配置或者BCD存儲做出任何永久性的修改。所以,系統(tǒng)高級引導菜單并不是有效的BCD數(shù)據(jù)管理工具。和此前的Windows系統(tǒng)類似,在Windows7中可用于修改引導配置和管理BCD存儲的工具主要有“啟動和故障恢復”控制臺,系統(tǒng)配置使用工具(msconfig.exe),以及比較高級的BCD編輯器(bcdedit.exe)。本文就以這三個工具為例說說BCD數(shù)據(jù)的管理。
2、用“啟動和故障恢復”控制臺實施系統(tǒng)引導配置
在Windows7的“啟動和故障恢復”控制臺中我們可以配置系統(tǒng)啟動過程中的基本選項,可以使用這些選項設(shè)置默認的操作系統(tǒng)、可用操作系統(tǒng)選擇菜單的顯示時間,以及在需要的時恢復選項的顯示時間。無論是否需要將計算機引導到不同的操作系統(tǒng),都可以通過優(yōu)化這些設(shè)置減少系統(tǒng)啟動所需的時間,并加速系統(tǒng)的啟動過程。
依據(jù)下面的操作步驟可進入Windows7的“啟動和故障恢復”控制臺:右鍵單擊桌面上的“計算機”圖標選擇“屬性”,在系統(tǒng)屬性窗口中單擊左窗格中任務下的“高級系統(tǒng)設(shè)置”鏈接。在系統(tǒng)屬性對話框的“高級”選項卡下,單擊“啟動和故障恢復”選項下的“設(shè)置”按鈕就會進入如圖2所示的“啟動和故障恢復”控制臺。在控制臺中,我們可以選擇默認的啟動的操作系統(tǒng),在安裝了多個操作系統(tǒng)的計算機上,單擊“默認操作系統(tǒng)”下列列表即可選擇希望默認啟動的操作系統(tǒng),如果只安裝了一個系統(tǒng)則當前系統(tǒng)就是默認的啟動的系統(tǒng)。選中“顯示操作系統(tǒng)列表的時間”復選框,并在右側(cè)的文本框中輸入要使用的時間(以秒為單位),即可設(shè)置操作系統(tǒng)選擇列表的顯示時間。為了加速系統(tǒng)的啟動速度,如果計算機中只有一個系統(tǒng)可以將其設(shè)置為“0”,這樣就不會顯示啟動菜單直接引導默認系統(tǒng)。另外,在“啟動和故障恢復”控制臺中可設(shè)置系統(tǒng)發(fā)生故障時的后續(xù)操作。因為這部分內(nèi)容與BCD的關(guān)系不大,而且已經(jīng)有作者對此做了非常深入的解析,所以就此略過。
3、用“系統(tǒng)配置工具”管理系統(tǒng)引導配置
通過“系統(tǒng)配置工具(msconfig.exe)”,我們可以在Windows7中調(diào)整計算機的啟動方式。通常情況下,高級用戶使用該工具進行系統(tǒng)故障的排錯和診斷。例如,作為排錯的一部分,可與配置計算機使用診斷啟動模式,只加載最基本的驅(qū)動和服務。
依次點擊“開始”→“運行”輸入msconfig.exe回車后可啟動“系統(tǒng)配置工具”,該工具提供了很多選項,應該說是我們管理BCD最方便的工具。在“常規(guī)”選項卡下可用于配置系統(tǒng)的啟動方式,以及是否需要將系統(tǒng)啟動到排錯和診斷模式下。通過使用這些選項,可以選擇進行常規(guī)啟動、診斷啟動或選擇性啟動。在重啟計算機并解決問題后,需要再次打開系統(tǒng)配置工具,并在“常規(guī)”選項卡中選中“正常啟動”單選按鈕。
在“系統(tǒng)配置工具”的“啟動”選項卡下可用于控制特定啟動過程的工作方式。在此我們可以配置計算機啟動到某種安全啟動模式下,并可選擇其他選項,例如無GUI啟動等。如果在排錯后發(fā)現(xiàn)需要保留這些設(shè)置,則可以選中“使所有啟動設(shè)置成為永久設(shè)置”復選框,以便將這些設(shè)置保存到引導配置啟動項中。
另外,在“啟動”選項頁面中還有一個“高級選項”按鈕,單擊該按鈕可進入“啟動高級選項”對話框。在此,除了可以鎖定PCI、檢測HAL以及啟用測試,還可以使用高級選項實現(xiàn)某些特殊應用。
(1).指定操作系統(tǒng)可以使用的處理器數(shù)量。在多處理器的系統(tǒng)中通常會發(fā)生某些莫名的故障,如果我們要進行排錯以了解該故障是否是由此引起的,可以使用該選項。
(2).設(shè)定操作系統(tǒng)可以使用的內(nèi)存最大數(shù)量。如果我們懷疑某些系統(tǒng)引導問題是有安裝了額外的內(nèi)存引起的,則可以使用該選項。比如,系統(tǒng)本來是2GB的內(nèi)存,如果在安裝了另外的一條2GB內(nèi)存后導致系統(tǒng)不能引導,為了判斷是否是有這條額外的內(nèi)存導致了上述故障,我們就可以暫時限制系統(tǒng)只能使用2048MB的內(nèi)存。
如果懷疑安裝到計算機上的某個服務導致系統(tǒng)引導故障,可以在“系統(tǒng)配置工具”的“常規(guī)”選項卡下選擇診斷或者選擇性啟動模式的方式進行判斷。如果確信是某服務導致了啟動故障,那么可以在“服務”選項卡下禁用該服務。在禁用后問題不再發(fā)生,應該可以確認是該服務的問題,那么我們就可永久性地禁用該服務或更新該服務。同理,如果懷疑某個在啟動時自動運行的程序?qū)е铝讼到y(tǒng)引導故障,那么可以通過“啟用”選項卡下的設(shè)置來進行排錯。
另外,在“啟動”選項頁面中還有一個“高級選項”按鈕,單擊該按鈕可進入“啟動高級選項”對話框。在此,除了可以鎖定PCI、檢測HAL以及啟用測試,還可以使用高級選項實現(xiàn)某些特殊應用。
(1).指定操作系統(tǒng)可以使用的處理器數(shù)量。在多處理器的系統(tǒng)中通常會發(fā)生某些莫名的故障,如果我們要進行排錯以了解該故障是否是由此引起的,可以使用該選項。
(2).設(shè)定操作系統(tǒng)可以使用的內(nèi)存最大數(shù)量。如果我們懷疑某些系統(tǒng)引導問題是有安裝了額外的內(nèi)存引起的,則可以使用該選項。比如,系統(tǒng)本來是2GB的內(nèi)存,如果在安裝了另外的一條2GB內(nèi)存后導致系統(tǒng)不能引導,為了判斷是否是有這條額外的內(nèi)存導致了上述故障,我們就可以暫時限制系統(tǒng)只能使用2048MB的內(nèi)存。
如果懷疑安裝到計算機上的某個服務導致系統(tǒng)引導故障,可以在“系統(tǒng)配置工具”的“常規(guī)”選項卡下選擇診斷或者選擇性啟動模式的方式進行判斷。如果確信是某服務導致了啟動故障,那么可以在“服務”選項卡下禁用該服務。在禁用后問題不再發(fā)生,應該可以確認是該服務的問題,那么我們就可永久性地禁用該服務或更新該服務。同理,如果懷疑某個在啟動時自動運行的程序?qū)е铝讼到y(tǒng)引導故障,那么可以通過“啟用”選項卡下的設(shè)置來進行排錯。
(3).導入、導出BCD
利用bcdeidt.exe命令我們可以導入或者導出BCD存儲,要導出系統(tǒng)的BCD存儲中的內(nèi)容到特定文件需要使用“/export”參數(shù)。在命令行下執(zhí)行命令“bcdedit/exportstorepath”,storepath就是用于保存系統(tǒng)BCD存儲內(nèi)容的實際文件路徑,例如執(zhí)行命令“bcdedite/exportd:\ctocio\backup”就會將系統(tǒng)的BCD信息保存到d:\ctocio\backup文件中。如果要還原系統(tǒng)的BCD信息,我們可以通過bcdedit.exe的“/import”參數(shù)將BCD備份導入進來。其命令格式為“bcdedicdt/importimportpath”,其中importpath為保存了BCD信息的文件夾的實際路徑。例如執(zhí)行命令“bcdedit/importd:\ctocio\backup”就可將剛才備份的BCD信息重新導入進來。
(4).顯示W(wǎng)indows 7隱藏的BCD項目
默認情況下我們在命令行下執(zhí)行bcdedit.exe是不能顯示所有的BCD項的,Windows7隱藏了某些BCD項目。如果要查看被隱藏的BCD項目,我們需要執(zhí)行命令打開顯示開關(guān)將其顯示出來。假如當前系統(tǒng)的標識符是ba50c1f0-3752-11de-90d5-cdf8d52a3222,在命令行下依次執(zhí)行命令“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222/addfirst”和“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222/addfirst”。這樣當我們重新執(zhí)行bcdedit.exe時就會顯示W(wǎng)indows7中被隱藏的BCD項目。同時,當重啟Windows7時就會在開機菜單中出現(xiàn)RamdiskOptions選項,這是Windows7集成的WindowsRecoveryEnvironment,該選項在系統(tǒng)修復/恢復是非常有用。
(5).快速添加系統(tǒng)菜單
安裝多系統(tǒng)的用戶,往往會因為系統(tǒng)安裝次序不夠科學而造成系統(tǒng)啟動選擇菜單不全或者有誤,此時我們需要手動添加系統(tǒng)菜單項。下面分別說說如何利用bcdedit.exe命令添加WindowsXP啟動菜單項和Windows7啟動菜單項。
假設(shè)WindowsXP系統(tǒng)安裝在C盤,在Windows7中添加其系統(tǒng)啟動菜單項可以依次執(zhí)行下面的命令或者將其保存為一個批處理文件(bat或者cmd文件)。
bcdedit /create ntldr /d "Microsoft Windows XP"
bcdedit /set ntldr device partition=C:
bcdedit /set ntldr path \ntldr
bcdedit /displayorder ntldr /addfirst
同樣我們假設(shè)Windows7安裝在C盤,其語言版本為簡體中文版,系統(tǒng)標識符為ba50c1f0-3752-11de-90d5-cdf8d52a3222,要添加其系統(tǒng)啟動菜單項依次執(zhí)行下面的命令或者將其保存為一個批處理文件(bat或者cmd文件)。
set id=ba50c1f0-3752-11de-90d5-cdf8d52a3222
bcdedit /create %id% /d "Windows 7" /application osloader
bcdedit /set %id% locale zh-cn
bcdedit /set %id% device partition=C:
bcdedit /set %id% osdevice partition=C:
bcdedit /set %id% path \Windows\system32\winload.exe
bcdedit /set %id% inherit bootloadersettings
bcdedit /set %id% systemroot \windows
bcdedit /set %id% nx OptOut
bcdedit /displayorder %id% /addfirst
(6).更改系統(tǒng)顯示順序
如果要更改系統(tǒng)引導管理器中諸如Windows 7、Windows Vista、WindowsServer2008、WindowsXP在操作系統(tǒng)選擇菜單上的顯示順序,我們可以通過bcdedit.exe的“/displayorder”參數(shù)來實現(xiàn)。其命令格式是“bcdedit/displayorderid1 id2 id3...idn”,其中id1是顯示在第一位的操作系統(tǒng)對于的操作系統(tǒng)對應的系統(tǒng)標識符,id2是顯示在第二位的操作系統(tǒng)對應的系統(tǒng)標識符,依次類推。比如我們執(zhí)行命令“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222d6be0d13-413a-11de-b285-b6ee0ebcf10e”則第一項系統(tǒng)標識符對于的系統(tǒng)會第一個顯示。另外,我們還可以使用“/addfirst”參數(shù)配合“/displayorder”參數(shù)設(shè)置某系統(tǒng)為第一項,比如執(zhí)行“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222/addfirst”。此外執(zhí)行命令“bcdedit/displayorderba50c1f0-3752-11de-90d5-cdf8d52a3222/addlast”則該系統(tǒng)成為最后一項。
(7).其他BCD管理
除了上面比較常用的BCD管理外,筆者再列舉幾個比較有用的bcdedit命令參數(shù)。執(zhí)行命令“bcdedit/defaultd6be0d13-413a-11de-b285-b6ee0ebcf10e”將該操作系統(tǒng)標識符對應才操作系統(tǒng)設(shè)置為默認引導系統(tǒng)。執(zhí)行“bcdedit/timeout10”,將系統(tǒng)啟動菜單停留的時間設(shè)置為10秒。另外,在特殊情況下我們需要將從特定系統(tǒng)引導一次,然后恢復為默認的引導順序。這是我們需要用到bcdedit的“/bootsequence”參數(shù)。例如,執(zhí)行命令“bcdedit/bootsequenced6be0d13-413a-11de-b285-b6ee0ebcf10e”,這樣當計算機重啟時系統(tǒng)就會從該系統(tǒng)引導,當下次重啟計算機時就恢復從默認的系統(tǒng)進行引導。
總結(jié):上面筆者以Windows7系統(tǒng)為例,演示了利用“啟動和故障恢復”控制臺、“系統(tǒng)配置工具”、BCD編輯器這三個工具配置和管理系統(tǒng)BCD數(shù)據(jù)的主要技術(shù)細節(jié)。雖然上面的演示是在Windows7中進行的,但其中大多數(shù)同樣實用于WindowsVista和Windows Server2008系統(tǒng),希望本文能夠?qū)Υ蠹矣兴鶐椭?/P>
【編輯推薦】