在 bash 中将 .vmdk 替换为 VirtualBox?

在 bash 中将 .vmdk 替换为 VirtualBox?

所以我有一个外部 SATA 适配器和一个 VirtualBox Windows 10 虚拟机。我定期换入和换出我希望虚拟机能够访问的硬盘。现在我可以毫无问题地创建 vmdk VBoxManage internalcommands createrawvmdk -filename VMShare/external.vmdk -rawdisk /dev/$part

现在我想我会很聪明,编写一个脚本来替换external.vmdk我换入和换出新硬盘时的每个实例。 VirtualBox 不喜欢这样,并报告{#}介质的UUID 与存储在介质注册表 ( ) 中的~/VMShare/external.vmdk值不匹配。{#}~/.config/VirtualBox/VirtualBox.xml

现在我尝试修改 xml 文件来匹配 UUID,但没有成功。我也尝试VBoxManage storageattach Windows --storagectl "SATA" --port 1 --device 0 --type hdd --medium none清除该点,然后重新加载 vmdk,但出现相同的错误。我怀疑我需要以某种方式刷新某些内容,但我真的不确定下一步需要点击哪个设置。有什么想法吗?

答案1

在 Arch wiki 中找到了答案!

具体命令是VBoxManage closemedium disk VMShare/external.vmdk

完整代码:

# remove old vmdk
echo "Removing old"
eval "VBoxManage storageattach Windows --storagectl "SATA" --port 1 --device 0 --type hdd --medium none"
eval "VBoxManage closemedium disk VMShare/external.vmdk"
eval "rm VMShare/external.vmdk"

# create new vmdk and add it
echo "Creating new"
eval "VBoxManage internalcommands createrawvmdk -filename VMShare/external.vmdk -rawdisk /dev/$part"
eval "VBoxManage storageattach Windows --storagectl "SATA" --port 1 --device 0 --type hdd --medium VMShare/external.vmdk"

相关内容