﻿# 如何將 Virtual PC 2007 上面的 VM 移至 Hyper-V 平台

最近剛裝了一台 Windows Server 2008 起來，打算將公司內部常用的幾個虛擬機器(Virtual Machine, VM)全部移至 Hyper-V 平台，以下是我本次轉移虛擬機器過程的筆記，Host 主機是 Windows Server 2008 + Hyper-V，Guest 主機是 Windows Server 2003 with Service Pack 2。

### 準備工作

-   針對所有要轉移的 **Guest 主機**
    1.  將 Guest 主機的作業系統與相關軟體都升級到最新版的 Service Pack。
    2.  將 Guest 主機內的 Virtual Machine Additions 軟體移除。
    3.  將 Guest 主機確實關機，不要用 Save State 的方式關閉 VM！
    4.  壓縮 \*.vhd 檔（非必要步驟），可參考：[如何壓縮 VHD 虛擬硬碟的大小](/post/2007/12/25/How-to-compress-VHD-file-size)
    5.  **將 Guest 主機的 \*.vhd 檔全部複製到 Hyper-V 主機上。（原本的 \*.vhd 先不要砍掉喔，以防萬一）**
-   針對要轉移的目的主機，也就是 Windows Server 2008 與 Hyper-V
    1.  執行 Windows Server 2008 的 Windows Update 就會安裝最新版的 Hyper-V 軟體了。
    2.  新增角色：Hyper-V

### 在 Hyper-V 新增虛擬機器

1\. 新增 Virtual Machine

![Hyper-V :: 執行 :: New :: Virtual Machine...](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e0382f8eaccca20ec5ea-image_7.png) 

2\. 開啟後先按下一步，接者指定新的 VM 名稱，並且你可以自己指定該 VM 所在的目錄!

[![Hyper-V :: 執行 :: New :: Virtual Machine :: Specify Name and Location](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2f663dc0d8f23c629ffd-image_thumb_3.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/7e2474bda60e71647c5e-image_9.png)

3\. 設定足夠的記憶體給 VM

[![Hyper-V :: 執行 :: New :: Virtual Machine :: Assign Memory](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/aeb9bfed1c1ecd691ed8-image_thumb_4.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2c2dadf29b9680694355-image_11.png)

4\. 選擇網路介面

[![Hyper-V :: 執行 :: New :: Virtual Machine :: Configure Networking](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/45d66b37328ce8b23470-image_thumb_5.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/095ddad27ca3f5073ec8-image_13.png)

5\. 指定你從原本主機複製過來的 \*.vhd 檔所在目錄，你可以點選 \[Browser\] 選取你 VM 的第一顆硬碟，若你的 VM 有多顆硬碟可以之後再加入即可。

[![Hyper-V :: 執行 :: New :: Virtual Machine :: Connect Virtual Hard Disk](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/3925c1aa8ad5fcdbbf3d-image_thumb_6.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1c971b02f2f04040525b-image_15.png)

6.  按下 \[Finish\] 之後或按下 \[Next\] 再按 \[Finish\] 就新增完成了，但記住先不要啟用主機。

7\. 若要外掛第2顆以上的硬碟，可以在此時新增上去。先在剛新增的 VM 項目點選滑鼠右鍵，再點選設定畫面的 IDE Controller 0，點選 \[Add\] 新增 Hard Disk，然後點選 \[Browse\] 選取你的第2顆硬碟即可。

![Hyper-V :: Settings](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/4ced4a1c9a5eda3e0a96-image_17.png) 

### 開機，並設定虛擬機器

1\. 在 \[伺服器管理員\] 中雙擊剛剛新增的 Virtual Machine，並按下 Ctrl + S 開機。不過有點必須注意，如過你是用「遠端桌面」的方式連到 Windows Server 2008 進行操作，就會在點選進去後出現以下畫面，也就是你無法在使用遠端桌面的連線下，在 Guest 主機中使用滑鼠，所以建議的操作方式是直接在本機操作，或用遠端連線至 Guest 主機再操作。不過，你也有可能跟我一樣抓不到網路卡，所以只能在本機操作！

![Hyper-V :: Virtual Machine Connection](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/df1f3113784ef3d57c5b-image_23.png)

2\. 只要遇到新增硬體或有些未知的設備需要安裝 Driver 時，全部都先跳過。若提示需要重開機，也先不要重開，等設定完再重開即可。

3\. 在 Guest 中插入 Integration Services Setup Disk，準備安裝 Microsoft Hyper-V Integration Components 到我們的 Guest 主機。這個 Microsoft Hyper-V Integration Components 等同於 Virtual PC 中的 Virtual Machine Additions 用途。

![Hyper-V :: Action :: Insert Integration Services Setup Disk](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/44b2b5bff451ba50511b-image_20.png)

4\. 然後進入 Guest 主機點選剛新增的光碟機，他會提示你需要升級 HAL，點下 \[確定\] 即可。

![Hyper-V :: 需要 HAL 升級](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d19316916740f1d6eba2-image_26.png) 

5\. 當虛擬機器的 HAL 升級完成後，會被要求重開機。點選 \[是(Y)\] 重新開機。

![Hyper-V :: 當虛擬機器的 AHL 升級完成後，會被要求重開機](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/457144730f746fb21fc5-image_29.png)

6\. 重開機完並登入後 Hyper-V Integration Components 才會開始安裝。這裡也有件事要注意，只要遇到「尋找新增硬體精靈」都先按下 \[取消\] 按鈕，否則會卡住 Hyper-V Integration Components  的安裝，應該先讓 Hyper-V Integration Services 安裝完成再說。

![Hyper-V :: 重開機後，Hyper-V Integration Components 才會開始安裝](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/bc2034edff29b3c69bdd-image_32.png)

7\. 安裝完成後必須再重新開機一次。這時已經可以透過遠端桌面遠端操控 Guest 主機了。

![Hyper-V Integration Services 完成安裝](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/7e143a4fe9d8205b8926-image_35.png) 

### 完成轉移

終於大功告成啦！因為網路卡才剛抓到，所以如果你的 VM 有設定過固定 IP 的話，可能必須重新設定一次。其他的部分到目前為止還沒看到有任何異狀，應該是沒問題吧。

這台 Windows Server 2008 (x64) 我裝了 8GB 的記憶體，整體的運行效能與感覺都蠻不錯的，用了新玩意還挺新鮮的。:-)

**相關連結**

-   [Migrate Microsoft Virtual Server 2005 R2 VM to Windows Server 2008 Hyper-V](http://www.groovypost.com/howto/microsoft/windows-server/migrate-microsoft-virtual-server-2005-r2-vm-to-windows-server-2008-hyper-v/)
-   [Are VHDs compatible between Hyper-V and Virtual Server and Virtual PC?](https://learn.microsoft.com/en-us/archive/blogs/jhoward/are-vhds-compatible-between-hyper-v-and-virtual-server-and-virtual-pc)
