Windows2008 BCD改變系統啓動方式

在下一代Windows 操做系統 Windows Server 2008裏面,Microsoft引入了不少新的特性,其中就包括新的引導模式。對於一臺計算機來講,操做系統的啓動是很關鍵的一個步驟,對於目前佔據了大量桌面計算機市場領域的Microsoft Windows操做系統來講,其可否正常的啓動會影響全部使用Microsoft Windows操做系統的用戶。衆所周知,Windows 的引導方式前先後後經歷過屢次的變更,基本上是每換一代Windows操做系統,Windows的啓動方式均要發生一次變更。Windows Server 2008做爲第6代Windows操做系統,其啓動方式再次發生了變更。
在Windows Server 2008 以及Windows Vista 裏面,不管是早期的從純DOS模式下引導仍是如今Windows 2000/XP/Server 2003採用的ntldr+ntdetect.com 的引導方式,均被拋棄了。一種被稱爲Boot Manager的組件取代了ntldr+ntdetect.com 的引導方式,成爲Microsoft在Windows Server 2008 以及Windows Vista裏面採用的Windows引導方式。
在Windows Server 2008 以及Windows Vista中,微軟引入了一種全新的boot loader架構, Windows Boot Manager (Bootmgr.exe)。與Ntldr嚴重地依賴於硬件不一樣的是,Windows Server 2008中的新架構能夠實現完整的硬件獨立性,且可以與多種操做系統無縫結合,讓Windows Server 2008的啓動/引導過程更加快速與 安全。同時,將以前Windows 系統中由Boot.ini管理的內容移交給新的Boot Configuration Data (BCD : 啓動設置數據),固然,也提供了新的啓動選項編輯工具,BCDEdit (BCDEdit.exe),來管理啓動設置。對於安裝了Windows Server 2008的機器,Microsoft將修改被激活的主分區的啓動扇區(Windows 安裝程序將在磁盤的第一個扇區裏面寫入MBR內容),使用新的啓動扇區內容替代原有的啓動扇區的內容。經典的錯誤提示信息:「Ntldr is missing」將被「Bootmgr is missing」 所取代。
什麼是BCD 存儲
Boot Configuration Data (BCD)用來存儲啓動配置參數而且控制Windows Server 2008 以及Windows Vista系統如何啓動。這些參數在以前的操做系統中是被存儲在Boot.ini文件之中(存在於基於BIOS的操做系統)或者是記錄在非易失性的RAM上(NVRAM)。用戶可使用Bcdedit.exe這個命令行工具來控制在預操做系統環境下運行的Windows® code,從而實現對BDC存儲的添加,刪除,編輯以及加載等操做。
Bcdedit.exe工具存放在Windows Vista分區的\Windows\System32目錄下。對於基於BIOS的操做系統,BCD的註冊文件存儲在主分區的\Boot\Bcd目錄下。而對於基於EFI的操做系統,BCD註冊文件則是定位在EFI的系統分區上。只有擁有管理員權限的用戶才能夠修改BCD。
C:\Boot\BCD 文件就是整個 BCD 數據庫。在Windows Vista 運行的時候,這個文件是不可以被刪除或者更名的,這是由於系統一直佔用它。若是用戶將這個文件刪除,且已經安裝了Boot Manager,那麼用戶的系統將不可以啓動,由於 Boot Manger 沒法找到合適的BCD數據文件來使用。
爲何Boot.ini要升級爲BCD?
BCD的誕生主要是爲了描述啓動配置數據提供了一種新的改進的機制。隨着新的固件模型的發展(例如,擴展固件接口(EFI)),用戶須要爲底層固件抽象提供一個可擴展的通用接口。這一全新的設計將爲Windows Server 2008 以及Windows Vista的許多新特性提供必要的支持(例如,啓動恢復工具以及多用戶安裝快照)。
修改BCD的方法
根據修改內容的不一樣,用戶能夠選擇下面的某種工具來修改BCD:
· Startup and recovery. 若是用戶安裝了多個操做系統,那麼在 Startup and recovery 對話框中用戶能夠選擇默認的啓動操做系統以及倒計時數。這些設置都存儲在System Properties 對話框的Advanced 頁籤中。
· System Configuration utility (Msconfig.exe). Msconfig.exe 是一個更加高級的工具,它主要包括瞭如下的操做 /debug, /safeboot, /bootlog, /noguiboot, /basevideo, 以及 /numproc.
· BCD WMI provider. 這個工具是一個管理接口,使用它用戶能夠利用腳原本修改BCD。
· BCDEdit.exe. 在Windows Server 2008和Windows Vista中這個命令行的工具替代了原來的 Bootcfg.exe 工具,用戶也不能用Bootcfg.exe來修改BCD,不過,Bootcfg.exe工具在系統中依然有效,用以支持以前的操做系統。
BCD要比XP的Bootmgr強大得多,所以你還可以用它作其它不少的事。不過BCDEdit是比較難理解與使用的,BCD中管理啓動數據的規則也要比你所想象的更爲複雜得多。使用Bcdedit.exe,用戶能夠在Windows Server 2008中建立一個BCD 存儲,也能夠爲現有BCD存儲添加新的登陸項,修改或者刪除現有登陸項,此外,Bcdedit.exe工具還能夠導入導出現有的Bcd存儲,查詢指定項以及應用全局修改。 新的引導環境被分爲兩個部分,Windows Boot Manager 和引導環境中運行的多種引導應用程序。Windows Boot Manager簡單的說就是一個迷你的 操做系統,這個系統控制着用戶的引導過程,而且容許用戶選擇哪一個引導應用程序須要運行。每一個引導應用程序都有着本身的不一樣的做用,例如Windows Boot Loader應用程序就是用來引導Windows的。
當用戶使用/enum參數時,用戶能夠看到一個Windows Boot Manager登陸(由於只有一個boot manager),對於每一個Windows Server 2008 或者Windows Vista操做系統用戶還能夠看到對應的Windows Boot Loader應用程序。例如,若是用戶在計算機的不一樣分區中安裝了兩個不一樣版本的Windows Vista操做系統,那麼用戶就能夠看到兩個Windows Boot Loader登陸。此外,用戶還能夠看到一個legacy登陸,這個登陸並非一個引導應用程序,而是使用NTLDR以及Boot.ini來引導Windows Server 2008 之前的操做系統,例如Windows Server 2003, Windows XP以及更早的操做系統。
當用戶須要在已經安裝了Windows Server 2008 或者Windows Vista的計算機上安裝早期的Windows 操做系統時,用戶須要按照下面的步驟依次進行:首先安裝早期的Windows系統,而後登陸到舊的操做系統上,經過運行活動分區中\boot目錄下的fixntfs /lh 來恢復最新的boot manager。而後爲舊的操做系統建立一個BCD登陸,找到定位在\Windows\System32目錄下的Bcdedit.exe,而後輸入下面的命令:

Bcdedit / create ... {legacy}
/ d 「Description」Bcdedit / set
... {legacy} device bootBcdedit / set
... {legacy} path \ntldrBcdedit / displayorder ... {legacy}
/ addlast注意Description表明的是舊操做系統新的登陸的描述.


要想建立一個引導Windows Imaging Format (WIM)鏡像的登陸,那麼用戶須要建立一個帶有指向引導分區的RAMDISK選項的OSloader類型的登陸。要想完成這些操做,要使用下面的程序:首先引導路徑爲multi(0)disk(0)rdisk(0)partition(1)來對應計算機的C盤,而後鏡像還要是一個標準的Boot.wim文件,WIM鏡像的System32文件夾下還要包含Winload.exe文件。具體步驟以下:首先建立在BCD存儲上建立一個{ramdisktoptions}對象:

bcdedit / create ... {ramdiskoptions}
/ d " Ramdisk options " bcdedit / set
... {ramdiskoptions} ramdisksdidevice partition = Drivebcdedit / set
... {ramdiskoptions} ramdisksdipath \boot\boot.sdi注意Drive表明的是包含鏡像的分區


而後建立一個新的引導應用程序:bcdedit /create /d "Boot from WIM" /application OSLOADER,完成後新建立的登陸會返回一個標識符(GUID),下面的操做所有是依據這個GUID來進行的:

bcdedit / set
... {GUID} device ramdisk = [c:]\sources\boot.wim,... {ramdiskoptions} bcdedit / set
... {GUID} path \windows\system32\winload.exebcdedit / set
... {GUID} osdevice ramdisk = [c:]\sources\boot.wim,... {ramdiskoptions} bcdedit / set
... {GUID} systemroot \windows



若是用戶但願引導到Windows Preinstallation Environment (Windows PE)環境中,那麼還須要完成下面的操做:

bcdedit / set
... {GUID} winpe yesbcdedit / set
... {GUID} detecthal yes


最後在顯示列表上添加上新的登陸:

· bcdedit / export 「D:\BCD Backup\Bcd Backup : 將啓動設置備份到D盤 「BCD Backup」 目錄下;· bcdedit / import 「D:\BCD Backup\Bcd Backup : 恢復以前備份在D盤 「BCD Backup」目錄下啓動選項。


  使用BCDEdit修改啓動菜單選項

  做爲一種良好的操做習慣,在對Windows Server 2008的啓動選項進行任何修改前,首先要對BCD中的啓動選項進行備份,相應的命令上面已經介紹過,在此再也不贅述;其次,使用「bcdedit 」或「 bcdedit /enum all 」來查看系統中 硬盤或分區的正確 GUID 標識,並將其記錄下來。畢竟,BCDEdit只是一款命令行工具,咱們操做時需手動輸入相似「{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}」這樣的長字符串時,很容易出錯,而這每每會致使Windows Vista啓動失敗。

此外若是用戶須要改變特定的登陸選項的debugger設置,能夠按照下面的步驟操做: 要設計一個連續的debugging:bcdedit / set
... {GUID} debugtype:serialbcdedit / set
... {GUID} baudrate:Baudratebcdedit / set
... {GUID} debugport:Port要設置一個USB的debugging:bcdedit / set
... {GUID} debugtype:usbbcdedit / set
... {GUID} targetname:debugging要設置1394的debugging:bcdedit / set
... {GUID} debugtype:1394bcdedit / set
... {GUID} targetname: 32 下面的命令行演示的是爲c74b751a - ff09 - 11d9 - 9e6e - 0030482375e4在115200波特com1端口設置連續debugging:Bcdedit / set
... {c74b751a - ff09 - 11d9 - 9e6e - 0030482375e4} debugtype:serialBcdedit / set
... {c74b751a - ff09 - 11d9 - 9e6e - 0030482375e4} baudrate: 115200 Bcdedit / set
... {c74b751a - ff09 - 11d9 - 9e6e - 0030482375e4} debugport: 1




最後須要說明的是,Windows Server 2008 對BCD鍵是採用了保護措施的。Windows Server 2008 默認設定,只容許 SYSTEM 用戶可以徹底控制這個鍵,而Administrators組用戶只有讀取的權限,沒有寫入的權限。而其餘類型的用戶則根本沒有查看的權限。換句話說,要修改這個鍵,就須要手動調整註冊表的 安全描述符的內容了。調整註冊表安全描述符的方法很簡單,只須要右鍵點擊將要被修改的鍵,而後選擇權限,而後點擊添加按鈕把本身的帳戶加入列表,並打開寫入權限便可,這裏再也不詳細的描述。 BCD 是一個很是複雜的話題,涉及到不少Windows比較深刻的技術。本文簡單的描述了Windows Server 2008 BCD的一些特性,對於普通的用戶來說,BCD也許與以前的Boot.ini區別不大,可是對於開始使用基於EFI (Extensible Firmware Interface : 可擴展固件接口,之後採用這種接口的PC會愈來愈多 )的計算機用戶而言,全新的引導技術將會帶給用戶全面的管理體驗。
相關文章
相關標籤/搜索