使用VirtualBox常见操作参考
2013-05-07 16:17:03 阿炯

本文主要记录了在命令行对虚拟机进行修改、配置等操作过程,主要是常见且不易操作的地方。

注意:对vm的修改,只能在其停机后进行,否则不会成功的。

-----------------
整机克隆来到
从4.2版开始,加入了虚拟机整机克隆,并解决因网卡、磁盘的uuid相同的问题(当然操作系统的'udev'设置管理也要支持)
VBoxManage clonevm <uuid>|<name>
  [--snapshot <uuid>|<name>]
 [--mode machine|machineandchildren|all]
 [--options link|keepallmacs|keepnatmacs|keepdisknames]
 [--name <name>]
 [--basefolder <basefolder>]
 [--uuid <uuid>]
[--register]

$ VBoxManage clonevm ocentos --mode all --name pcentos --basefolder /data/vmos/ --register
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

VBoxManage clonevm pde --mode all --name origde --basefolder /home/hto/data/vmos/ --register

解决了之前要克隆一台虚拟机要经过若干个步骤,有些麻烦,现在一条指令即可实现。

---------------
移除虚拟机
反注册:VBoxManage unregistervm router
现在列出时(VBoxManage list vms)可以看到'router'这台vm没有出现。

如果想把这台虚拟机再重新注册回来,可以使用(VBoxManage registervm /data/vmos/router/router.vbox)来将这台vm加入到可用虚拟机列表中,前提是没有删除与之相关的文件(包括从VBoxManage操作或直接文件删除)。

注意:虚拟机在删除时不能直接去相应目录从文件层面上进行删除,那样导致vbox报错。应在反注册时加上'--delete'参数从系统中彻底清除该虚拟机,如果再想要找回该虚拟机时就不可能了,所以在操作前一定要想好(在windows下并没有真正删除文件)。

---------------
创建host-only网络接口
VBoxManage hostonlyif create
会创建一个命为'vboxnet0'这样一个网口,前提为目前没有创建过,如果已经有一块这样的网口的话,将会以'vboxnet1'这样的方式来命名。它自动使用'192.168.56.1'这样的dhcp方式分配的ip地址,你可以为它更改。
VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.18.3 --netmask 255.255.255.224

注意:创建了这样一个网口,但在宿主机上通过'ifconfig'不能看到,因为虚拟机没有使用到它,只有当它被使用时,才会在宿主机上看到。

在4.1下发现这样一个问题:宿主机仅有一个网口(eth0),采用vyatta做虚拟机的路由,它的主机名为router,在router上虚拟两张网卡,eth0与eth1:前者接入局域网(bridged),后者(bridged)通过前者连网,且两者在不同网段。在vm1上的网卡(bridged)设置好与router的eth1相关的地址后,刚开始能通过router连接到互联网的主机,但过一会儿,网络开始不通,有时根本就不能通。而4.0没有此现象,后不得不将它们的连接方式改为'hostonlyif'这种。

VBoxManage modifyvm scentos --cpus 2 --memory 1024 --nic1 hostonly --hostonlyadapter1 vboxnet0

---------------
为虚拟机另加磁盘
首先需要将运行的机器关闭,运行'VBoxManage list -l vms'看下该虚拟机磁盘控制器使用的情况:
Storage Controller Name (0):            SATA Controller
Storage Controller Type (0):            IntelAhci
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  30
Storage Controller Port Count (0):      30
Storage Controller Bootable (0):        on
SATA Controller (0, 0): /data/vmos/srouter/srouter.vdi (UUID: 66a94588-4909-479f-abd2-1d266ed017c9)
SATA Controller (1, 0): /home/hto/sf/os/vyatta-livecd_6.2.i386.iso (UUID: 0938dde8-5aa3-4c2a-a473-115f91d0c061)

已经有两个端口被用了,这里再为它加一个。
VBoxManage storageattach pcentos --storagectl  "SATA Controller" --port 2 --device 0 --type hdd --medium /data/vmos/disk/pdisk0.vdi

---------------
将'.img'镜像文件转为VDI格式的固态虚拟文件

D:\data\vmos\bsdrouter>vboxmanage convertfromraw --format VDI --variant Fixed BSDRP-1.4-full-i386-vga.img bsdrp-full.vdi

Converting from raw image file="BSDRP-1.4-full-i386-vga.img" to file="bsdrp-full.vdi"...
Creating fixed image with size 256000000 bytes (245MB)...

---------------
克隆磁盘镜像(固定格式)

VBoxManage clonehd  src_vdi_img des_vdi_img --format VDI --variant Fixed

---------------
ssh远程管理虚拟机
在宿主操作系统没有gui时,需要通过vrde协议来连接宿主上的某一端口来安装,或者通过ssh 的'X'转发来实现。

-----------------------------
将虚拟机跨机器迁移
直接将'vdi'格式的镜像通过网络传到另外一台机器,vbox版本不要跨太多。下面是一个将windows平台的虚拟机磁盘文件移到高版本的linux虚拟机下。

VBoxManage storagectl "winxp" --name "IDE Controller" --add ide --controller PIIX4 --hostiocache on --bootable on
VBoxManage: error: Storage controller named 'IDE Controller' already exists
VBoxManage: error: Details: code VBOX_E_OBJECT_IN_USE (0x80bb000c), component SessionMachine, interface IMachine, callee nsISupports
Context: "AddStorageController(Bstr(pszCtl).raw(), StorageBus_IDE, ctl.asOutParam())" at line 879 of file VBoxManageStorageController.cpp

hto@debian:~$ VBoxManage storagectl "winxp" --name "IDE Controller" --remove
hto@debian:~$ VBoxManage storagectl "winxp" --name "IDE Controller" --add ide --controller PIIX4 --hostiocache on --bootable on
hto@debian:~$ VBoxManage storageattach "winxp" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /home/hto/data/vmos/winxp/winxp.vdi

-----------------------------
VirtualBox 4.3 启动虚拟机时显示不能加载 R3模块并退出故障


不能为虚拟电脑打开一个新任务

Unable to load R3 module D:\programfiles\oracle\vbox/VBoxDD.DLL (VBoxDD): GetLastError=1790 (VERR_UNRESOLVED_ERROR).

返回 代码:E_FAIL (0x80004005)
组件:Console
界面:IConsole {8ab7c520-2442-4b66-8d74-4ff1e195d2b6}

VirtualBox 升级到 4.3后一直问题不断。发现从最近的某个版本开始,为了安全,要校验进程完整性,那些在运行时要注入Virtualbox进程的模块都要进行校验。于是便出现了软件不兼容等等故障。查一下日志,发现一行:
supR3HardenedErrorV: supR3HardenedMonitor_LdrLoadDll: rejecting 'C:\Windows\system32\uxtheme.dll': rcNt=0xc0000190

这是因为破解了系统主题文件uxtheme.dll的原因,只能还原系统主题文件uxtheme.dll,再次启动虚拟机就可以了。

解决方法:恢复系统主题文件即可。

完全的参考地址:http://www.aixq.com/post-328.html

---------------------------------------
日常使用vboxmanage的总结


显示所有虚拟机:vboxmanage list vms

显示所有正在运行的虚拟机:vboxmanage list runningvms

显示虚拟机详细信息:vboxmanage showvminfo winxp

修改虚拟机名称:vboxmanage modifyvm winxp --name winxp_clone

修改虚拟机所占用的cpu内核数:vboxmanage modifyvm winxp --cpus 2

修改虚拟机所占用的内存数量(默认为MB):vboxmanage modifyvm winxp --memory 2048

启动虚拟机:vboxmanage startvm winxp --type gui|sdl|headless
在gui环境下默认为gui,也可以使用sdl视频驱动;在没有gui的情况下使用headless在后台启动,当然前提是该vm已经配置好远程连接方式(远程桌面或ssh)。

正常关闭机器:vboxmanage controlvm winxp acpipowerbutton

强行关闭虚拟机:vboxmanage controlvm winxp poweroff

克隆并注册虚拟机:vboxmanage clonevm winxp --name winxp2 --register

修改端口映射规则(将宿主机的本机端口对应到vm上某端口):vboxmanage modifyvm winxp --natpf1 rule_ssh, tcp, , 8888, 10.0.2.16, 8888

将网络连接修改成桥接:vboxmanage modifyvm winxp --nic1 bridged --bridgeadapter1 eth0
需要注意的是,接口的编号与新式的linux系统网口编号相似,从1而不是0开始。

磁盘控制器

IDE控制器
创建:
VBoxManage storagectl testvm --name "IDE Controller" --add ide

卸载
VBoxManage storagectl testvm --name "IDE Controller" --remove

SATA Controller

VBoxManage storagectl testvm --name "SATA Controller" --add sata

控制芯片:--controller,主流的选择:IntelAHCI,较低端的用:ICH6,非常早的主板用:PIIX3、4。--sataportcount,用于指定sata的端口号(1-30)。

--hostiocache,是否使用宿主机的I/O缓存。

--bootable,该盘是否可引导。

磁盘存储设备管理


删除存储设备
VBoxManage closemedium disk /home/freeoa/winxp.vdi --delete

重新设置存储设备在vbox中的uuid,其中my-uuid为指定的新uuid
VBoxManage storageattach "testvm" --storagectl "IDE Controller" --port 1 --device 0 --type hdd --medium /home/freeoa/winxp.vdi --setuuid my-uuid

显示磁盘信息
$ vbm showhdinfo ~/data/vm/xp/winxp.vdi
UUID:1595311c-3020-4c7a-a311-5c316ffbc7b7
Accessible:yes
Logical size:6144 MBytes
Current size on disk: 6144 MBytes
Type:normal (base)
Storage format:VDI
Format variant:fixed default
In use by VMs:xp (UUID: ba2f1edb-3d4a-4e74-8680-0623f94fefce)
Location:/home/hto/data/vm/xp/winxp.vdi

为虚拟硬盘重新分配UUID,即克隆指定的VDI虚拟硬盘
vbm clonehd <uuid>|<filename> <uuid>|<outputfile>
VBoxManage clonehd my-uuid /home/hto/data/vm//testvm/testvm2.vdi

修改
VBoxManage convertfromraw <filename> <outputfile>
 [--format VDI|VMDK|VHD]
 [--variant Standard,Fixed,Split2G,Stream,ESX]
 [--uuid <uuid>] 将raw硬盘转换成vdi虚拟硬盘

VBoxManage modifyhd <uuid>|<filename>
 [--type normal|writethrough|immutable|shareable|readonly|multiattach]
 [--autoreset on|off]
 [--compact] 压缩指定的虚拟硬盘
 [--resize <megabytes>|--resizebyte <bytes>] 调整其空间大小,对分配了固定大小的磁盘好像无效

挂载到磁盘控制器

VBoxManage storageattach testvm --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /home/hto/data/vm/testvm/testvm.vdi

卸载
VBoxManage storageattach testvm --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium none

空置占位
VBoxManage storageattach testvm --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium emptydrive

虚拟光盘

挂载虚拟光盘
VBoxManage storageattach testvm --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /usr/share/virtualbox/VBoxGuestAdditions.iso

卸载虚拟光盘
VBoxManage storageattach testvm --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium none

移|删除vbox中的存储设备(磁盘)


$ vbm showvminfo winxp
...
Storage Controller Name (0):            IDE Controller
Storage Controller Type (0):            PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  2
Storage Controller Port Count (0):      2
Storage Controller Bootable (0):        on
IDE Controller (0, 0): /home/freeoa/data/vmos/winxp/winxproxy.vdi (UUID: 54d85901-2cfd-426e-ae2d-20f5cd08fc7b)
IDE Controller (0, 1): /home/freeoa/swork/vmos/disk/winxp.dlext.vdi (UUID: a310850f-3ce1-4418-8d61-f960742dec96)

$ vbm storageattach winxp --storagectl "IDE Controller" --port 1 --device 0 --type hdd --medium none
VBoxManage: error: No storage device attached to device slot 0 on port 1 of controller 'IDE Controller'
VBoxManage: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component SessionMachine, interface IMachine, callee nsISupports
VBoxManage: error: Context: "DetachDevice(Bstr(pszCtl).raw(), port, device)" at line 381 of file VBoxManageStorageController.cpp

$ vbm storageattach winxp --storagectl "IDE Controller" --port 1 --device 0 --type hdd --medium emptydrive

IDE Controller (0, 0): /home/freeoa/data/vmos/winxp/winxproxy.vdi (UUID: 54d85901-2cfd-426e-ae2d-20f5cd08fc7b)
IDE Controller (0, 1): /home/freeoa/swork/vmos/disk/winxp.dlext.vdi (UUID: a310850f-3ce1-4418-8d61-f960742dec96)
IDE Controller (1, 0): Empty

成这样了,还来还是在port 0上,

$ vbm storageattach winxp --storagectl "IDE Controller" --port 0 --device 1 --type hdd --medium none
成功了。

Storage Controller Name (0):            IDE Controller
Storage Controller Type (0):            PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0):  2
Storage Controller Port Count (0):      2
Storage Controller Bootable (0):        on
IDE Controller (0, 0): /home/freeoa/data/vmos/winxp/winxproxy.vdi (UUID: 54d85901-2cfd-426e-ae2d-20f5cd08fc7b)

这里只是将这个虚拟磁盘从虚拟机中移除了,但磁盘文件依然存在的vbox中(其uuid在本机中是注册过了的),只是没有被用罢了;如果有连磁盘文件删除,可以这样操作:
$ vbm closemedium disk /home/freeoa/swork/vmos/disk/winxp.dlext.vdi --delete
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

对virtualbox中storagectl的 port 与 device 理解

其中的device是存储树的按添加存储器的顺序来标号的(与c语言中的标号一样,从0开始),像如下这个:
IDE (1, 0): Empty
SATA (0, 0): D:\data\vmos\clinx\clinx.vdi (UUID: b8d5efea-4edc-4daa-8a01-3606f9d7a804)
SATA (1, 0): E:\software\os\debian\debian-7.11-amd64-netinst.iso (UUID: 89fd152f-1127-4ae6-b493-61c308ed4537)

IDE在SATA设备之上,所以它先于被发现,为什么它俩设备编号是从0开始的呢?

因为它们不是同一设备(一个IDE一个SATA)。

port则是在该设备中的接入的磁盘顺序,同样也是从0开始计数。如上的结果,clinx.vdi就先于debian-7.11-amd64-netinst.iso被发现,因此编号在这个设备中是最小的。

存储设备的编写规则为:
Storage Controller(port,device)

port是跟着device走的。


---------------
VirtualBox压缩vdi文件


VBox guest os用久了vdi文件就会越来越大,就算在guest os中删除了一些文件,vdi也不会变小。如果guest os 是windows:
先在guest os上运行磁盘碎片管理器(sdelete),将各个磁盘的磁盘碎片减少:
运行sdelete -c -z d:
关闭guest os和VBox,在host os上运行:VBoxManage modifyhd --compact yourImage.vdi

如果guest os是Linux,用root用户登录
dd if=/dev/zero of=test.file
rm -fv test.file

关闭guest os和VBox,在host os上运行:VBoxManage modifyhd --compact yourImage.vdi

这样在guest上看到占用的空间就和host上看到的空间就一样了。
CMD下的命令行下执行:
VBoxManage.exe modifyhd --compact E:\vmos\freeoa\freeoa.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%


常用指令参考

#列出全部虚拟机
VBoxManage list vms
#列出全部运行中的虚拟机
VBoxManage list runningvms
#列出虚拟机信息
VBoxManage showvminfo uuid|vmname
#开启虚拟机
VBoxManage startvm uuid|vmname
#开启虚拟机,无GUI模式
VBoxManage startvm uuid|vmname --type headless
#暂停虚拟机
VBoxManage controlvm uuid|vmname pause
#继续运行虚拟机
VBoxManage controlvm uuid|vmname resume
#按下机箱重启按钮
VBoxManage controlvm uuid|vmname reset
#直接断电
VBoxManage controlvm uuid|vmname poweroff
#按下机箱电影按钮
VBoxManage controlvm uuid|vmname acpipowerbutton
#按下机箱睡眠按钮
VBoxManage controlvm uuid|vmname acpisleepbutton


VBoxManage [-v|-version] 显示virtualbox的版本号
VBoxManage -nologo 隐藏logo
VBoxManage -convertSettings 允许自动转换设置文件
VBoxManage -convertSettingsBackup 允许自动转换设置文件,并在转换前作备份
VBoxManage -convertSettingsIgnore 允许自动转换设置文件,但是不保存结果

VBoxManage list vms|runningvms 显示列表虚拟机|正在运行的虚拟机
|ostypes|hostdvds virtualbox支持的系统类型|宿主机的光盘驱动器
|hostfloppies 宿主机的软盘驱动器
|hostifs|hostinfo 宿主机的网络接口|宿主机的信息
|hdds|dvds 已注册的虚拟硬盘|已注册的虚拟光盘
|floppies|usbhost 已注册的虚拟软盘|宿主机的USB设备
|usbfilters USB筛选器
|systemproperties 虚拟机的基本信息

VBoxManage showvminfo <uuid>|<name> 显示指定虚拟机的信息
[--details] 显示详细信息
[--statistics] 显示统计信息
[--machinereadable] 以清晰的格式显示虚拟机信息

VBoxManage registervm <filename> 将指定文件所在的虚拟机添加到列表

VBoxManage unregistervm <uuid>|<name> 从虚拟机列表清除指定的虚拟机
[-delete] 从虚拟机列表删除指定的虚拟机

VBoxManage createvm -name <name> 创建指定名称的虚拟机
[-register] 将创建的虚拟机添加到列表
[-basefolder <path> 指定虚拟机的基础目录
[-settingsfile <path>] 指定虚拟机配置文件的基础目录
[-uuid <uuid>] 创建指定uuid的虚拟机

VBoxManage modifyvm <uuid|name> 编辑指定的虚拟机的配置
[-name <name>] 修改虚拟机的名称
[-ostype <ostype>]修改虚拟机的操作系统类型
[-memory <memorysize>] 修改虚拟机的内存大小
[-vram <vramsize>] 修改虚拟机的显存大小
[-acpi on|off] 启动或禁止acpi电源管理接口
[-ioapic on|off] 启动或禁止I/O APIC电源管理接口
[-pae on|off] 启动或禁止CPU的PAE支持,PAE是
Physical Address Extension : 物理地址扩展
[-hwvirtex on|off|default]启动或禁止CPU的硬件虚拟化支持
[-nestedpaging on|off] 开启或关闭CPU的嵌套页面列表支持
[-monitorcount <number>] 设置显示器数目,VRDP多用户模式时 [-bioslogofadein on|off] 开启或关闭bioslogo渐显效果
[-bioslogofadeout on|off] 开启或关闭bioslogo渐隐效果
[-bioslogodisplaytime <msec>]设置bioslogo显示时间(以毫秒为单位)
[-bioslogoimagepath <imagepath>]设置bioslogo图像路径,用于自定义bioslogo
[-biosbootmenu disabled| 设置是否显示bios启动菜单 关闭
menuonly| 只显示菜单
messageandmenu] 信息和菜单
[-biossystemtimeoffset <msec>] 设置bios系统时间补偿(以毫秒为单位)
[-biospxedebug on|off] 打开或关闭biospxe调试
[-boot<1-4> none|floppy|dvd|disk|net] 设置启动顺序


详细的常用指令参考

启动虚拟机
VBoxManage startvm 虚拟机名

无前端图形界面方式启动虚拟机
VBoxManage startvm 虚拟机名 --type headless

使用 VRDP 方式通过命令行启动虚拟机:(3389)
VBoxManage startvm 虚拟机名 --type vrdp

关闭虚拟机(强制)
VBoxManage controlvm 虚拟机名 poweroff

VBoxManage [-v|-version] 显示virtualbox的版本号
VBoxManage -nologo  隐藏logo
VBoxManage -convertSettings 允许自动转换设置文件
VBoxManage -convertSettingsBackup 允许自动转换设置文件,并在转换前作备份
VBoxManage -convertSettingsIgnore 允许自动转换设置文件,但是不保存结果

VBoxManage list vms|runningvms   显示列表虚拟机|正在运行的虚拟机
  |ostypes|hostdvds virtualbox支持的系统类型|宿主机的光盘驱动器
  |hostfloppies     宿主机的软盘驱动器
  |hostifs|hostinfo 宿主机的网络接口|宿主机的信息
  |hdds|dvds已注册的虚拟硬盘|已注册的虚拟光盘
  |floppies|usbhost 已注册的虚拟软盘|宿主机的USB设备
  |usbfilters       USB筛选器
  |systemproperties 虚拟机的基本信息

VBoxManage showvminfo <uuid>|<name> 显示指定虚拟机的信息
[-details] 显示详细信息
[-statistics]      显示统计信息
[-machinereadable] 以清晰的格式显示虚拟机信息

VBoxManage registervm <filename> 将指定文件所在的虚拟机添加到列表

VBoxManage unregistervm <uuid>|<name>   从虚拟机列表清除指定的虚拟机
   [-delete]       从虚拟机列表删除指定的虚拟机

VBoxManage createvm --name <name>    创建指定名称的虚拟机
   [--register]      将创建的虚拟机添加到列表
   [--basefolder <path> 指定虚拟机的基础目录
[--settingsfile <path>] 指定虚拟机配置文件的基础目录
   [--uuid <uuid>] 创建指定uuid的虚拟机

VBoxManage modifyvm <uuid|name> 编辑指定的虚拟机的配置
[-name <name>]    修改虚拟机的名称
[-ostype <ostype>]修改虚拟机的操作系统类型
[-memory <memorysize>]   修改虚拟机的内存大小
[-vram <vramsize>]       修改虚拟机的显存大小
[-acpi on|off]   启动或禁止acpi电源管理接口
[-ioapic on|off] 启动或禁止I/O APIC电源管理接口
[-pae on|off]    启动或禁止CPU的PAE支持,PAE是Physical Address Extension : 物理地址扩展
[-hwvirtex on|off|default]启动或禁止CPU的硬件虚拟化支持
[-nestedpaging on|off]    开启或关闭CPU的嵌套页面列表支持
[-monitorcount <number>] 设置显示器数目,VRDP多用户模式时   [-bioslogofadein on|off] 开启或关闭bioslogo渐显效果
[-bioslogofadeout on|off] 开启或关闭bioslogo渐隐效果
[-bioslogodisplaytime <msec>]设置bioslogo显示时间(以毫秒为单位)
[-bioslogoimagepath <imagepath>]设置bioslogo图像路径,用于自定义bioslogo
[-biosbootmenu disabled| 设置是否显示bios启动菜单 关闭
menuonly| 只菜单
messageandmenu] 信息和菜单
[-biossystemtimeoffset <msec>] 设置bios系统时间补偿(以毫秒为单位)
[-biospxedebug on|off] 打开或关闭biospxe调试
[-boot<1-4> none|floppy|dvd|disk|net&gt;] 设置启动顺序
[-hd<a|b|d> none|<uuid>|<filename>] 为虚拟机添加三个IDE设备之一(第2个主盘被vm保留作为光驱,不能占用)在三个IDE中,你可以指定(硬盘)的vdi文件名或者它的UUID
[-idecontroller PIIX3|PIIX4] 设置IDE控制器的类型
[-sata on|off] 开启或关闭SATA硬盘控制器
[-sataportcount <1-30>] 设置虚拟机最多支持的SATA控制器数目
[-sataport<1-30> none| 没有硬盘连接到SATA控制器
<uuid>| 指定uuid的硬盘连接到SATA控制器
<filename>] 指定文件名的硬盘连接到SATA控制器
[-sataideemulation<1-4> <1-30>] 指定一个SATA设备工作在IDE兼容模式,IDE设备编号是1-4,SATA设备编号是1-30
[-dvd none| 不连接DVD光驱
<uuid>| 指定UUID的DVD光驱连接
<filename>| 将指定的光盘映像文件挂接到DVD光驱
 host:<drive>] 将宿主机的DVD光驱挂接到虚拟机的DVD光驱
[-dvdpassthrough on|off]打开|关闭虚拟机里光盘的刻录功能
[-floppy disabled| 不连接软驱
empty| 连接软驱但不插入软盘
<uuid>| 指定UUID的软驱连接
<filename>| 将指定的软盘映像文件挂接到软驱驱
host:<drive>] 将宿主机的软驱驱挂接到虚拟机的软驱
[-nic<1-N> none| 虚拟机不添加网卡
null| 虚拟机有网卡但不连接
nat| 网络连接使用NAT模式
hostif| 网络连接使用桥接模式
intnet] 网络连接使用内部网络模式
[-nictype<1-N> Am79C970A| 虚拟机连接AMD PCNet PCI II网卡
Am79C973| 虚拟机连接AMD PCNet FAST III网卡(默认)
82540EM| 虚拟机连接Intel PRO/1000 MT Desktop网卡
82543GC] 虚拟机连接Intel PRO/1000 T Server网卡
[-cableconnected<1-N> on|off]插入或拔出网线
[-nictrace<1-N> on|off] 开启或关闭网络追踪
[-nictracefile<1-N> <filename>] 将网络流量追踪数据保存到文件
[-nicspeed<1-N> <kbps>] 设置网络连接的速度
[-hostifdev<1-N> none| 不连接到主机网络接口
<devicename>] 桥接模式下连接到指定的主机接口
[-intnet<1-N> <network name>] 内网模式下为虚拟机指定内部网络名称
[-natnet<1-N> <network>| 配置NAT网络接口的地址
 default] 默认NAT网络接口的地址是10.0.x.0/24
[-macaddress<1-N> auto| 自动生成虚拟网卡的MAC地址
<mac>] 指定虚拟网卡的MAC地址
[-uart<1-N> off| 不启用虚拟串口
<I/O base> <IRQ>]启用虚拟串口,并设置虚拟串口的I/O参数和IRQ参数
[-uartmode<1-N> disconnected| 启用虚拟串口,但不连接到宿主机的串口
server <pipe>| 在宿主机创建PIPE通道,并将虚拟机串口连接到这个通道
client <pipe>| 不创建PIPE通道,而是将虚拟机串口连接到已存在的通道
<devicename>] 将虚拟机串口连接到宿主机的串口
[-gueststatisticsinterval <seconds>] 配置虚拟机静态时间间隔
[-audio none| 虚拟机不连接声卡
    null| 将虚拟机的声卡连接到空的声音设备
    dsound] 将虚拟机的声卡连接到宿主机的声卡
[-audiocontroller ac97| 将虚拟机声卡虚拟为ICH AC97声卡
   sb16] 将虚拟机声卡虚拟为soundblaster 16声卡
[-clipboard disabled| 不共享剪贴板
    hosttoguest| 将宿主机的剪贴板共享给虚拟机
    guesttohost| 将虚拟机的剪贴板共享给宿主机
    bidirectional] 宿主机和虚拟机共使用一个剪贴板
[-vrdp on|off] 开启|关闭virtualbox内置的VRDP服务器
[-vrdpport default| 使用默认的vrdp端口3389
  <port>] 指定vrdp端口
[-vrdpaddress <host>] 指定VRDP主机地址
[-vrdpauthtype null| 不用授权,任何客户机都可以连接到VRDP服务器
 external| 只有宿主机的用户才可以连接到VRDP服务器
    guest] 只有虚拟机的用户才可以连接到VRDP服务器
[-vrdpmulticon on|off] 打开|关闭VRDP多用户连接模式
[-vrdpreusecon on|off] 打开|关闭VRDP断线重连
[-usb on|off] 打开|关闭虚拟USB控制器
[-usbehci on|off] 打开|关闭虚拟USB2.0控制器
[-snapshotfolder default| 将系统快照保存到默认文件夹
   <path>] 将系统快照保存到指定文件夹

VBoxManage startvm  <uuid>|<name> 开启指定UUID|名称的虚拟机
[-type gui|vrdp] 设置虚拟机标准显示设备GUI界面|VRDP

VBoxManage controlvm    <uuid>|<name> 改变正在运行的虚拟机的状态
pause| 暂停,这时虚拟机窗口显示灰色
resume| 恢复暂停的虚拟机
reset| 复位
poweroff| 强行关闭
acpipowerbutton| 关机
acpisleepbutton| 使虚拟机处于睡眠状态
savestate| 保存状态然后关闭,相当于休眠
keyboardputscancode <hex> [<hex> ...] 键盘扫描码设置
setlinkstate<1-4> on|off 连接|断开网络连接
usbattach <uuid>|<address> 连接到指定UUDI|地址的USB设备
usbdetach <uuid>|<address> 断开指定UUDI|地址的USB设备  
dvdattach none| 不连接虚拟DVD光驱
<uuid>| 连接到指定UUID的DVD光驱
<filename>| 连接到指定名称的DVD映像文件
host:<drive> 连接到宿主机的DVD光驱
floppyattach none| 不连接虚拟软驱
<uuid>| 连接到指定UUID的虚拟软驱
<filename>| 连接到指定名称的软盘映像文件
host:<drive> 连接到宿主机的软驱

setvideomodehint <xres> 设置虚拟机的屏幕分辨率 水平像素
    <yres> 垂直像素
    <bpp> 颜色深度
   [display] 刷新频率
setcredentials <username> 指定VRDP自动连接参数 用户名
    <password> 密码
    <domain> 域
[-allowlocallogon <yes|no>] 允许|禁止本地登陆

VBoxManage discardstate <uuid>|<name> 丢弃指定UUID|名称的虚拟机的保存状态

VBoxManage adoptstate <uuid>|<name> <state_file> 将虚拟机从指定的保存状态中恢复

VBoxManage snapshot <uuid>|<name> 为指定的虚拟机拍快照
take <name> 为快照取名
  [-desc <desc>]| 给快照添加描述
  discard <uuid>|<name> | 丢弃指定的快照
  discardcurrent -state| 恢复到最近的快照
 -all | 恢复到倒数第二个快照
  edit <uuid>|<name>| 编辑指定的快照
 -current 编辑当前快照
[-newname <name>] 修改快照名称
[-newdesc <desc>] 修改快照描述

VBoxManage showvminfo <uuid>|<name> 显示快照的虚拟机信息

VBoxManage registerimage    disk|dvd|floppy <filename> 注册硬盘、光盘、软盘映像文件
  [-type normal| 注册为普通类型(可创建快照,可读写)
    immutable| 注册为只读类型(相当于加了硬盘卡)
   writethrough] 注册为可写类型(这种类型不能创建快照)
   (disk only) (注册类型选项只适用于硬盘)

VBoxManage unregisterimage disk| 从虚拟介质管理器删除指定的硬盘
dvd| 从虚拟介质管理器删除指定的DVD光盘
floppy 从虚拟介质管理器删除指定的软盘
<uuid>| 删除时指定UUID
<filename> 删除时指定映像文件

VBoxManage showvdiinfo <uuid>|<filename> 显示指定UUID|名称虚拟硬盘的信息

VBoxManage createvdi-filename <filename> 创建指定名称的虚拟硬盘
-size <megabytes> 指定虚拟硬盘的大小(以兆为单位)
[-static] 创建固定大小的虚拟硬盘
[-comment <comment>] 添加一段解释性文字
[-register] 注册新创建的虚拟硬盘
[-type normal| 注册类型 普通(可以创建快照)
writethrough] 注册类型 可写(不能创建快照)
(default: normal) 默认是普通类型

VBoxManage modifyvdi<uuid>|<filename> compact 压缩指定的虚拟硬盘

VBoxManage clonevdi <uuid>|<filename> <outputfile> 克隆指定的VDI虚拟硬盘

VBoxManage convertdd[-static] <filename> <outputfile> 将raw硬盘转换成vdi虚拟硬盘

VBoxManage convertdd[-static] stdin <outputfile> <bytes> 将标准输入参数指定的设备转换成vdi虚拟硬盘,比如:dd if=/dev/sda1 | VBoxManage convertdd stdin /media/disk/c.vdi



VBoxManage addiscsidisk    -server <name>|<ip> 通过指定服务器名称|ip地址添加ISCSI硬盘
    -target <target> 指定对象名称字符串
    [-port <port>] 指定ISCSI对象的服务端口号
    [-lun <lun>] 指定对象资源的逻辑单元编号
    [-encodedlun <lun>] 指定另一种格式的对象资源的逻辑单元编号
    [-username <username>] 指定连接ISCSI对象的用户名
    [-password <password>] 指定连接ISCSI对象所需的密码
    [-comment <comment>] 为这个连接添加一段描述性文字
比如:VBoxManage addiscsidisk -server 10.200.2.30 -target iqn.2000-12.com.acme:storage.lun0 -lun 0
 
VBoxManage createhostif     <name> 在宿主机添加一个指定名称的虚拟网络接口
VBoxManage removehostif     <uuid>|<name> 从宿主机删除指定UUID|名称的虚拟网络接口
 
VBoxManage getextradata     global| 获取全局设置信息
    <uuid>| 获取指定UUID的虚拟机的信息
    <name>  获取指定名称的虚拟机的信息
    <key>|  获取与指定键值相关联的数据信息
    enumerate  列举信息
比如:VBoxManage getextradata xp installdate 用于获取虚拟机XP的安装时间
 
VBoxManage setextradata    global| 设置全局信息
    <uuid>| 设置指定UUID的虚拟机的信息
    <name> 设置指定名称的虚拟机的信息
    <key> 指定要添加信息的键
    [<value>] 给上面的键添加键值(必须指定键值)
比如:VBoxManage setextradata xp installdate 2017.01.01 设置虚拟机xp的安装时间为2017年1月1日
 
VBoxManage setproperty    vdifolder default| 在全局设定里设置vdi目录为默认
    <folder> | 在全局设定里设置指定vdi目录
    machinefolder default| 在全局设定里设置虚拟机目录为默认
    <folder> | 在全局设定里指定虚拟机目录
    vrdpauthlibrary default| 在全局设定里设置VRDP证书为默认的证书
    <library>| 在全局设定里指定其他的VRDP证书
    websrvauthlibrary default| 在全局设定里设置Web服务证书为默认的证书
    null| 在全局设定里设置web服务证书为空
    <library>| 在全局设定里指定其他的Web服务证书
    hwvirtexenabled yes|no 在全局设定里设置是|否支持硬件虚拟化
    loghistorycount <value> 在全局设定里设置日志数目,编号从0开始
 
VBoxManage usbfilter    add <index,0-N> 添加usb筛选器并设置它在筛选器列表中的位置
    -target <uuid>| 添加usb筛选器到指定UUID的虚拟机
    <name>| 添加usb筛选器到指定名称的虚拟机
    global 添加全局usb筛选器
    -name <string> 给usb筛选器指定名称
    -action ignore| 不允许虚拟机连接到筛选器
    hold  允许虚拟机连接到筛选器(全局筛选器时)
    [-active yes|no] 筛选器是|否生效(默认是生效)
    [-vendorid <XXXX>] 给usb筛选器指定vendorid(厂商标志)
    [-productid <XXXX>] 给usb筛选器指定productid(产品标志号)
    [-revision <IIFF>] 给usb筛选器指定revision(修订版本号)
    [-manufacturer <string>] 给usb筛选器指定manufacturer(制造商)
    [-product <string>] 给usb筛选器指定product(产品标志)
    [-remote yes|no] 指定usb筛选器是|否在远程登陆时有效
    [-serialnumber <string>] 给usb筛选器指定serialnumber(序列号)
    [-maskedinterfaces <XXXXXXXX>]

VBoxManage usbfilter    modify <index,0-N> 修改usb筛选器在列表中的顺序
    -target <uuid>| 修改指定UUID的虚拟机的usb筛选器
    <name>| 修改指定名称的虚拟机的usb筛选器
    global 修改全局设置的usb筛选器
    [-name <string>] 修改筛选器名称
    [-action ignore| 不允许虚拟机连接到筛选器
    hold] 允许虚拟机连接到筛选器(全局筛选器时)
    [-active yes|no] 筛选器是|否生效(默认是生效)
    [-vendorid <XXXX>|""] 给usb筛选器指定vendorid(厂商标志)
    [-productid <XXXX>|""] 给usb筛选器指定productid(产品标志号)
    [-revision <IIFF>|""] 给usb筛选器指定revision(修订版本号)
    [-manufacturer <string>|""] 给usb筛选器指定manufacturer(制造商)
    [-product <string>|""] 给usb筛选器指定product(产品标志)
    [-remote yes|no] 指定usb筛选器是|否在远程登陆时有效
    [-serialnumber <string>|""] 给usb筛选器指定serialnumber(序列号)
    [-maskedinterfaces <XXXXXXXX>|""]
 
VBoxManage usbfilter        remove <index,0-N> 删除指定序号的usb筛选器
    -target <uuid>| 删除指定UUID的虚拟机的usb筛选器
    <name>| 删除指定名称的虚拟机的usb筛选器
    global 删除全局usb筛选器
 
VBoxManage sharedfolder     add <vmname>| 添加共享文件夹到指定名称的虚拟机
    <uuid> 添加共享文件夹到指定uuid的虚拟机
    -name <name> 指定共享文件夹名称
    -hostpath <hostpath> 指定共享文件夹所在的主机路径
    [-transient] 设置临时共享
    [-readonly] 设置共享为只读
 
VBoxManage sharedfolder  remove <vmname>| 从指定名称的虚拟机删除共享文件夹
    <uuid> 从指定UUID的虚拟机删除共享文件夹
    -name <name> 删除指定名称的共享文件夹
    [-transient] 临时删除
 
VBoxManage vmstatistics    <vmname>| 统计指定名称的虚拟机的运行状态信息
    <uuid> 统计指定UUID的虚拟机的运行状态信息
    [-reset] 复位统计信息
    [-pattern <pattern>] 设置信息的显示格式
    [-descriptions] 在统计信息中显示描述信息
 
VBoxManage guestproperty    get <vmname>| 获取指定名称的虚拟机的预先设定的属性值
    <uuid> 获取指定UUID的虚拟机的预先设定的属性值
    <property> 获取指定属性的预先设定的值
    [-verbose] 以冗长的格式显示

VBoxManage guestproperty    set <vmname>| 给指定名称的虚拟机设置属性值
    <uuid> 给指定UUID的虚拟机设置属性值
    <property> 要设定值的属性
    [<value> 给属性设定的值
    [-flags <flags>]] 设置一个标志
 
VBoxManage guestproperty    enumerate <vmname>| 列举指定名称的虚拟机的属性值
    <uuid>  列举指定UUID的虚拟机的属性值
    [-patterns <patterns>]  列举属性值时采用的格式

VBoxManage metrics    list [*| 显示性能计数器
收集的所有系统资源的监测数据

host| 显示性能计数器
收集的宿主机的系统资源的监测数据

<vmname> 显示性能计数器
收集的虚拟机的系统资源的监测数据
[<metric_list>]] 要显示的性能计数器列表
 
VBoxManage metrics    setup 设置性能计数器
    [-period <seconds>]  设置性能计数器的显示周期
    [-samples <count>] 设置性能计数器抽样统计数
    [*| 对所有资源设置设置性能计数器
    host| 对宿主机资源设置设置性能计数器
    <vmname> 对虚拟机资源设置设置性能计数器
    [<metric_list>]] 性能计数器列表
例如:VBoxManage metrics setup -period 1 -samples 5 host CPU/Load,RAM/Usage
 
VBoxManage metrics  query [*| 查找并显示所有资源当前的性能计数器
    host| 查找并显示宿主机当前的资源的性能计数器
    <vmname> 查找并显示虚拟机当前的资源的性能计数器
    [<metric_list>]] 性能计数器列表
例如:VBoxManage query host CPU/Load/User,CPU/Load/Kernel
 
VBoxManage metrics    collect  收集性能计数器信息
    [-period <seconds>] 设置性能计数器信息显示的刷新周期
    [-samples <count>] 设置性能计数器抽样统计数
    [-list] 显示当前可以收集信息的性能计数器



该文章最后由 阿炯 于 2021-09-01 19:47:38 更新,目前是第 2 版。