Szopen Xiao

VirtualBox 的 VBoxManage 相关命令的使用方法

2016-06-15

VirtualBox 的VBoxManage guestcontrol能在主机上执行客户机中的命令。这个命令对于自动化管理虚拟机十分有用。

此命令要生效,需要在客户机中安装VirtualBox 增强功能,就是需要先安装VBoxGuestAdditions.iso这个包

下面以VirtualBox 5.0.16来举例说明使用方法,例如执行修改Linux Guest主机名命令方法的例子如下:

VBoxManage guestcontrol "$1" run --exe "/bin/hostname" --username root --password 123456 -- -l $1

上面命令说明如下:

  • VBoxManage guestcontrol 客户机管理控制子命令
  • "$1"是虚拟机名字,可以通过VBoxManage list vms,
  • run是执行客户机的子命令
  • --exerun子命令的选项,该选项跟随需要执行的客户机命令的绝对路径
  • "/bin/hostname" 客户机上命令或程序的绝对路径
  • --username root --password 123456 登录客户机的用户名和密码
  • -- -l 该选项后面跟随客户机命令参数,注意:官方文档中,传参数的选项只是--,然后跟上命令参数,但是这么做并不能正确执行命令。可是当加上-l这个参数后,命令将能正确执行 增加-l参数只是本人测试成功(注意:Linux hostname实际并没有-l参数),不保证任何时候都正确
  • 最后一个$1即为命令参数

以下命令是使用bash执行修改文件的操作:

VBoxManage guestcontrol "$1" run --exe "/bin/bash" --username root --password 123456  -- -l -c "echo $1 >/etc/hostname"

与上一个例子一样,$1是主机名,这里的命令是使用bash的echo命令重定向修改文件

VBoxManage其他常用命令使用

#完全克隆一个现有的名叫 CopyServer 虚拟机,该虚拟机当前没有运行,新虚拟机名叫 NewServer
VBoxManage clonevm "CopyServer" --mode all --name "NewServer" --register

#关闭一个名叫RunningServer正在运行的虚拟机,使用高级电源管理模式关闭,这种模式会向虚拟机系统发送电源关闭信号
VBoxManage controlvm "RunningServer" acpipowerbutton

#直接断电关闭一个名为 RunningServer 的虚拟机
VBoxManage controlvm "RunningServer" poweroff

#无界面启动一个名为 OneServer 虚拟机
VBoxManage startvm "OneServer" --type headless

#彻底删除一个名为 OneServer 的虚拟机
VBoxManage unregistervm 'OneServer' --delete

#显示虚拟 OneVM 的硬件信息
 VBoxManage showvminfo OneVM
 
#挂在镜像文件到虚拟机 OneServer 的光驱上,当前控制器信息可用上一个命令获取
VBoxManage storageattach OneServer --storagectl storage_controller_1 --type dvddrive --port 1 --device 0 --medium /yourpath/VBoxGuestAdditions.iso

如何减小VirtualBox虚拟硬盘文件的大小

  1. 碎片整理

第一步要做的是碎片整理,打开虚拟机,执行下面的命令:

Linux系统:

sudo dd if=/dev/zero of=/EMPTY bs=1M

sudo rm -f /EMPTY

Windows系统: 需要下载Sysinternals Suite,也可以单独下载SDelete v1.61,下载完成后,将Sysinternals Suite放在虚拟机内

sdelete –z (可将Sysinternals Suite里面的sdelete.exe放在虚拟机的C盘,然后CMD运行 “c:\ sdelete –z”)

最后执行下面的命令压缩虚拟机磁盘文件:

VBoxManage modifyhd mydisk.vdi --compact 

一个Virtualbox常用功能管理集合脚本

comments powered by Disqus