Oto jak rozwiązałem mój problem.
Najpierw cofnąłem zmianę UUID w moim podstawowym pliku VDI, używając skryptu autorstwa jordoncm
Potem próbowałem po prostu zmienić ścieżki w pliku vbox, aby pasowały do nowej lokalizacji. To nie działało, ponieważ pojawiły się różne różne błędy i nawet nie byłem w stanie dodać maszyny wirtualnej przy użyciu pliku vbox.
Znalazłem więc ten artykuł na blogu autorstwa Petera Portera, który zasugerował:
ponieważ każdy plik .vdi zawiera tylko te sektory zmienione od ostatniego pliku .vdi, kopiowanie plików .vdi w porządku chronologicznym powinno dać nam plik .vdi zawierający pełną kopię wszystkich wcześniejszych migawek.
...
Użyj komendy „VBoxManage clonehd”, aby utworzyć nowy plik .vdi na podstawie oryginału, a następnie dodaj każdy kolejny plik za pomocą argumentu „–existing”, aby po prostu dodać dane do istniejącego pliku .vdi, który budujesz. Poniższa lista poleceń oparta jest na moim powyższym przykładzie:
VBoxManage clonehd Machine.vdi Machine-full.vdi
VBoxManage clonehd Snapshots {UUID1} .vdi Machine-full.vdi
VBoxManage clonehd Snapshots {UUID2} .vdi Machine-full.vdi
VBoxManage clonehd Snapshots {UUID3} .vdi Machine-full.vdi
VBoxManage clonehd Snapshots {UUID4} .vdi Machine-full.vdi
To da ci plik „Machine-full.vdi”, który reprezentuje pełny stan twojego komputera w stanie aktywnym bez żadnego związku z nadrzędnymi plikami .vdi. Możesz teraz użyć tego pliku „Machine-full.vdi” na nowej maszynie wirtualnej lub edytować istniejącą maszynę wirtualną, usuwając stary plik .vdi i dodając ten .vdi.
Z drobnymi poprawkami, które wydawały mi się działać:
To jest dysk twardy i jego migawki:
<HardDisk uuid="{ed1428ca-76be-440a-894b-e666b50f5c86}" location="H:/vm/ft.vdi" format="VDI" type="Normal">
<HardDisk uuid="{8d8be78f-6648-4503-bee3-8810cb853a99}" location="Snapshots/{8d8be78f-6648-4503-bee3-8810cb853a99}.vdi" format="VDI">
<HardDisk uuid="{cce0ee4f-5052-4be7-81ff-47ea08202716}" location="Snapshots/{cce0ee4f-5052-4be7-81ff-47ea08202716}.vdi" format="VDI">
<HardDisk uuid="{c297d4b9-972d-4b07-a839-5d76ee8d0387}" location="Snapshots/{c297d4b9-972d-4b07-a839-5d76ee8d0387}.vdi" format="VDI">
<HardDisk uuid="{8e9ca914-648f-464c-b515-2606c644d7f0}" location="Snapshots/{8e9ca914-648f-464c-b515-2606c644d7f0}.vdi" format="VDI"/>
</HardDisk>
</HardDisk>
</HardDisk>
</HardDisk>
Oto polecenia, które uruchomiłem (przepraszam, że niektóre zostały odcięte od okien ...):
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd N:\vm\ft.vdi N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd "N:\vm\VirtualBox VMs\lfs\Snapshots\{8d8be78f-6648-4503
VBoxManage.exe: error: Parent medium with UUID {ed1428ca-76be-440a-894b-e666b50f5c86} of the medium 'N:\vm\Vi
03-bee3-8810cb853a99}.vdi' is not found in the media registry ('C:\Users\ <user>/.VirtualBox\VirtualBox.xml')
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component Medium, interface IMedium, callee IUnknow
Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDevType, AccessMode_ReadWrite, fForceNewUuidOnOpen, pM
xManageDisk.cpp
Bzdura wydaje się, że muszę dodać wpis w VirtualBox.xml w MediaRegistry-> HardDisks, ale muszę upewnić się, że dodałem do niego każdą migawkę w kolejności chronologicznej po każdej kopii. Więc to tak:
Copy VM
Add entry to VirtualBox.xml
Copy VM ...
I resztę tego, co zrobiłem na wypadek, gdyby pomógł komukolwiek innemu:
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{8d8be78
_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{cce0ee4f-5052-4be7-81ff-47ea08202716}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{c297d4b9-972d-4b07-a839-5d76ee8d0387}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
C:\Program Files\Oracle\VirtualBox>VBoxManage clonehd --existing "N:\vm\VirtualBox VMs\lfs\Snapshots\{8e9ca914-648f-464c-b515-2606c644d7f0}.vdi" N:\vm\ft_full.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: a7fb5e25-c248-4644-a898-f1e26f6570a4
A potem po prostu utworzyłem nową maszynę wirtualną, używając ft_full.vdi jako podstawy. Dopasowano pozostałe ustawienia w panelu ustawień GUI.