VirtualBoxでUbuntuをインストールするときにvhdファイルを使いまわすとエラーになる

2013/09/10

vhdファイルを使いまわす方法

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

Related

Vagrant+Docker+PHP環境で「session.save_path」指定時に、セッションファイルが空になるエラー

ファイル共有でのフォルダの所有者を設定 結論 PHP5.4.28 からセッションファイルのownerはrootもしくはWebサーバのユーザに限るという制限が...

LINEと連携したテイクアウト事前注文システム徹底比較!

目次 テイクアウト予約・注文受付システムのトレンド LINEと連携したテイクアウト事前注文システムの価格表 L.B.B.Cloud テイクイーツ ...

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...
トップへ戻る