Error
Runtime error opening 'C:\Users\your_name\VirtualBox VMs\Metasploitable2\Metasploitable2.vbox' for reading: -103 (Path not found.).
F:\tinderbox\win-6.1\src\VBox\Main\src-server\MachineImpl.cpp[754] (long __cdecl Machine::i_registeredInit(void)).
終了コード :
E_FAIL (0x80004005)
コンポーネント:
MachineWrap
インターフェース:
IMachine {85632c68-b5bb-4316-a900-5eb28d3413df}
Could not open the medium 'C:\Users\your_name\Downloads\metasploitable-linux-2.0.0\Metasploitable2-Linux\Metasploitable.vmdk'.
VD: error VERR_PATH_NOT_FOUND opening image file 'C:\Users\your_name\Downloads\metasploitable-linux-2.0.0\Metasploitable2-Linux\Metasploitable.vmdk' (VERR_PATH_NOT_FOUND).
終了コード :
E_FAIL (0x80004005)
コンポーネント:
MediumWrap
インターフェース:
IMedium {ad47ad09-787b-44ab-b343-a082a3f2dfb1}
仮想マシン"metasploitable2"のセッションを開きませんでした
原因
など、仮想マシンのファイル(.dvi,.vbox)を移動した際にこのようなエラーが出る
解決方法
登録済み VM の削除
VM VirtualBox から登録済みの VM を削除してから、仮想メディアマネージャーで移動前のディスクを削除します。
もし、手動で移動した VM が「VM VirutualBox マネージャー」の左側のリストに載っているなら、まずはそれを削除します。「除去のみ」今回はこちらで治った。
登録済みメディアの削除
今回のエラーの原因は、「VM VirutualBox マネージャー」からは削除されているのに、メディアの情報が残っていることが原因です。メディアの登録情報は「仮想メディアマネージャー」で確認・操作できます。
メニューで「ファイル」→「仮想メディアマネージャー」をクリックして、「仮想メディアマネージャー」を開きます。
タブ「ハードドライブ」で移動済みのドライブに黄色の警告マークがついていると思います。それを削除してください。
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>
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" showhdinfo "C:\Users\yourneme\VirtualBox VMs\Kali-Linux-2021.1-vbox-amd64\kali-linux-2021.1-vbox-amd64-disk001.vdi"
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands sethduuid "C:\Users\yourname\VirtualBox VMs\Kali-Linux-2021.1-vbox-amd64\kali-linux-2021.1-vbox-amd64-disk001.vdi"
C:\WINDOWS\system32>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" showhdinfo "C:\Users\yourname\VirtualBox VMs\Kali-Linux-2021.1-vbox-amd64\kali-linux-2021.1-vbox-amd64-disk001.vdi"
UUID: 265b5550-36fe-4747-beb5-e3cad1396d86
Parent UUID: base
State: inaccessible
Access Error: UUID {146e7d15-376e-4454-ad03-11b45edf4517} of the medium 'C:\Users\yourname\VirtualBox VMs\Kali-Linux-2021.1-vbox-amd64\kali-linux-2021.1-vbox-amd64-disk001.vdi' does not match the value {265b5550-36fe-4747-beb5-e3cad1396d86} stored in the media registry ('C:\Users\rudycandy\.VirtualBox\VirtualBox.xml')
Type: normal (base)
Location: C:\Users\yourname\VirtualBox VMs\Kali-Linux-2021.1-vbox-amd64\kali-linux-2021.1-vbox-amd64-disk001.vdi Storage format: VDI
Format variant: dynamic default
Capacity: 81920 MBytes
Size on disk: 27159 MBytes
Encryption: disabled
Property: AllocationBlockSize=1048576
C:\WINDOWS\system32>"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands sethduuid "C:\Users\yourname\VirtualBox VMs\Kali-Linux-2021.1-vbox-amd64\kali-linux-2021.1-vbox-amd64-disk001.vdi"
UUID changed to: 146e7d15-376e-4454-ad03-11b45edf4517
注意
internalcommands sethduuid で変更した後確認でshowhdinfoのコマンドを実行するとuuidが変更する前の値になるので、internalcommands sethduuidの後はshowhdinfoを入力しない。(確認しない)
構成ファイル (.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]
ディスクのファイル名も変更した場合に。/user/yournameあたりが変更する箇所の可能性がある。
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>
解決
何とか解決することができた。
この方法は仮想イメージの移植と似ているので今後移植予定なら役立つ方法だろう。