bcdedit
?
我的電腦裝了雙系統(tǒng):Win2003 SP2(C盤)和Win2008 SP2(D盤),最近2003一啟動就藍(lán)屏unknown hard error,安全模式也進(jìn)不去,恢復(fù)注冊表等方法試過也不行,但2008正常,覆蓋安裝2003也不解決,看來只有格盤重裝了。重裝2003和應(yīng)用軟件后,系統(tǒng)恢復(fù)正常運(yùn)行。下一步就應(yīng)該是恢復(fù)雙啟動菜單了。但我手頭沒有其他軟件,只有系統(tǒng)安裝盤,只好研究令我頭大的那個(gè)bcdedit。微軟的說明文字讓我是一頭霧水,上網(wǎng)查找了一些資料終于清楚了怎么用。
1.用2008的光盤啟動到修復(fù)計(jì)算機(jī)下的命令提示符,在命令提示符下運(yùn)行X:/boot/bootsect.exe /nt60 sys(X是光驅(qū)盤符)把2008的啟動扇區(qū)寫入C盤。
2.運(yùn)行bootrec.exe /rebuildbcd重建啟動菜單。
bootrec.exe的用法類似于XP的故障恢復(fù)控制臺,常用參數(shù)如下:
/fixmbr 修復(fù)主引導(dǎo)記錄
/fixboot 修復(fù)啟動扇區(qū)
/scanos 掃描并添加已有的系統(tǒng),注意掃描不到XP
/rebuildbcd 重建整個(gè)BCD(啟動配置數(shù)據(jù)),這次由于格了C盤,所以必須重建
3.把2008系統(tǒng)目錄下的boot/pcat文件夾(/Windows/Boot/pcat)下所有文件復(fù)制到c:/boot目錄,命令:xcopy D:/Windows/boot/pcat/*.* c:/boot /e(/e表示復(fù)制子目錄)
4.把/Windows/boot/fonts下所有文件復(fù)制到c:/boot/fonts目錄:xcopy D:/Windows/boot/fonts/*.* c:/boot/fonts /e。注意系統(tǒng)會詢問目標(biāo)是文件還是目錄,別選錯(cuò)了!
5.把boot目錄下的bootmgr移動到C盤根目錄下,命令:move c:/boot/bootmgr c:/
6.把boot目錄和bootmgr文件添加隱藏、系統(tǒng)等屬性,防止誤操作。attrib +r +h +s +a c:/boot和c:/bootmgr
7.從硬盤啟動,現(xiàn)在2008已經(jīng)能正常使用,但是2003沒有啟動項(xiàng),要手工添加,這里就要用到bcdedit。以管理員身份運(yùn)行CMD,鍵入以下命令:
bcdedit /create {ntldr} /d "Windows 2003" (創(chuàng)建一個(gè)基于NTLDR的啟動項(xiàng),菜單里顯示為“Windows 2003”)
bcdedit /set {ntldr} device partition=C:
bcdedit /set {ntldr} path /ntldr
bcdedit /displayorder {ntldr} /addfirst(把剛才創(chuàng)建的這個(gè)條目顯示在啟動菜單的第一位)
bcdedit /toolsdisplayorder {memdiag} /addfirst (在啟動菜單里添加內(nèi)存診斷工具)
重啟后,雙啟動菜單恢復(fù)正常!
bcdedit說明:
在Vista/2008下,我們通過msconfig的“啟動”選項(xiàng)卡可調(diào)整啟動時(shí)的參數(shù),也可通過系統(tǒng)屬性-高級-啟動和故障恢復(fù)對引導(dǎo)菜單進(jìn)行調(diào)整。但這些項(xiàng)目和XP是類似的。有些功能在XP下非得修改boot.ini才能完成,比如添加一個(gè)啟動項(xiàng)、修改啟動菜單里的文字等,這些在VISTA下就只有用bcdedit了。這是一個(gè)命令行工具,必須以管理員身份運(yùn)行。只要有點(diǎn)英語基礎(chǔ)的人,看到命令都能猜出是什么含義,可是微軟的幫助就是那么讓人費(fèi)解。其實(shí)對我們有用的參數(shù)也就那么幾個(gè)。
一、備份和恢復(fù)啟動配置文件
為減少像我這樣的麻煩,大家在平時(shí)可以把啟動配置數(shù)據(jù)導(dǎo)出來,恢復(fù)就很簡單了。你也可以自己建一個(gè)配置文件,然后把啟動項(xiàng)加入其中,以后就可以去別的電腦上用了。
例如:
bcdedit /createstore "C:/1.bcd" 創(chuàng)建一個(gè)名為C:/1.bcd的啟動配置文件
bcdedit /export "C:/2.dat" 把啟動配置導(dǎo)出到C:/2.dat
bcdedit /import "C:/3.abc" 從C:/3.abc導(dǎo)入啟動配置
二、標(biāo)識符
每一個(gè)bcdedit中的啟動項(xiàng)都有一個(gè)唯一的標(biāo)識符,格式類似于Windows的CLSID,如 {791d518d-3526-11de-8dab-b4cd0d61d150}。但有幾個(gè)特殊的標(biāo)識符是我們需要記住的。
{default} 默認(rèn)啟動項(xiàng)
{ntldr} 基于NTLDR啟動的系統(tǒng),如NT4.0、XP、2003
{current} 當(dāng)前的Vista啟動項(xiàng)
{bootmgr} Windows啟動管理器,這個(gè)一般不用管,會自動生成
{memdiag} Windows內(nèi)存診斷
直接運(yùn)行bcdedit.exe就可以列出所有的啟動項(xiàng)了,大家可以把標(biāo)識符記一下。
以下的命令如果要修改自己創(chuàng)建的啟動配置文件而不是引導(dǎo)菜單,只要用/store指定文件名即可。如:bcdedit /store "C:/1.bcd" /create {ntldr} /d "XP"
三、創(chuàng)建和修改啟動項(xiàng)目
創(chuàng)建一個(gè)XP的啟動項(xiàng):bcdedit /create {ntldr} /d "XP"?
創(chuàng)建一個(gè)Vista的啟動項(xiàng):bcdedit /create /d "Vista" /application osloader
復(fù)制啟動項(xiàng):bcdedit /copy 要復(fù)制的標(biāo)識符 /d 描述
/d指定啟動菜單里的文字,可以自己起,不要忘了引號。
/application指定啟動項(xiàng)的“應(yīng)用程序類型”,創(chuàng)建非XP類型的啟動項(xiàng)時(shí)才需要。常用的有兩種:osloader(操作系統(tǒng)加載器)和bootsector(啟動扇區(qū))。一般來說VISTA都是從某個(gè)文件開始啟動的,應(yīng)該指定為“操作系統(tǒng)加載器”類型,如果是要從某個(gè)文件里讀取啟動扇區(qū)(如各種版本的LINUX啟動文件、XP引導(dǎo)WinMe的bootsect.dos文件等),就應(yīng)該指定為“啟動扇區(qū)”類型了。
第二條和第三條命令運(yùn)行后系統(tǒng)會給出一個(gè)新的標(biāo)識符,請記下,修改時(shí)要用到。
刪除啟動項(xiàng):bcdedit /delete 標(biāo)識符。但要注意,刪除XP的啟動項(xiàng)時(shí),應(yīng)加上/f參數(shù):bcdedit /delete {ntldr} /f
設(shè)置啟動菜單顯示時(shí)間:bcdedit /timeout 數(shù)值,單位為秒。
設(shè)置啟動項(xiàng)顯示順序:bcdedit /displayorder 標(biāo)識符。如:
先顯示XP再顯示VISTA:bcdedit /displayorder {ntldr} {current}
另外,用/addfirst和/addlast可以把啟動項(xiàng)加入菜單第一位和最后一位,如 bcdedit /displayorder {ntldr} /addlast
用/toolsdisplayorder可以設(shè)定啟動菜單里工具的顯示順序。
設(shè)置默認(rèn)啟動項(xiàng):bcdedit /default 標(biāo)識符。如:bcdedit /default {current} 把當(dāng)前的VISTA系統(tǒng)設(shè)成默認(rèn)啟動。
四、列出啟動項(xiàng)
我們可以用/enum列出啟動項(xiàng),格式為bcdedit /enum 應(yīng)用程序類型 [/v]。
其中“應(yīng)用程序類型”我們只需要知道常見的兩種:active和all。active指的是啟動菜單上有的項(xiàng)目,all則是所有項(xiàng)目。
/v是一個(gè)可選參數(shù),使用它后,在列表的“Windows Boot Manager”部分的默認(rèn)系統(tǒng)和顯示順序中,將以完整標(biāo)識符(就是一長串的那種)代替顯示原有的{default}、{ntldr}等特殊標(biāo)識符。一般不需要使用。
我們剛才提到的直接運(yùn)行bcdedit等同于運(yùn)行bcdedit /enum active。
那么這個(gè)有什么用呢?舉個(gè)例子,假設(shè)你裝了幾個(gè)VISTA引導(dǎo)類型的系統(tǒng)(比如2008和7、VISTA HB和U等),后來重裝了其中一個(gè)或幾個(gè),那你有可能會發(fā)現(xiàn)啟動菜單上并沒有把你的這些VISTA全顯示出來,你還得通過bcdedit手動添加缺少的系統(tǒng)。而通過上面的介紹大家可以看到,創(chuàng)建和修改新的VISTA啟動項(xiàng)的參數(shù)時(shí)要用到系統(tǒng)生成的一長串標(biāo)識符,而不是{current}這么簡單。萬一在修改參數(shù)的時(shí)候你忘了標(biāo)識符怎么辦呢?由于我們一般都習(xí)慣到最后才設(shè)置引導(dǎo)菜單上的顯示順序,你直接用bcdedit列啟動項(xiàng)是看不出來的。這時(shí)用bcdedit /enum all就可以看到引導(dǎo)菜單上沒有的啟動項(xiàng)了。
五、設(shè)置啟動項(xiàng)的參數(shù)
在啟動項(xiàng)列表中,大家可以看到每一項(xiàng)的下面都有很多參數(shù),這些命令就可以設(shè)置參數(shù)。基本格式如下:
設(shè)置參數(shù):bcdedit /set 標(biāo)識符 參數(shù)名 參數(shù)值
刪除參數(shù):bcdedit /deletevalue 標(biāo)識符 參數(shù)名
如果不指定標(biāo)識符,則默認(rèn)為當(dāng)前系統(tǒng),即{current}。我們需要掌握的幾個(gè)參數(shù)如下:
device:啟動設(shè)備,如 bcdedit /set {ntldr} device partition=C:設(shè)置XP啟動分區(qū)為C盤。對于{bootmgr}來說也是C盤,對于VISTA來說只要把C換成VISTA所在分區(qū)即可。
osdevice:系統(tǒng)啟動設(shè)備,只在VISTA啟動項(xiàng)里有效,一般設(shè)成和device一樣。
path:啟動文件路徑,XP是/ntldr,Vista是/Windows/system32/winload.exe
description:啟動菜單里顯示的文字。
nx:DEP設(shè)置,類似于XP,可設(shè)為OptIn、OptOut。
這個(gè),大家也可以列出啟動項(xiàng)看一下。
在菜單里選擇了要啟動的系統(tǒng)后,bootmgr會從device指定的啟動設(shè)備去尋找path中的啟動文件,從而啟動對應(yīng)的操作系統(tǒng)。清楚了這一點(diǎn),我們配置啟動項(xiàng)就不困難了。
下面再舉一個(gè)例子:Vista和Win ME雙啟動。
大家知道Win ME是微軟推出的9X內(nèi)核終結(jié)版,很多人說它是垃圾,其實(shí)Win ME不管從哪方面說都比98好(用過才知道)。它可以說是9X的精品,是當(dāng)時(shí)最好的家用娛樂操作系統(tǒng),既保留了98的良好兼容性又有不錯(cuò)的娛樂性能和軟硬件支持。我對WinMe感情還是很深的,它陪伴我走過了8年。家里電腦還在用著它。不過,現(xiàn)在WinME已經(jīng)過時(shí)了,我舉例的目的只是告訴大家啟動扇區(qū)文件的引導(dǎo)方法。
原理:裝過WinMe和XP雙系統(tǒng)的朋友都知道,C盤根目錄下有一個(gè)bootsect.dos文件,這就是WinMe的引導(dǎo)扇區(qū)。boot.ini文件里有一句C:/=***,其實(shí)完整的語句是:C:/bootsect.dos=***。當(dāng)在啟動菜單上選擇WinMe時(shí),系統(tǒng)就會從bootsect.dos讀取引導(dǎo)扇區(qū)從而啟動WinMe。再后來,這種方法就被廣泛用于一些XP下的DOS工具箱軟件中。
實(shí)際上,根據(jù)這個(gè)原理,我們完全可以用Vista的引導(dǎo)程序啟動WinMe。但由于在WinMe下無法運(yùn)行Vista的安裝程序,所以我們得先把WinMe的引導(dǎo)扇區(qū)提取出來。方法是:先安裝好WinMe,然后在WinMe下打開DOS窗口,運(yùn)行DEBUG,再依次輸入以下命令:
-L 100 2 0 1
-N C:/bootsect.dos
-R CX
200
-W
-Q
說明:第一行把C盤的引導(dǎo)扇區(qū)讀到內(nèi)存里,第二行指定保存的文件名,第三、四行指定要寫入200H個(gè)字節(jié)(即512D)的數(shù)據(jù),第五行把引導(dǎo)扇區(qū)寫入文件,第六行退出。
接著大家可以給它加上相應(yīng)的屬性,防止誤操作破壞文件。
然后用Vista光盤啟動,把Vista裝在另一個(gè)分區(qū)里,裝好后你會發(fā)現(xiàn)WinMe無法啟動了。下一步我們就要修改引導(dǎo)菜單。
創(chuàng)建一個(gè)WinMe的引導(dǎo)項(xiàng)并加入菜單中。上面我們說過提取出來的是WinMe的引導(dǎo)扇區(qū),所以應(yīng)該創(chuàng)建為引導(dǎo)扇區(qū)類型:
bcdedit /create /d "Windows ME" /application bootsector并記下系統(tǒng)給出的標(biāo)識符(下面以ID代替)
bcdedit /displayorder ID /addlast
給啟動項(xiàng)設(shè)置啟動文件:
bcdedit /set ID device partition=C:
bcdedit /set ID path /bootsect.dos
請注意這里的路徑應(yīng)該以實(shí)際情況為準(zhǔn),啟動分區(qū)(即引導(dǎo)扇區(qū)文件存放的分區(qū))應(yīng)該以Vista下的盤符為準(zhǔn)(Vista從光盤啟動安裝時(shí)會強(qiáng)行把所選分區(qū)改為C盤,所以盤符會不一樣)
我試過,引導(dǎo)成功。
?
?
?
總結(jié)
- 上一篇: XHTML教会我的一些东西-1
- 下一篇: android 开源组件合集-UI篇(2