星期一, 二月 08, 2010

VHD開機補述

哪些Windows能從VHD開機?如果要將已經開機過的VHD複製到另一部實體機器並從VHD開機?Vista能不能載入VHD裡的作業系統?VHD需要支援VT的處理器嗎?

哪些Windows能從VHD開機?

所有Windows 7和Windows Server 2008 R2版本都支援VHD(建立、連結,將VHD視為一般硬碟),但能從VHD開機的作業系統,僅限Windows 7企業版、旗艦版,及Windows Server 2008 R2(Foundation版除外)。

如果要將已經開機過的VHD複製到另一部實體機器並從VHD開機?

這必須先以sysprep執行過一般化(sysprep /generalize /oobe);TechNet《常見問題集:Windows 7 中的虛擬硬碟》的說明如下:

將 VHD 用於其他電腦的原生開機前,先執行 Sysprep 來將映像一般化。Sysprep 一般化作業可備妥安裝在實體磁碟分割的 Windows 映像,或安裝在即將用於另一台電腦之原生開機 VHD 中的 Windows 映像。執行 Sysprep 之後,您可以將 VHD 複製到多部實體電腦或虛擬機器中以進行原生開機。

Vista能不能載入VHD裡的作業系統?

如果想從Vista SP1載入VHD裡的作業系統不是不行,只是要將Vista裡的開機選單編輯器BCDEdit和開機管理員BootMgr換成Windows 7或Windows Server 2008 R2版本。

Aviraj Ajgekar在其文章說明了作法:先備份Vista的BCDEdit和BootMgr,然後將新版的這兩個檔案複製到Vista,最後再以新版的BCDEdit將VHD加入Vista的開機選單(作法一如《邊做邊學 Windows 7:如何在 Windows 7 建置開機 VHD》所述),重開機後就可從選單選取新加入的項目。

VHD需要支援VT的處理器嗎?

微軟Springboard Series Insider電子報 Volume 2, No. 2有一些關於VHD開機的內容並不正確,以下是原文:

There are a couple of prerequisites for using Boot from VHD:

•  Your hardware needs to have virtual technology (VT) embedded in the processor. (Currently both Intel and AMD have this technology available.)

•  The VT functionality needs to be enabled in BIOS.

•  The host needs to be either Windows 7 or Windows Server 2008 R2.

•  The VHD needs to be either Windows 7 or Windows Server 2008 R2.

•  The VHD needs to be the Hyper-V version, not Virtual Server 2005 or Virtual PC 2007.

錯誤的是前兩點,VHD開機並不需要VT(但原作者的部落格文章卻又沒有前兩點,不知道到底是作者寫錯,還是電子報的編輯出錯)。


[全文]

星期五, 二月 05, 2010

差異VHD及其應用

利用DiskPart或『磁碟管理』建置VHD時,有兩種VJD類型可以選擇:FIXED、EXPANDABLE;也就是能建立固定大小或動態變動的VHD。但為什麼《常見問題集:Windows 7中的虛擬硬碟》裡列了3種類型?

第3種VHD類型是「差異」的VHD(differential VHD),這種類型是以另一個VHD(可稱為父系VHD)為基礎,只包含兩個VHD之間的差異而得名;因此若要建置差異VHD,必須先建置其父系VHD(可以是固定、動態、甚至差異等類型之一)。例如:

create vdisk file=c:\win7.vhd maximum=40960 type=expandable
...
create vdisk file=d:\win7-diff.vhd parent=d:\win7.vhd

上述第2行建置了差異VHD,它並非以Type指定類型,而是因為以Parent指定其父系VHD--第1行建置的VHD。

先進Arthur Hsu曾以差異VHD建置了能快速回復Windows 7的系統(而且我也親自試過),細節可參閱他的兩篇文章:Windows 7上玩VHD的筆記Windows 7上玩VHD的筆記(2)。簡述其步驟如下:

  1. 先以Windows 7安裝光碟開機,選取語言之後按『下一步』。
  2. 接著按Shift和F10的組合按鍵,會出現命令列視窗,輸入DiskPart即可展開磁碟及VHD相關的建置工作(如下圖)。
  3. 先建置VHD,固定或動態皆可,VHD容量只要比官方的Windows 7安裝需求硬碟空間建議值稍大一點即可。
  4. 將Windows 7安裝到步驟1所建的VHD。
  5. 完成之後再建差異VHD。
  6. 以BCDEdit將開機選項指向步驟3建置的差異VHD。

如此不但能以新建的差異VHD開機,也因為用的是差異VHD,因此系統的更改會記錄在差異VHD,如果系統有問題,就只要以Windows 7安裝光碟開機,並刪除步驟3建置的差異VHD,再重複步驟3、4,就可將Windows 7回復成初始狀態。

前述常見問題集的《VHD檔案類型分為哪幾種?》說明了差異VHD的若干細節,請務必先行參閱。


[全文]

星期四, 二月 04, 2010

如何在 Windows 7 建置開機 VHD

Windows 7和Windows Server 2008 R2都支援VHD開機,為此我做了實作整個過程的影片及文章。

欲觀看完整的文章及影片,請參訪台灣微軟TechNet的《邊做邊學 Windows 7:如何在 Windows 7 建置開機 VHD》。


[全文]

星期三, 二月 03, 2010

Windows 7和Windows Server 2008 R2支援VHD開機

VHD可以開機並不奇怪,因為VHD在微軟VM產品的虛擬機器裡都能開機;特別的是實體環境也能以VHD裡的系統來開機。

VHD(Virtual Hard Disks,虛擬硬碟)是一種磁碟映像檔,一個或一組VHD檔即可「刻畫」出一顆硬碟。VHD一開始是Connectix公司為旗下的虛擬軟體Virtual PC所創,目的是用來模擬虛擬機器(VM)的硬碟;這家公司後來被微軟併購,Virtual PC也成為微軟的產品。VHD雖然模擬出硬碟,但VHD檔還是存放在硬碟。

對VM而言,VHD就是硬碟,而內含各種作業系統的VHD,能讓VM開機執行不同的作業系統。既然VM能以VHD開機,何不也讓實體機器具備相同的能力?Windows 7和Windows Server 2008 R2能以VHD開機,或許就是基於這種想法而誕生的功能。

Windows 7和Windows Server 2008 R2支援VHD,能夠建立、連接(mount)VHD(當然也能中斷連接);連接之後,VHD對Windows 7或Windows Server 2008 R2就如同硬碟。此外,Windows 7和Windows Server 2008 R2也支援VHD「原生開機」,也就是以Windows Loader啟動VHD裡的作業系統。如下圖,Windows 7的DiskPart具備VHD的管理功能。

舉例來說,我先在電腦安裝了Windows 7,接著可建立、連結VHD,並將另一個Windows 7或Windows Server 2008 R2部署到這個新建的VHD(可能是作為測試用的系統),然後再將VHD裡的系統加入電腦Windows 7的開機選單,重新開機時,開機選單會有兩項選擇,一是原本的Windows 7(如下圖第1項),另一項是新增到VHD的系統(如下圖第2項:Win7 From VHD)。

這種作法最大的好處,是不需為了安裝新作業系統而切割主磁碟分割區,並且有內建的Windows Loader、Windows Boot Manager可用;缺點是執行效能較實體硬碟稍差(動態VHD又比固定VHD稍差)。不過Windows 7或Windows Server 2008 R2也不是每個版本都支援從VHD開機:Windows 7只有企業版和旗艦版支援,Windows Server 2008 R2則只有Foundation版不支援。

如果想多瞭解VHD,TechNet Library的《常見問題集:Windows 7中的虛擬硬碟》相當值得一讀。


[全文]