在Windows 2008之前,我一直使用Virtual Server 2005來跑VM,所以手上有一堆經營多時的VM: Windows XP, Windows 2003, Vista, Windows 2008...

說老實話,要搞好一個開發測試環境,從灌OS、上Update、安裝必要的軟體,耗掉時間十分可觀(我寶貴的青春吶~~),換到Windows 2008後,若能直接把Virtual Server的VM Image(VHD檔)拿來用,省去砍掉重練的功夫,豈不快哉。

不過,先前實測的經驗不甚理想,搬移後OS或許可用,但總有一堆網路無法使用、滑鼠整合失效之類的後遺症,所以我印象中認定它不可行,還是選擇乖乖重裝新VM。

今天找到一篇文章(Are VHDs compatible between Hyper-V and Virtual Server and Virtual PC?),解答我多年的困惑。歸納成簡單結論: 雖然VHD格式未變,但Hyper-V需要的HAL版本(IO-APIC)與Virtual PC/Virtual Server需要的HAL版本(PIC)不同。所以可想像成將電腦A的HD拔起來插到電腦B時,若OS HAL版本與新硬體不匹配,就會衍生問題。[HAL的定義: 中文英文]

不相容的狀況分成兩種: Hyper-V的VHD(IO-APIC)移到VPC/Virtual Server的環境(PIC)必死無疑,連開機都別想。而我比較在意的VPC/Virtual Server VHD(PIC HAL)移到Hyper-V(IO-APIC),答案則是: 可行,只要不裝整合元件(Integration Components)的話。[這解釋了為什麼VM移到Hyper-V後網路卡、滑鼠整合會出錯。]

那麼HAL版本不同的問題可以解決嗎? Windows Vista以前的OS,HAL版本是在安裝過程決定的,雖然有些奇門遁甲之術可以抽換HAL,但並不在微軟官方支援範圍內。Windows Vista/Windows 7/Windows 2008比較幸運,可以透過以下的手法解決: [參考]

移到Hyper-V的Virtual Server VHD開機後會看到"Virtual Machine Bus"裝置出現小驚嘆號:

先移除舊版的Virtual Machine Add-In,啟動msconfig,勾選Detect HAL後重新開機:

接著重新安裝Hyper-V版的Integration Service,網路卡/滑鼠整合就通通回來了,讚!!

[2010-04-20更新]TechNet上有很詳盡的步驟說明: Virtual Machine Migration Guide: How To Migrate from Virtual Server to Hyper-V (感謝AskaSu補充)


Comments

# by u329

改HAL我以前也玩過,現在不這麼麻煩了,直接用免費的VirtualBox,既有的VHD/VMDK都可直接使用。若有使用Hyper-V,只需在GUI介面設定值頁籤的[IO-APIC]選項打勾即可,簡單又方便~~

Post a comment