编写VirtualBox和VM映像目录?

jww*_*jww 2 shell virtualbox

我从桌面运行一个脚本,根据需要创建虚拟机(如下所示).

当脚本从我的桌面执行时(几乎总是如此),VM(<name>.vbox)被保存到~/VirtualBox VMs/<name>但硬盘驱动器(<name>.vdi)被保存到我的桌面.然后,我必须移动硬盘驱动器并修复*.vbox文件中的位置.

VBoxManage showvminfo 不提供目录位置(尽管它可能从相关字段解析).

VBoxManage有一个setproperty提供了machinefolder,但它没有相应的getproperty.调用VBoxManage setproperty machinefolder(没有参数)会导致错误.

如何获取VBoxManage用于保存虚拟机的目录?

MEDIA=ubuntu-12.04.3-server-amd64.iso
VMNAME=openstack-swift-2
VMOSTYPE=Ubuntu_64

##########################################
# Public network vboxnet0 (10.1.0.0/16)
VBoxManage hostonlyif create
VBoxManage hostonlyif ipconfig vboxnet0 --ip 10.1.0.254 --netmask 255.255.0.0

##########################################
# Private network vboxnet1 (10.2.0.0/16)
VBoxManage hostonlyif create
VBoxManage hostonlyif ipconfig vboxnet1 --ip 10.2.0.254 --netmask 255.255.0.0

##########################################
# VirtualBox Machine
VBoxManage createvm --name "$VMNAME" --ostype "$VMOSTYPE" --register

# VirtualBox CPU and Memory
VBoxManage modifyvm "$VMNAME" --cpus 1 --cpuexecutioncap 80 --memory 2048

# VirtualBox Network
VBoxManage modifyvm "$VMNAME" --nic1 nat \
    --nic2 hostonly --hostonlyadapter2 vboxnet0 \
    --nic3 hostonly --hostonlyadapter3 vboxnet1

# VirtualBox DVD
VBoxManage storagectl "$VMNAME" --name "IDE Controller" \
    --add ide --controller PIIX4 --hostiocache on --bootable on
VBoxManage storageattach "$VMNAME" --storagectl "IDE Controller" \
    --type dvddrive --port 0 --device 0 --medium "$MEDIA"

# VirtualBox HDD
VBoxManage createhd --filename "$VMNAME".vdi --size 20480
VBoxManage storagectl "$VMNAME" --name "SATA Controller" \
    --add sata --controller IntelAHCI --hostiocache on --bootable on
VBoxManage storageattach "$VMNAME" --storagectl "SATA Controller" \
    --type hdd --port 0 --device 0 --medium "$VMNAME.vdi"
Run Code Online (Sandbox Code Playgroud)

jww*_*jww 5

这是我为其他人徘徊在这个页面上的想法.首先,list用于systemproperties.这会让你得到类似的东西:

$ VBoxManage list systemproperties
API version:                     4_2
Minimum guest RAM size:          4 Megabytes
Maximum guest RAM size:          2097152 Megabytes
Minimum video RAM size:          1 Megabytes
Maximum video RAM size:          256 Megabytes
Minimum guest CPU count:         1
Maximum guest CPU count:         32
...
Default machine folder:          /home/jwalton/VirtualBox VMs
VRDE auth library:               VBoxAuth
Webservice auth. library:        VBoxAuth
Run Code Online (Sandbox Code Playgroud)

然后解析出来Default machine folder.该awk用来调整前导空格(你必须要小心,因为有路径中的空格):

TPATH=`VBoxManage list systemproperties | grep -i "default machine folder:" \
    | cut -b 24- | awk '{gsub(/^ +| +$/,"")}1'`
VMPATH="$TPATH/$VMNAME"
Run Code Online (Sandbox Code Playgroud)

然后,使用以下命令修改HDD创建:

VBoxManage createhd --filename "$VMPATH/$VMNAME.vdi" --size 20480
VBoxManage storagectl "$VMNAME" --name "SATA Controller" \
    --add sata --controller IntelAHCI --hostiocache on --bootable on
VBoxManage storageattach "$VMNAME" --storagectl "SATA Controller" \
    --type hdd --port 0 --device 0 --medium "$VMPATH/$VMNAME.vdi"
Run Code Online (Sandbox Code Playgroud)