はじめに
このエラーは、「仮想メディアマネージャー」に登録済みのメディアを追加しようとしたときに発生します。これの解消方法を紹介します。
元の VM のディレクトリを別の場所に丸ごと移動した場合
VM VirtualBox から登録済みの VM を削除してから、仮想メディアマネージャーで移動前のディスクを削除します。
登録済み VM の削除
もし、手動で移動した VM が「VM VirutualBox マネージャー」の左側のリストに載っているなら、まずはそれを削除します。「すべてのファイルを削除」、「除去のみ」のどちらでも構いません。
登録済みメディアの削除
今回のエラーの原因は、「VM VirutualBox マネージャー」からは削除されているのに、メディアの情報が残っていることが原因です。メディアの登録情報は「仮想メディアマネージャー」で確認・操作できます。
メニューで「ファイル」→「仮想メディアマネージャー」をクリックして、「仮想メディアマネージャー」を開きます。
タブ「ハードドライブ」で移動済みのドライブに黄色の警告マークがついていると思います。それを削除してください。
元の VM のディレクトリを新しい VM として丸ごとコピーした場合
コピー先のディスクの UUID を手動で変更します。さらに、VM 設定ファイル (.vbox ファイル) の内容も修正します。
vboxmanage コマンドの確認
vboxmanage コマンド (Windows の場合は VBoxManage.exe) にパスが通っていない場合、絶対パスで実行できるよう、コマンドの場所を確認しておきます。
Windows の場合、C:\Program Files\Oracle\VirtualBox\VBoxManage.exe あたりにあると思います。
UUID 変更
下記コマンドを実行します。
cd <メディア(.dvi)がある場所>
(Windows、VirtualBox 4.3.30 の場合)
(変更前の UUID 確認)
> "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" showhdinfo <メディアファイル.dvi>
(変更実行)
> "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands sethduuid <メディアファイル.dvi>
構成ファイル (.vboxファイル) 編集
手動で仮想メディアの UUID を変更したため、構成ファイル (.vboxファイル) も編集する必要があります。また、VM 自体の UUID も重複が許されませんので、あわせて編集する必要があるでしょう。
関係ないタグ、属性を省略して、修正箇所のみ記載します。「uuid」でファイル内を検索して、編集漏れがないか確認してください。
- VirtualBox > Machine[uuid]
コピー元の値を +1 するなど、他のすべての VM と重複しないように。 - VirtualBox > Machine[name]
「VM VirtualBox マネージャー」上で、コピー元と区別できるように。 - VirtualBox > Machine > MediaRegistry > HardDisks > HardDisk[uuid]
vboxmanage コマンドで変更後の UUID に。 - VirtualBox > Machine > MediaRegistry > HardDisks > HardDisk[location]
ディスクのファイル名も変更した場合に。 - VirtualBox > Machine > StorageControllers > StorageController > AttachedDevice > Image[uuid]
vboxmanage コマンドで変更後の UUID に。
<VirtualBox>
<Machine uuid="{07d03d86-30b5-4863-94f6-8ec9c9affd83}" name="CentOS6-devel">
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{50842340-e454-4ed6-ae7e-8d8579cae72a}" location="CentOS6-devel.vdi"/>
</HardDisks>
</MediaRegistry>
<StorageControllers>
<StorageController>
<AttachedDevice>
<Image uuid="{50842340-e454-4ed6-ae7e-8d8579cae72a}"/>
</AttachedDevice>
</StorageController>
</StorageControllers>
</Machine>
</VirtualBox>