VirtualBoxにUbuntuを構築するときにvhdファイルを使っています。
vhdファイルだとGuestAdditionsを使ったシームレスモードが有効になるんですよね。
(僕の環境ではisoファイルだと何やってもシームレスモードが有効になりませんでしたorz)
今回vhdファイルを使いまわす時にハマった内容と解決策をご紹介します。
【ハマった内容】
ダウンロードした「ubuntu-ja-12.04-desktop-i386-vhd.zip」を解凍し、vhdファイルをそれぞれコピーし、環境A、環境Bを作ろうと思いました。
環境Aは問題なく環境構築完了!
しかし、環境Bの構築中にエラー!
エラーの出現はVirtualBoxでの新規仮想マシン構築中にありました。
「仮想ハードディスク」で「既存のハードディスクを使用」を選択後、環境B用のvhdファイルを選択したとき、エラーが発生したのです。
"ハードディスク D:\VirtualBox\Ubuntu_COMMON\ubuntu-ja-12.04-desktop-i386.vhd"のオープンに失敗しました。
Cannot register the hard disk 'D:\VirtualBox\Ubuntu_COMMON\ubuntu-ja-12.04-desktop-i386.vhd' {ae5e02ac-1e18-4780-884d-d2f27b998c22} because a hard disk 'D:\VirtualBox\Ubuntu_PHP\ubuntu-ja-12.04-desktop-i386.vhd' with UUID {ae5e02ac-1e18-4780-884d-d2f27b998c22} already exists.
終了コード : E_INVALIDARG (0x80070057)
コンポーネント: VirtualBox
インターフェース: IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}
「いやいや、環境A用のvhdファイルと分けているから大丈夫でしょ。」と思っていましたが、ダメみたいです。それは、「VirtualBoxが、ハードディスクイメージを一意に管理しており、重複するハードディスクイメージは登録できません」ということみたいです。
(参考元)
すなわち、コピー元のvhdファイルに一意のUUIDが振られているため、コピーしたvhdファイルも同じUUIDになるのですね。
【解決策】
コピーしたvhdファイルのUUIDを変えてあげれば万事OK!
まずはコマンドプロンプトを起動し、VirtualBoxのVBoxManage.exeがあるフォルダに移動。
cd /d D:\VirtualBox
そしてUUIDを変更するコマンドを実行。
VBoxManage.exe -nologo internalcommands sethduuid D:\VirtualBox\XXXX\ubuntu-ja-12.04-desktop-i386.vhd