第 8 章. VBoxManage

目录

8.1. 简介
8.2. 命令概览
8.3. 常规选项
8.4. VBoxManage
8.5. VBoxManage list
8.6. VBoxManage showvminfo
8.7. VBoxManage registervm
8.8. VBoxManage unregistervm
8.9. VBoxManage createvm
8.10. VBoxManage modifyvm
8.11. VBoxManage clonevm
8.12. VBoxManage movevm
8.13. VBoxManage encryptvm
8.14. VBoxManage cloud
8.15. VBoxManage cloudprofile
8.16. VBoxManage import
8.17. VBoxManage export
8.18. VBoxManage signova
8.19. VBoxManage startvm
8.20. VBoxManage controlvm
8.21. VBoxManage unattended
8.22. VBoxManage discardstate
8.23. VBoxManage adoptstate
8.24. VBoxManage snapshot
8.25. VBoxManage closemedium
8.26. VBoxManage storageattach
8.27. VBoxManage storagectl
8.28. VBoxManage bandwidthctl
8.29. VBoxManage showmediuminfo
8.30. VBoxManage createmedium
8.31. VBoxManage modifymedium
8.32. VBoxManage clonemedium
8.33. VBoxManage mediumproperty
8.34. VBoxManage encryptmedium
8.35. VBoxManage checkmediumpwd
8.36. VBoxManage convertfromraw
8.37. VBoxManage mediumio
8.38. VBoxManage setextradata
8.39. VBoxManage getextradata
8.40. VBoxManage setproperty
8.41. VBoxManage usbfilter
8.42. VBoxManage sharedfolder
8.43. VBoxManage guestproperty
8.44. VBoxManage guestcontrol
8.45. VBoxManage debugvm
8.46. VBoxManage metrics
8.47. VBoxManage natnetwork
8.48. VBoxManage hostonlyif
8.49. VBoxManage hostonlynet
8.50. VBoxManage dhcpserver
8.51. VBoxManage usbdevsource
8.52. VBoxManage extpack
8.53. VBoxManage updatecheck
8.54. VBoxManage modifynvram
8.55. vboximg-mount

8.1. 简介

如在第 1.18 节,“备选前端”中简要提及,VBoxManage 是 Oracle VM VirtualBox 的命令行界面。通过它,您可以从主机操作系统的命令行完全控制 Oracle VM VirtualBox。VBoxManage 支持图形用户界面所能提供的所有功能,但它支持的功能远不止于此。它公开了虚拟化引擎的所有功能,甚至包括那些无法从 GUI 访问的功能。

如果您想执行以下操作,将需要使用命令行:

  • 使用不同于主GUI的用户界面,例如VBoxHeadless服务器。

  • 控制 VM 的一些更高级和实验性的配置设置。

使用 VBoxManage 时,请记住两件主要事情。首先,VBoxManage 必须始终与特定的子命令一起使用,例如 listcreatevmstartvmVBoxManage 支持的所有子命令在第 8 章,VBoxManage中详细描述。

其次,这些子命令中的大多数都要求您在子命令后指定一个特定的虚拟机。

  • 您可以通过两种方式执行此操作:您可以指定虚拟机名称,如其在 Oracle VM VirtualBox GUI 中所示。请注意,如果名称包含空格,则必须将整个名称用双引号括起来。对于包含空格的命令行参数,始终需要这样做。例如:

    VBoxManage startvm "Windows XP"
  • 您可以指定 UUID,它是 Oracle VM VirtualBox 用来引用虚拟机的内部唯一标识符。假设名为“Windows XP”的虚拟机具有如下所示的 UUID,则以下命令与上一个示例具有相同的效果:

    VBoxManage startvm 670e746d-abea-4ba6-ad02-2a3b043810a5

您可以输入 VBoxManage list vms 来列出所有当前注册的虚拟机及其所有设置,包括它们的名称和 UUID。

以下列出了一些如何从命令行控制 Oracle VM VirtualBox 的典型示例:

  • 要从命令行创建新虚拟机并立即将其注册到 Oracle VM VirtualBox,请使用带有 --register 选项的 VBoxManage createvm,如下所示:

    $ VBoxManage createvm --name "SUSE 10.2" --register
    VirtualBox Command Line Management Interface Version version-number
    Copyright (C) 2005-2023 Oracle and/or its affiliates
    
    Virtual machine 'SUSE 10.2' is created.
    UUID: c89fc351-8ec6-4f02-a048-57f4d25288e5
    Settings file: '/home/username/.config/VirtualBox/Machines/SUSE 10.2/SUSE 10.2.xml'

    从以上输出可以看出,已经创建了一个带有新 UUID 和新 XML 设置文件的新虚拟机。

    有关更多详细信息,请参阅第 8.9 节,“VBoxManage createvm”

  • 要显示特定虚拟机的配置,请使用 VBoxManage showvminfo。有关详细信息和示例,请参阅第 8.6 节,“VBoxManage showvminfo”

  • 要在虚拟机关闭时更改设置,请使用 VBoxManage modifyvm。例如:

    VBoxManage modifyvm "Windows XP" --memory 512

    另请参阅第 8.10 节,“VBoxManage modifyvm”

  • 要更改存储配置,例如添加存储控制器和虚拟磁盘,请使用 VBoxManage storagectlVBoxManage storageattach。请参阅第 8.27 节,“VBoxManage storagectl”第 8.26 节,“VBoxManage storageattach”

  • 要控制虚拟机操作,请使用以下方法之一:

8.2. 命令概览

当不带参数运行 VBoxManage 或提供无效命令行时,将显示以下命令语法列表。请注意,输出将因主机平台而略有不同。如有疑问,请检查 VBoxManage 的输出,以了解特定主机上可用的命令。

VBoxManage [ -V | --version ] [--dump-build-type] [ -q | --nologo ] [--settingspw=password] [--settingspwfile=pw-file] [@response-file] [[help]subcommand]

VBoxManage list [--long] [--sorted] [ bridgedifs | cloudnets | cloudprofiles | cloudproviders | cpu-profiles | dhcpservers | dvds | extpacks | floppies | groups | hddbackends | hdds | hostcpuids | hostdrives | hostdvds | hostfloppies | hostinfo | hostonlyifs | hostonlynets | intnets | natnets | ostypes | runningvms | screenshotformats | systemproperties | usbfilters | usbhost | vms | webcams ]

VBoxManage showvminfo < uuid | vmname > [--details] [--machinereadable] [--password-id] [--password]

VBoxManage showvminfo < uuid | vmname > <--log=index> [--password-id id] [--password file|-]

VBoxManage registervm <filename> --password file

VBoxManage unregistervm < uuid | vmname > [--delete] [--delete-all]

VBoxManage createvm <--name=name> [--basefolder=basefolder] [--default] [--groups=group-ID,...] [--ostype=ostype] [--register] [--uuid=uuid] [--cipher cipher] [--password-id password-id] [--password file]

VBoxManage modifyvm < uuid | vmname > [--name=name] [--groups= group [,group...] ] [--description=description] [--os-type=OS-type] [--icon-file=filename] [--memory=size-in-MB] [--page-fusion= on | off ] [--vram=size-in-MB] [--acpi= on | off ] [--ioapic= on | off ] [--hardware-uuid=UUID] [--cpus=CPU-count] [--cpu-hotplug= on | off ] [--plug-cpu=CPU-ID] [--unplug-cpu=CPU-ID] [--cpu-execution-cap=number] [--pae= on | off ] [--long-mode= on | off ] [--ibpb-on-vm-exit= on | off ] [--ibpb-on-vm-entry= on | off ] [--spec-ctrl= on | off ] [--l1d-flush-on-sched= on | off ] [--l1d-flush-on-vm-entry= on | off ] [--mds-clear-on-sched= on | off ] [--mds-clear-on-vm-entry= on | off ] [--cpu-profile= host | Intel 8086 | Intel 80286 | Intel 80386 ] [--hpet= on | off ] [--hwvirtex= on | off ] [--triple-fault-reset= on | off ] [--apic= on | off ] [--x2apic= on | off ] [--paravirt-provider= none | default | legacy | minimal | hyperv | kvm ] [--paravirt-debug= key=value [,key=value...] ] [--nested-paging= on | off ] [--large-pages= on | off ] [--vtx-vpid= on | off ] [--vtx-ux= on | off ] [--nested-hw-virt= on | off ] [--virt-vmsave-vmload= on | off ] [--accelerate-3d= on | off ] [--accelerate-2d-video= on | off ] [--chipset= ich9 | piix3 ] [--iommu= none | automatic | amd | intel ] [--tpm-type= none | 1.2 | 2.0 | host | swtpm ] [--tpm-location= location ] [--bios-logo-fade-in= on | off ] [--bios-logo-fade-out= on | off ] [--bios-logo-display-time=msec] [--bios-logo-image-path=pathname] [--bios-boot-menu= disabled | menuonly | messageandmenu ] [--bios-apic= disabled | apic | x2apic ] [--bios-system-time-offset=msec] [--bios-pxe-debug= on | off ] [--system-uuid-le= on | off ] [--bootX= none | floppy | dvd | disk | net ] [--rtc-use-utc= on | off ] [--graphicscontroller= none | vboxvga | vmsvga | vboxsvga ] [--snapshot-folder= default | pathname ] [--firmware= bios | efi | efi32 | efi64 ] [--guest-memory-balloon=size-in-MB] [--default-frontend= default | name ] [--vm-process-priority= default | flat | low | normal | high ]

VBoxManage modifyvm < uuid | vmname > [--nicN= none | null | nat | bridged | intnet | hostonly | hostonlynet | generic | natnetwork | cloud ] [--nic-typeN= Am79C970A | Am79C973 | 82540EM | 82543GC | 82545EM | virtio ] [--cable-connectedN= on | off ] [--nic-traceN= on | off ] [--nic-trace-fileN=filename] [--nic-propertyN=name= [value]] [--nic-speedN=kbps] [--nic-boot-prioN=priority] [--nic-promiscN= deny | allow-vms | allow-all ] [--nic-bandwidth-groupN= none | name ] [--bridge-adapterN= none | device-name ] [--cloud-networkN=network-name] [--host-only-adapterN= none | device-name ] [--host-only-netN=network-name] [--intnetN=network-name] [--nat-networkN=network-name] [--nic-generic-drvN=driver-name] [--mac-addressN= auto | MAC-address ]

VBoxManage modifyvm < uuid | vmname > [--nat-netN= network | default ] [--nat-pfN= [rule-name],tcp | udp,[host-IP],hostport,[guest-IP],guestport ] [--nat-pfN=delete=rule-name] [--nat-tftp-prefixN=prefix] [--nat-tftp-fileN=filename] [--nat-tftp-serverN=IP-address] [--nat-bind-ipN=IP-address] [--nat-dns-pass-domainN= on | off ] [--nat-dns-proxyN= on | off ] [--nat-dns-host-resolverN= on | off ] [--nat-localhostreachableN= on | off ] [--nat-settingsN=[mtu],[socksnd],[sockrcv],[tcpsnd],[tcprcv]] [--nat-alias-modeN= default | [log],[proxyonly],[sameports] ]

VBoxManage modifyvm < uuid | vmname > [--mouse= ps2 | usb | usbtablet | usbmultitouch | usbmtscreenpluspad ] [--keyboard= ps2 | usb ] [--uartN= off | IO-baseIRQ ] [--uart-modeN= disconnected | server pipe | client pipe | tcpserver port | tcpclient hostname:port | file filename | device-name ] [--uart-typeN= 16450 | 16550A | 16750 ] [--lpt-modeN=device-name] [--lptN= off | IO-baseIRQ ] [--audio-controller= ac97 | hda | sb16 ] [--audio-codec= stac9700 | ad1980 | stac9221 | sb16 ] [--audio-driver= none | default | null | dsound | was | oss | alsa | pulse | coreaudio ] [--audio-enabled= on | off ] [--audio-in= on | off ] [--audio-out= on | off ] [--clipboard-mode= disabled | hosttoguest | guesttohost | bidirectional ] [--drag-and-drop= disabled | hosttoguest | guesttohost | bidirectional ] [--monitor-count=number] [--usb-ehci= on | off ] [--usb-ohci= on | off ] [--usb-xhci= on | off ] [--usb-rename=old-namenew-name]

VBoxManage modifyvm < uuid | vmname > [--recording= on | off ] [--recording-screens= all | none | screen-ID[,screen-ID...] ] [--recording-file=filename] [--recording-max-size=MB] [--recording-max-time=msec] [--recording-opts= key=value[,key=value...] ] [--recording-video-fps=fps] [--recording-video-rate=rate] [--recording-video-res=widthheight]

VBoxManage modifyvm < uuid | vmname > [--vrde= on | off ] [--vrde-property=property-name= [property-value]] [--vrde-extpack= default | name ] [--vrde-port=port] [--vrde-address=hostip] [--vrde-auth-type= null | external | guest ] [--vrde-auth-library= default | name ] [--vrde-multi-con= on | off ] [--vrde-reuse-con= on | off ] [--vrde-video-channel= on | off ] [--vrde-video-channel-quality=percent]

VBoxManage modifyvm < uuid | vmname > [--teleporter= on | off ] [--teleporter-port=port] [--teleporter-address= address | empty ] [--teleporter-password=password] [--teleporter-password-file= filename | stdin ] [--cpuid-portability-level=level] [--cpuid-set=leaf [:subleaf]eaxebxecxedx] [--cpuid-remove=leaf [:subleaf]] [--cpuid-remove-all]

VBoxManage modifyvm < uuid | vmname > [--tracing-enabled= on | off ] [--tracing-config=string] [--tracing-allow-vm-access= on | off ]

VBoxManage modifyvm < uuid | vmname > [--usb-card-reader= on | off ]

VBoxManage modifyvm < uuid | vmname > [--autostart-enabled= on | off ] [--autostart-delay=seconds]

VBoxManage modifyvm < uuid | vmname > [--guest-debug-provider= none | native | gdb | kd ] [--guest-debug-io-provider= none | tcp | udp | ipc ] [--guest-debug-address= IP-Address | path ] [--guest-debug-port=port]

VBoxManage modifyvm < uuid | vmname > [--pci-attach=host-PCI-address [@guest-PCI-bus-address]] [--pci-detach=host-PCI-address]

VBoxManage modifyvm < uuid | vmname > [--testing-enabled= on | off ] [--testing-mmio= on | off ] [--testing-cfg-dwordidx=value]

VBoxManage clonevm <vmname|uuid> [--basefolder=basefolder] [--groups=group,...] [ --mode=machine | --mode=machinechildren | --mode=all ] [--name=name] [--options=option,...] [--register] [--snapshot=snapshot-name] [--uuid=uuid]

VBoxManage movevm < uuid | vmname > [--type=basic] [--folder=folder-name]

VBoxManage encryptvm < uuid | vmname > setencryption --old-password file --cipher cipher-identifier --new-password file --new-password-id password-identifier --force

VBoxManage encryptvm < uuid | vmname > checkpassword <file>

VBoxManage encryptvm < uuid | vmname > addpassword --password file --password-id password-identifier

VBoxManage encryptvm < uuid | vmname > removepassword <password-identifier>

VBoxManage cloud <--provider=name> <--profile=name>
list instances [--state=string] [--compartment-id=string]

VBoxManage cloud <--provider=name> <--profile=name>
list images <--compartment-id=string> [--state=string]

VBoxManage cloud <--provider=name> <--profile=name>
list vnicattachments <--compartment-id=string> [--filter=string]

VBoxManage cloud <--provider=name> <--profile=name>
instance create <--domain-name=name> <<--image-id=id> | <--boot-volume-id=id>> <--display-name=name> <--shape=type> <--subnet=id> [--boot-disk-size=size in GB] [--publicip=true/false] [--privateip=IP address] [--public-ssh-key=key string...] [--launch-mode=NATIVE/EMULATED/PARAVIRTUALIZED] [--cloud-init-script-path=path to a script]

VBoxManage cloud <--provider=name> <--profile=name>
instance info <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
instance terminate <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
instance start <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
instance pause <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
instance reset <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
image create <--display-name=name> [--bucket-name=name] [--object-name=name] [--instance-id=unique id]

VBoxManage cloud <--provider=name> <--profile=name>
image info <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
image delete <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
image import <--id=unique id> [--bucket-name=name] [--object-name=name]

VBoxManage cloud <--provider=name> <--profile=name>
image export <--id=unique id> <--display-name=name> [--bucket-name=name] [--object-name=name]

VBoxManage cloud <--provider=name> <--profile=name>
network setup [--gateway-os-name=string] [--gateway-os-version=string] [--gateway-shape=string] [--tunnel-network-name=string] [--tunnel-network-range=string] [--proxy=string] [--compartment-id=string]

VBoxManage cloud <--provider=name> <--profile=name>
network create <--name=string> <--network-id=string> [ --enable | --disable ]

VBoxManage cloud network update <--name=string> [--network-id=string] [ --enable | --disable ]

VBoxManage cloud network delete <--name=string>

VBoxManage cloud network info <--name=string>

VBoxManage cloudprofile <--provider=name> <--profile=name> add [--clouduser=unique id] [--fingerprint=MD5 string] [--keyfile=path] [--passphrase=string] [--tenancy=unique id] [--compartment=unique id] [--region=string]

VBoxManage cloudprofile <--provider=name> <--profile=name> update [--clouduser=unique id] [--fingerprint=MD5 string] [--keyfile=path] [--passphrase=string] [--tenancy=unique id] [--compartment=unique id] [--region=string]

VBoxManage cloudprofile <--provider=name> <--profile=name> delete

VBoxManage cloudprofile <--provider=name> <--profile=name> show

VBoxManage import < ovfname | ovaname > [--dry-run] [--options= keepallmacs | keepnatmacs | importtovdi ] [--vsys=n] [--ostype=ostype] [--vmname=name] [--settingsfile=file] [--basefolder=folder] [--group=group] [--memory=MB] [--cpus=n] [--description=text] [--eula= show | accept ] [--unit=n] [--ignore] [--scsitype= BusLogic | LsiLogic ] [--disk=path] [--controller=index] [--port=n]

VBoxManage import OCI:// --cloud [--ostype=ostype] [--vmname=name] [--basefolder=folder] [--memory=MB] [--cpus=n] [--description=text] <--cloudprofile=profile> <--cloudinstanceid=id> [--cloudbucket=bucket]

VBoxManage export <machines> <--output=name> [ --legacy09 | --ovf09 | --ovf10 | --ovf20 ] [--manifest] [--options= manifest | iso | nomacs | nomacsbutnat ... ] [--vsys=virtual-system-number] [--description=description-info] [--eula=license-text] [--eulafile=filename] [--product=product-name] [--producturl=product-URL] [--vendor=vendor-name] [--vendorurl=vendor-URL] [--version=version-info] [--vmname=vmname]

VBoxManage export <machine> <--output=cloud-service-provider> [--opc10] [--vmname=vmname] [--cloud=virtual-system-number] [--cloudprofile=cloud-profile-name] [--cloudshape=cloud-shape-name] [--clouddomain=cloud-domain] [--clouddisksize=disk-size-in-GB] [--cloudbucket=bucket-name] [--cloudocivcn=OCI-VCN-ID] [--cloudocisubnet=OCI-subnet-ID] [--cloudkeepobject= true | false ] [--cloudlaunchinstance= true | false ] [--cloudlaunchmode= EMULATED | PARAVIRTUALIZED ] [--cloudpublicip= true | false ]

VBoxManage signova <ova> <--certificate=file> <--private-key=file> [ --private-key-password-file=password-file | --private-key-password=password ] [--digest-type=type] [ --pkcs7 | --no-pkcs7 ] [--intermediate-cert=file] [--force] [--verbose] [--quiet] [--dry-run]

VBoxManage startvm < uuid | vmname ...> [--putenv=name[=value]] [--type= [ gui | headless | sdl | separate ]] --password file --password-id password identifier

VBoxManage controlvm < uuid | vmname > pause

VBoxManage controlvm < uuid | vmname > resume

VBoxManage controlvm < uuid | vmname > reset

VBoxManage controlvm < uuid | vmname > poweroff

VBoxManage controlvm < uuid | vmname > savestate

VBoxManage controlvm < uuid | vmname > acpipowerbutton

VBoxManage controlvm < uuid | vmname > acpisleepbutton

VBoxManage controlvm < uuid | vmname > reboot

VBoxManage controlvm < uuid | vmname > shutdown [--force]

VBoxManage controlvm < uuid | vmname > keyboardputscancode <hex> [hex...]

VBoxManage controlvm < uuid | vmname > keyboardputstring <string> [string...]

VBoxManage controlvm < uuid | vmname > keyboardputfile <filename>

VBoxManage controlvm < uuid | vmname > setlinkstateN < on | off >

VBoxManage controlvm < uuid | vmname > nicN < null | nat | bridged | intnet | hostonly | generic | natnetwork > [device-name]

VBoxManage controlvm < uuid | vmname > nictraceN < on | off >

VBoxManage controlvm < uuid | vmname > nictracefileN <filename>

VBoxManage controlvm < uuid | vmname > nicpropertyN <prop-name=prop-value>

VBoxManage controlvm < uuid | vmname > nicpromiscN < deny | allow-vms | allow-all >

VBoxManage controlvm < uuid | vmname > natpfN < [rulename] ,tcp | udp, [host-IP], hostport, [guest-IP], guestport >

VBoxManage controlvm < uuid | vmname > natpfN delete <rulename>

VBoxManage controlvm < uuid | vmname > guestmemoryballoon <balloon-size>

VBoxManage controlvm < uuid | vmname > usbattach < uuid | address > [--capturefile=filename]

VBoxManage controlvm < uuid | vmname > usbdetach < uuid | address >

VBoxManage controlvm < uuid | vmname > audioin < on | off >

VBoxManage controlvm < uuid | vmname > audioout < on | off >

VBoxManage controlvm < uuid | vmname > clipboard mode < disabled | hosttoguest | guesttohost | bidirectional >

VBoxManage controlvm < uuid | vmname > clipboard filetransfers < on | off >

VBoxManage controlvm < uuid | vmname > draganddrop < disabled | hosttoguest | guesttohost | bidirectional >

VBoxManage controlvm < uuid | vmname > vrde < on | off >

VBoxManage controlvm < uuid | vmname > vrdeport <port>

VBoxManage controlvm < uuid | vmname > vrdeproperty <prop-name=prop-value>

VBoxManage controlvm < uuid | vmname > vrdevideochannelquality <percentage>

VBoxManage controlvm < uuid | vmname > setvideomodehint <xres> <yres> <bpp> [[display] [ enabled:yes | no | [x-origin y-origin]]]

VBoxManage controlvm < uuid | vmname > setscreenlayout <display> < on | primary x-origin y-origin x-resolution y-resolution bpp | off >

VBoxManage controlvm < UUID | 虚拟机名称 > screenshotpng <文件名> [显示器]

VBoxManage controlvm < UUID | 虚拟机名称 > recording < on | off >

VBoxManage controlvm < UUID | 虚拟机名称 > recording screens < all | none | 屏幕ID[,屏幕ID...] >

VBoxManage controlvm < UUID | 虚拟机名称 > recording filename <文件名>

VBoxManage controlvm < UUID | 虚拟机名称 > recording videores <宽度x高度>

VBoxManage controlvm < UUID | 虚拟机名称 > recording videorate <速率>

VBoxManage controlvm < UUID | 虚拟机名称 > recording videofps <帧率>

VBoxManage controlvm < UUID | 虚拟机名称 > recording maxtime <>

VBoxManage controlvm < UUID | 虚拟机名称 > recording maxfilesize <兆字节>

VBoxManage controlvm < UUID | 虚拟机名称 > setcredentials <用户名> --passwordfile= < 文件名 | 密码 > <域名> --allowlocallogon= < yes | no >

VBoxManage controlvm < UUID | 虚拟机名称 > teleport <--host=主机名> <--port=端口名> [--maxdowntime=毫秒] [ --passwordfile=文件名 | --password=密码 ]

VBoxManage controlvm < UUID | 虚拟机名称 > plugcpu <ID>

VBoxManage controlvm < UUID | 虚拟机名称 > unplugcpu <ID>

VBoxManage controlvm < UUID | 虚拟机名称 > cpuexecutioncap <数量>

VBoxManage controlvm < UUID | 虚拟机名称 > vm-process-priority < default | flat | low | normal | high >

VBoxManage controlvm < UUID | 虚拟机名称 > webcam attach [路径名 [设置]]

VBoxManage controlvm < UUID | 虚拟机名称 > webcam detach [路径名]

VBoxManage controlvm < UUID | 虚拟机名称 > webcam list

VBoxManage controlvm < UUID | 虚拟机名称 > addencpassword <ID> < 密码文件 | - > [--removeonsuspend= yes | no ]

VBoxManage controlvm < UUID | 虚拟机名称 > removeencpassword <ID>

VBoxManage controlvm < UUID | 虚拟机名称 > removeallencpasswords

VBoxManage controlvm < UUID | 虚拟机名称 > changeuartmodeN disconnected | server 管道名 | client 管道名 | tcpserver 端口 | tcpclient 主机名:端口 | file 文件名 | 设备名

VBoxManage controlvm < UUID | 虚拟机名称 > autostart-enabledN on | off

VBoxManage controlvm < UUID | 虚拟机名称 > autostart-delay

VBoxManage unattended detect <--iso=安装ISO> [--machine-readable]

VBoxManage unattended install <UUID|虚拟机名称> <--iso=安装ISO> [--user=登录名] [--password=密码] [--password-file=文件] [--full-user-name=全名] [--key=产品密钥] [--install-additions] [--no-install-additions] [--additions-iso=增强功能ISO] [--install-txs] [--no-install-txs] [--validation-kit-iso=测试ISO] [--locale=ll_CC] [--country=CC] [--time-zone=时区] [--hostname=完全限定域名] [--package-selection-adjustment=关键词] [--dry-run] [--auxiliary-base-path=路径] [--image-index=编号] [--script-template=文件] [--post-install-template=文件] [--post-install-command=命令] [--extra-install-kernel-parameters=参数] [--language=语言] [--start-vm=会话类型]

VBoxManage discardstate < UUID | 虚拟机名称 >

VBoxManage adoptstate < UUID | 虚拟机名称 > <状态文件名>

VBoxManage snapshot <UUID|虚拟机名称>

VBoxManage snapshot <UUID|虚拟机名称> take <快照名称> [--description=描述] [--live] [--uniquename Number,Timestamp,Space,Force]

VBoxManage snapshot <UUID|虚拟机名称> delete <快照名称>

VBoxManage snapshot <UUID|虚拟机名称> restore <快照名称>

VBoxManage snapshot <UUID|虚拟机名称> restorecurrent

VBoxManage snapshot <UUID|虚拟机名称> edit < 快照名称 | --current > [--description=描述] [--name=新名称]

VBoxManage snapshot <UUID|虚拟机名称> list [[--details] | [--machinereadable]]

VBoxManage snapshot <UUID|虚拟机名称> showvminfo <快照名称>

VBoxManage closemedium [ disk | dvd | floppy ] < UUID | 文件名 > [--delete]

VBoxManage storageattach < UUID | 虚拟机名称 > <--storagectl=名称> [--bandwidthgroup= name | none ] [--comment=文本] [--device=编号] [--discard= on | off ] [--encodedlun=LUN] [--forceunmount] [--hotpluggable= on | off ] [--initiator=启动器] [--intnet] [--lun=LUN] [--medium= none | emptydrive | additions | UUID | 文件名 | host:驱动器 | iscsi ] [--mtype= normal | writethrough | immutable | shareable | readonly | multiattach ] [--nonrotational= on | off ] [--passthrough= on | off ] [--passwordfile=文件] [--password=密码] [--port=端口号] [--server= 名称 | IP ] [--setparentuuid=UUID] [--setuuid=UUID] [--target=目标] [--tempeject= on | off ] [--tport=端口] [--type= dvddrive | fdd | hdd ] [--username=用户名]

VBoxManage storagectl < UUID | 虚拟机名称 > <--name=控制器名称> [--add= floppy | ide | pcie | sas | sata | scsi | usb ] [--controller= BusLogic | I82078 | ICH6 | IntelAhci | LSILogic | LSILogicSAS | NVMe | PIIX3 | PIIX4 | USB | VirtIO ] [--bootable= on | off ] [--hostiocache= on | off ] [--portcount=计数] [--remove] [--rename=新控制器名称]

VBoxManage bandwidthctl < UUID | 虚拟机名称 > add <带宽组名称> <--limit=带宽限制[k|m|g|K|M|G]> <--type=disk|network>

VBoxManage bandwidthctl < UUID | 虚拟机名称 > list [--machinereadable]

VBoxManage bandwidthctl < UUID | 虚拟机名称 > remove <带宽组名称>

VBoxManage bandwidthctl < UUID | 虚拟机名称 > set <带宽组名称> <--limit=带宽限制[k|m|g|K|M|G]>

VBoxManage showmediuminfo [ disk | dvd | floppy ] < UUID | 文件名 >

VBoxManage createmedium [ 磁盘 | DVD | 软盘 ] <--filename=文件名> [ --size=兆字节 | --sizebyte=字节 ] [--diffparent= UUID | 文件名 ] [--format= VDI | VMDK | VHD ] [--variant Standard,Fixed,Split2G,Stream,ESX,Formatted,RawDisk] --property 名称=... --property-file 名称=/path/to/file/with/value...

VBoxManage modifymedium [ disk | dvd | floppy ] < UUID | 文件名 > [--autoreset=on | off] [--compact] [--description=描述] [--move=路径名] [--property=名称=[]] [--resize=兆字节 | --resizebyte=字节] [--setlocation=路径名] [--type=normal | writethrough | immutable | shareable | readonly | multiattach]

VBoxManage clonemedium < UUID | 源介质 > < UUID | 目标介质 > [ disk | dvd | floppy ] [--existing] [--format= VDI | VMDK | VHD | RAW | 其他 ] [--variant=Standard,Fixed,Split2G,Stream,ESX]

VBoxManage mediumproperty [ disk | dvd | floppy ] set < UUID | 文件名 > <属性名称> <属性值>

VBoxManage mediumproperty [ disk | dvd | floppy ] get < UUID | 文件名 > <属性名称>

VBoxManage mediumproperty [ disk | dvd | floppy ] delete < UUID | 文件名 > <属性名称>

VBoxManage encryptmedium < UUID | 文件名 > [--cipher=加密ID] [--newpassword=新密码] [--newpasswordid=密码ID] [--oldpassword=旧密码]

VBoxManage checkmediumpwd < UUID | 文件名 > <密码文件>

VBoxManage convertfromraw <输入文件> <输出文件> [--format= VDI | VMDK | VHD ] [--uuid=UUID] [--variant=Standard,Fixed,Split2G,Stream,ESX]

VBoxManage convertfromraw stdin <输出文件> <字节> [--format= VDI | VMDK | VHD ] [--uuid=UUID] [--variant=Standard,Fixed,Split2G,Stream,ESX]

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] formatfat [--quick]

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] cat [--hex] [--offset=字节偏移量] [--size=字节] [--output=-|文件名]

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] stream [--format=镜像格式] [--variant=镜像变体] [--output=-|文件名]

VBoxManage setextradata < global | UUID | 虚拟机名称 > <关键词> []

VBoxManage getextradata < global | UUID | 虚拟机名称 > <关键词> | [enumerate]

VBoxManage setproperty <属性名称> <属性值>

VBoxManage usbfilter add <索引,0-N> <--target= < UUID | 虚拟机名称 | global >> <--name=字符串> <--action=ignore | hold> [--active=yes | no] [--vendorid=XXXX] [--productid=XXXX] [--revision=IIFF] [--manufacturer=字符串] [--product=字符串] [--port=十六进制] [--remote=yes | no] [--serialnumber=字符串] [--maskedinterfaces=XXXXXXXX]

VBoxManage usbfilter modify <索引,0-N> <--target= < UUID | 虚拟机名称 | global >> [--name=字符串] [--action=ignore | hold] [--active=yes | no] [--vendorid=XXXX | ""] [--productid=XXXX | ""] [--revision=IIFF | ""] [--manufacturer=字符串 | ""] [--product=字符串 | ""] [--port=十六进制] [--remote=yes | no] [--serialnumber=字符串 | ""] [--maskedinterfaces=XXXXXXXX]

VBoxManage usbfilter remove <索引,0-N> <--target= < UUID | 虚拟机名称 | global >>

VBoxManage sharedfolder add < UUID | 虚拟机名称 > <--name=名称> <--hostpath=主机路径> [--readonly] [--transient] [--automount] [--auto-mount-point=路径]

VBoxManage sharedfolder remove < UUID | 虚拟机名称 > <--name=名称> [--transient]

VBoxManage guestproperty get < UUID | 虚拟机名称 > <属性名称> [--verbose]

VBoxManage guestproperty enumerate < UUID | 虚拟机名称 > [--no-timestamp] [--no-flags] [--relative] [--old-format] [模式...]

VBoxManage guestproperty set < UUID | 虚拟机名称 > <属性名称> [属性值 [--flags=标志]]

VBoxManage guestproperty unset < UUID | 虚拟机名称 > <属性名称>

VBoxManage guestproperty wait < UUID | 虚拟机名称 > <模式> [--timeout=毫秒] [--fail-on-timeout]

VBoxManage guestcontrol < UUID | 虚拟机名称 > run [--arg0=参数0] [--domain=域名] [--dos2unix] [--exe=文件名] [--ignore-orphaned-processes] [ --no-wait-stderr | --wait-stderr ] [ --no-wait-stdout | --wait-stdout ] [ --passwordfile=密码文件 | --password=密码 ] [--profile] [--putenv=变量名=[]] [--quiet] [--timeout=毫秒] [--unix2dos] [--unquoted-args] [--username=用户名] [--verbose] <-- [参数...]>

VBoxManage guestcontrol < UUID | 虚拟机名称 > start [--arg0=参数0] [--domain=域名] [--exe=文件名] [--ignore-orphaned-processes] [ --passwordfile=密码文件 | --password=密码 ] [--profile] [--putenv=变量名=[]] [--quiet] [--timeout=毫秒] [--unquoted-args] [--username=用户名] [--verbose] <-- [参数...]>

VBoxManage guestcontrol < UUID | 虚拟机名称 > copyfrom [--dereference] [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--no-replace] [--recursive] [--target-directory=主机目标目录] [--update] [--username=用户名] [--verbose] <访客源0> 访客源1 [...] <主机目标>

VBoxManage guestcontrol < UUID | 虚拟机名称 > copyto [--dereference] [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--no-replace] [--recursive] [--target-directory=访客目标目录] [--update] [--username=用户名] [--verbose] <主机源0> 主机源1 [...]

VBoxManage guestcontrol < UUID | 虚拟机名称 > mkdir [--domain=域名] [--mode=模式] [--parents] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol < UUID | 虚拟机名称 > rmdir [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--recursive] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol < UUID | 虚拟机名称 > rm [--domain=域名] [--force] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol < UUID | 虚拟机名称 > mv [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <...> <目标目录>

VBoxManage guestcontrol < UUID | 虚拟机名称 > mktemp [--directory] [--domain=域名] [--mode=模式] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--secure] [--tmpdir=目录名] [--username=用户名] [--verbose] <模板名>

VBoxManage guestcontrol < UUID | 虚拟机名称 > stat [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <文件名>

VBoxManage guestcontrol < UUID | 虚拟机名称 > list < all | files | processes | sessions > [--quiet] [--verbose]

VBoxManage guestcontrol < UUID | 虚拟机名称 > closeprocess [ --session-id=ID | --session-name=名称或模式 ] [--quiet] [--verbose] <PID...>

VBoxManage guestcontrol < UUID | 虚拟机名称 > closesession [ --all | --session-id=ID | --session-name=名称或模式 ] [--quiet] [--verbose]

VBoxManage guestcontrol < UUID | 虚拟机名称 > updatega [--quiet] [--verbose] [--source=访客增强功能.ISO] [--wait-start] [-- [参数...]]

VBoxManage guestcontrol < UUID | 虚拟机名称 > watch [--quiet] [--verbose]

VBoxManage debugvm <UUID|虚拟机名称> dumpvmcore [--filename=名称]

VBoxManage debugvm <UUID|虚拟机名称> info <项目> [参数...]

VBoxManage debugvm <UUID|虚拟机名称> injectnmi

VBoxManage debugvm <UUID|虚拟机名称> log [[--release] | [--debug]] [组设置...]

VBoxManage debugvm <UUID|虚拟机名称> logdest [[--release] | [--debug]] [目的地...]

VBoxManage debugvm <UUID|虚拟机名称> logflags [[--release] | [--debug]] [标志...]

VBoxManage debugvm <UUID|虚拟机名称> osdetect

VBoxManage debugvm <UUID|虚拟机名称> osinfo

VBoxManage debugvm <UUID|虚拟机名称> osdmesg [--lines=行数]

VBoxManage debugvm <UUID|虚拟机名称> getregisters [--cpu=ID] [寄存器集.寄存器名...]

VBoxManage debugvm <UUID|虚拟机名称> setregisters [--cpu=ID] [寄存器集.寄存器名=...]

VBoxManage debugvm <UUID|虚拟机名称> show [[--human-readable] | [--sh-export] | [--sh-eval] | [--cmd-set]] [设置项...]

VBoxManage debugvm <UUID|虚拟机名称> stack [--cpu=ID]

VBoxManage debugvm <UUID|虚拟机名称> statistics [--reset] [--descriptions] [--pattern=模式]

VBoxManage debugvm <UUID|虚拟机名称> guestsample [--filename=文件名] [--sample-interval-us=采样间隔微秒] [--sample-time-us=采样时间微秒]

VBoxManage metrics collect [--detach] [--list] [--period=] [--samples=计数] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics disable [--list] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics enable [--list] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics list [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics query [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics setup [--list] [--period ] [--samples 计数] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage natnetwork add [ --disable | --enable ] <--netname=名称> <--network=网络> [--dhcp=on|off] [--ipv6=on|off] [--loopback-4=规则] [--loopback-6=规则] [--port-forward-4=规则] [--port-forward-6=规则]

VBoxManage natnetwork list [过滤模式]

VBoxManage natnetwork modify [--dhcp=on|off] [ --disable | --enable ] <--netname=名称> <--network=网络> [--ipv6=on|off] [--loopback-4=规则] [--loopback-6=规则] [--port-forward-4=规则] [--port-forward-6=规则]

VBoxManage natnetwork remove <--netname=名称>

VBoxManage natnetwork start <--netname=名称>

VBoxManage natnetwork stop <--netname=名称>

VBoxManage hostonlyif ipconfig <接口名> [ --dhcp | --ip=IPv4地址 [--netmask=IPv4子网掩码] | --ipv6=IPv6地址 [--netmasklengthv6=长度] ]

VBoxManage hostonlyif create

VBoxManage hostonlyif remove <接口名>

VBoxManage hostonlynet add <--name=网络名称> [--id=网络ID] <--netmask=掩码> <--lower-ip=起始IP地址> <--upper-ip=结束IP地址> [ --enable | --disable ]

VBoxManage hostonlynet modify < --name=netname | --id=netid > [--lower-ip=address] [--upper-ip=address] [--netmask=mask] [ --enable | --disable ]

VBoxManage hostonlynet remove < --name=netname | --id=netid >

VBoxManage dhcpserver add < --network=netname | --interface=ifname > <--server-ip=address> <--netmask=mask> <--lower-ip=address> <--upper-ip=address> < --enable | --disable >
[[--global] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds]...]
[<--group=name> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--incl-mac=address...] | [--excl-mac=address...] | [--incl-mac-wild=pattern...] | [--excl-mac-wild=pattern...] | [--incl-vendor=string...] | [--excl-vendor=string...] | [--incl-vendor-wild=pattern...] | [--excl-vendor-wild=pattern...] | [--incl-user=string...] | [--excl-user=string...] | [--incl-user-wild=pattern...] | [--excl-user-wild=pattern...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds]...]
[<--vm=name|uuid> | [--nic=1-N] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address]...]
[<--mac-address=address> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address]...]

VBoxManage dhcpserver modify < --network=netname | --interface=ifname > [--server-ip=address] [--lower-ip=address] [--upper-ip=address] [--netmask=mask] [ --enable | --disable ]
[[--global] | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--remove-config]...]
[<--group=name> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--del-mac=address...] | [--incl-mac=address...] | [--excl-mac=address...] | [--del-mac-wild=pattern...] | [--incl-mac-wild=pattern...] | [--excl-mac-wild=pattern...] | [--del-vendor=string...] | [--incl-vendor=string...] | [--excl-vendor=string...] | [--del-vendor-wild=pattern...] | [--incl-vendor-wild=pattern...] | [--excl-vendor-wild=pattern...] | [--del-user=string...] | [--incl-user=string...] | [--excl-user=string...] | [--del-user-wild=pattern...] | [--incl-user-wild=pattern...] | [--excl-user-wild=pattern...] | [--zap-conditions] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--remove-config]...]
[<--vm=name|uuid> | [--nic=1-N] | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address] | [--remove-config]...]
[<--mac-address=address> | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address] | [--remove-config]...]

VBoxManage dhcpserver remove < --network=netname | --interface=ifname >

VBoxManage dhcpserver start < --network=netname | --interface=ifname >

VBoxManage dhcpserver restart < --network=netname | --interface=ifname >

VBoxManage dhcpserver stop < --network=netname | --interface=ifname >

VBoxManage dhcpserver findlease < --network=netname | --interface=ifname > <--mac-address=mac>

VBoxManage usbdevsource add <source-name> <--backend=backend> <--address=address>

VBoxManage usbdevsource remove <source-name>

VBoxManage extpack install [--replace] [--accept-license=sha256] <tarball>

VBoxManage extpack uninstall [--force] <name>

VBoxManage extpack cleanup

VBoxManage updatecheck perform [--machine-readable]

VBoxManage updatecheck list [--machine-readable]

VBoxManage updatecheck modify [ --disable | --enable ] [--channel=stable | withbetas | all] [--frequency=days]

VBoxManage modifynvram <uuid|vmname> inituefivarstore

VBoxManage modifynvram <uuid|vmname> enrollmssignatures

VBoxManage modifynvram <uuid|vmname> enrollorclpk

VBoxManage modifynvram <uuid|vmname> enrollpk [--platform-key=filename] [--owner-uuid=uuid]

VBoxManage modifynvram <uuid|vmname> enrollmok [--mok=filename] [--owner-uuid=uuid]

VBoxManage modifynvram <uuid|vmname> listvars

VBoxManage modifynvram <uuid|vmname> queryvar [--name=name] [--filename=filename]

VBoxManage modifynvram <uuid|vmname> deletevar [--name=name] [--owner-uuid=uuid]

VBoxManage modifynvram <uuid|vmname> changevar [--name=name] [--filename=filename]

每次调用 VBoxManage 时,只能执行一个命令。但是,一个命令可能支持多个子命令,这些子命令可以在一次调用中执行。以下部分提供了不同命令的详细参考信息。

8.3. 通用选项

  • -v|--version:显示此工具的版本并退出。

  • --nologo:抑制徽标信息的输出。此选项对脚本很有用。

  • --settingspw:指定一个设置密码。

  • --settingspwfile:指定一个包含设置密码的文件。

设置密码用于某些出于安全原因需要以加密形式存储的设置。目前,唯一加密的设置是 iSCSI 启动器密钥,请参阅第 8.26 节,“VBoxManage storageattach”。只要未指定设置密码,此信息将以明文形式存储。使用过一次 --settingspw|--settingspwfile 选项后,必须始终使用它。否则,加密的设置将无法解密。

8.4. VBoxManage

Oracle VM VirtualBox 命令行界面。

概要

VBoxManage [ -V | --version ] [--dump-build-type] [ -q | --nologo ] [--settingspw=password] [--settingspwfile=pw-file] [@response-file] [[help]subcommand]

描述

VBoxManage 命令是 Oracle VM VirtualBox 软件的命令行界面 (CLI)。该 CLI 支持 Oracle VM VirtualBox 图形用户界面 (GUI) 提供的所有功能。此外,您可以使用 VBoxManage 命令管理无法通过 GUI 管理的虚拟化引擎功能。

每次调用 VBoxManage 命令时,只执行一个命令。请注意,一些 VBoxManage 子命令会调用多个子命令。

从主机操作系统 (OS) 的命令行运行 VBoxManage 命令,以控制 Oracle VM VirtualBox 软件。

VBoxManage 命令在主机系统上存储在以下位置:

  • Linux: /usr/bin/VBoxManage

  • Mac OS X: /Applications/VirtualBox.app/Contents/MacOS/VBoxManage

  • Oracle Solaris: /opt/VirtualBox/bin/VBoxManage

  • Windows: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe

除了使用此 CLI 或 GUI 管理虚拟机 (VM) 之外,您还可以使用 VBoxHeadless CLI 远程管理虚拟机。

VBoxManage 命令通过使用子命令(例如 listcreatevmstartvm)执行特定任务。请参阅每个 VBoxManage 子命令的相关信息。

如果需要,可以通过虚拟机的名称或其通用唯一标识符 (UUID) 指定虚拟机。

使用 VBoxManage list vms 命令获取所有当前注册虚拟机的信息,包括虚拟机名称和关联的 UUID。

请注意,如果虚拟机名称包含空格,则必须将其用双引号完整括起来。

通用选项

--nologo

抑制徽标信息输出,这对于脚本很有用。

此选项的简短版本是 -q

--settingspw=[password]

指定设置密码。您可以选择将密码指定为此选项的参数。如果未以这种方式指定密码,则 VBoxManage 命令会提示您输入密码。

设置密码是一种安全功能,用于加密存储的设置,这些设置默认以纯文本形式存储。

您无法解密已加密的设置。因此,如果设置已加密,则必须继续指定 --settingspw--settingspwfile 选项。

目前只有 iSCSI 密钥被加密。

--settingspwfile=pw-filename

指定包含设置密码的文件。

--version

显示有关 VBoxManage 命令的版本信息。

此选项的简短版本是 -V

@response-file

从指定的 Bourne shell 响应文件加载参数。

子命令

指定 VBoxManage 子命令之一,例如 controlvmcreatevmlistmodifyvmshowvminfostartvmstorageattachstoragectl

每个子命令都在其自己的命令主题中描述,其中一些显示在“另请参阅”部分中。

示例

以下命令创建一个名为 Win8 的虚拟机,并使用 --register 选项将其注册到 Oracle VM VirtualBox。

$ VBoxManage createvm --name "Win8" --register
Virtual machine 'Win8' is created.
UUID: UUID-string
Settings file: '/home/username/VirtualBox VMs/Win8/Win8.vbox'

命令输出显示 Win8 虚拟机已分配了一个 UUID 和一个 XML 机器设置文件。

您可以使用 VBoxManage showvminfo 命令查看虚拟机的配置信息。

以下示例使用 VBoxManage modifyvm 命令将 Windows XP 虚拟机的内存量更改为 1024 兆字节

$ VBoxManage modifyvm "Windows XP" --memory 1024

请注意,即使虚拟机已关机,您也可以使用 VBoxManage modifyvm 命令。

您可以使用 VBoxManage storagectl 命令或 VBoxManage storageattach 命令修改虚拟机的存储配置。例如,要创建一个名为 sata01 的 SATA 存储控制器并将其添加到 ol7 虚拟机中

$ VBoxManage storagectl ol7 --name "sata01" --add sata

使用 VBoxManage startvm 命令启动当前已关机的虚拟机。例如,启动 win7 虚拟机

$ VBoxManage startvm win7

使用 VBoxManage controlvm 命令暂停或保存当前正在运行的虚拟机。您也可以使用此命令修改虚拟机的设置。例如,为 ol6u9 虚拟机启用音频输入。

$ VBoxManage controlvm ol6u9 audioin on

8.5. VBoxManage list

查看系统信息和虚拟机配置详情。

概要

VBoxManage list [--long] [--sorted] [ bridgedifs | cloudnets | cloudprofiles | cloudproviders | cpu-profiles | dhcpservers | dvds | extpacks | floppies | groups | hddbackends | hdds | hostcpuids | hostdrives | hostdvds | hostfloppies | hostinfo | hostonlyifs | hostonlynets | intnets | natnets | ostypes | runningvms | screenshotformats | systemproperties | usbfilters | usbhost | vms | webcams ]

描述

VBoxManage list 子命令使您能够获取有关 Oracle VM VirtualBox 软件、虚拟机以及您创建的关联服务的信息。

通用选项

--long

如果可用,显示每个信息条目的详细信息。此选项的简短形式是 -l

--sorted

按字母顺序对信息条目列表进行排序。此选项的简短形式是 -s

列出主机系统上的桥接网络接口

VBoxManage list bridgedifs

VBoxManage list bridgedifs 命令列出当前在主机系统上可用的桥接网络接口。输出显示每个接口的详细配置信息。请参阅第 6 章,“虚拟网络”

列出云网络接口

VBoxManage list cloudnets

VBoxManage list cloudnets 命令列出已配置的云网络接口。云网络接口提供本地虚拟机与云网络之间的连接。

列出云配置文件

VBoxManage list cloudprofiles

VBoxManage list cloudprofiles 命令列出已配置的云配置文件。云配置文件包含云服务账户的设置。

列出云提供商

VBoxManage list cloudproviders

VBoxManage list cloudproviders 命令列出 Oracle VM VirtualBox 支持的云提供商。Oracle Cloud Infrastructure 是云提供商的一个示例。

列出已知 CPU 配置文件

VBoxManage list cpu-profiles

VBoxManage list cpu-profiles 命令列出 Oracle VM VirtualBox 已知的 CPU 配置文件。

列出主机系统上的 DHCP 服务器

VBoxManage list dhcpservers

VBoxManage list dhcpservers 命令列出当前在主机系统上可用的 DHCP 服务器。输出显示每个 DHCP 服务器的详细配置信息。请参阅第 6 章,“虚拟网络”

列出 DVD 虚拟磁盘镜像

VBoxManage list dvds

VBoxManage list dvds 命令显示有关当前由 Oracle VM VirtualBox 软件使用的 DVD 虚拟磁盘镜像的信息。对于每个镜像,输出显示所有设置、Oracle VM VirtualBox 与镜像关联的 UUID 以及与镜像关联的所有文件。

此命令执行与虚拟介质管理器相同的功能。请参阅第 5.3 节,“虚拟介质管理器”

列出已安装的 Oracle VM VirtualBox 扩展包

VBoxManage list extpacks

VBoxManage list extpacks 命令显示所有当前已安装的 Oracle VM VirtualBox 扩展包。请参阅第 1.5 节,“安装 Oracle VM VirtualBox 和扩展包”第 8.52 节,“VBoxManage extpack”

列出软盘虚拟磁盘镜像

VBoxManage list floppies

VBoxManage list floppies 命令显示有关当前由 Oracle VM VirtualBox 软件使用的软盘镜像的信息。对于每个镜像,输出显示所有设置、Oracle VM VirtualBox 与镜像关联的 UUID 以及与镜像关联的所有文件。

此命令执行与虚拟介质管理器相同的功能。请参阅第 5.3 节,“虚拟介质管理器”

列出虚拟机组

VBoxManage list groups

VBoxManage list groups 命令显示所有虚拟机组。请参阅第 1.10 节,“使用虚拟机组”

列出虚拟磁盘后端

VBoxManage list hddbackends

VBoxManage list hddbackends 命令列出 Oracle VM VirtualBox 软件的所有已知虚拟磁盘后端。对于每种此类格式(例如 VDI、VMDK 或 RAW),此命令列出后端的容量和配置。

列出硬盘虚拟磁盘镜像

VBoxManage list hdds

VBoxManage list hdds 命令显示有关当前由 Oracle VM VirtualBox 软件使用的硬盘虚拟磁盘镜像的信息。对于每个镜像,输出显示所有设置、Oracle VM VirtualBox 与镜像关联的 UUID 以及与镜像关联的所有文件。

此命令执行与虚拟介质管理器相同的功能。请参阅第 5.3 节,“虚拟介质管理器”

列出主机系统 CPU 的 CPUID 信息

VBoxManage list hostcpuids

VBoxManage list hostcpuids 命令列出主机系统上每个 CPU 的 CPUID 信息。使用此信息可以对主机系统的虚拟化能力进行更精细的分析。

列出主机系统上的存储驱动器

VBoxManage list hostdrives

VBoxManage list hostdrives 命令列出主机系统上可能有助于创建 VMDK 原始磁盘镜像的磁盘驱动器。每个条目都包含在 Oracle VM VirtualBox 内部用于引用它们的名称。

列出主机系统上的 DVD 驱动器

VBoxManage list hostdvds

VBoxManage list hostdvds 命令列出主机系统上的 DVD 驱动器。每个 DVD 条目都包含在 Oracle VM VirtualBox 内部用于访问它们的名称。

列出主机系统上的软盘驱动器

VBoxManage list hostfloppies

VBoxManage list hostfloppies 命令列出主机系统上的软盘驱动器。每个软盘条目都包含在 Oracle VM VirtualBox 内部用于访问它们的名称。

列出有关主机系统的信息

VBoxManage list hostinfo

VBoxManage list hostinfo 命令显示有关主机系统的信息。输出包括有关 CPU、内存和操作系统版本的信息。

列出主机系统上的仅主机网络接口

VBoxManage list hostonlyifs

VBoxManage list hostonlyifs 命令列出当前在主机系统上可用的仅主机网络接口。输出显示每个接口的详细配置信息。请参阅第 6 章,“虚拟网络”

列出仅主机网络

VBoxManage list hostonlynets

VBoxManage list hostonlynets 命令列出已配置的仅主机网络。仅主机网络在主机和本地虚拟机之间提供连接。请参阅第 6 章,“虚拟网络”

列出内部网络

VBoxManage list intnets

VBoxManage list intnets 命令显示有关内部网络的信息。请参阅第 6 章,“虚拟网络”

列出主机系统上的 NAT 网络接口

VBoxManage list natnets

VBoxManage list natnets 命令列出当前在主机系统上可用的 NAT 网络接口。请参阅第 6 章,“虚拟网络”

列出客户机操作系统

VBoxManage list ostypes

VBoxManage list ostypes 命令列出 Oracle VM VirtualBox 已知的所有客户机操作系统 (OS)。每个 OS 条目包括标识符、描述、系列标识符、系列描述以及 OS 是否支持 64 位。

您可以将这些标识符与 VBoxManage modifyvm 命令一起使用。

列出正在运行的虚拟机

VBoxManage list runningvms

VBoxManage list runningvms 命令列出所有当前正在运行的虚拟机 (VM)。默认情况下,此命令显示一个紧凑列表,其中显示每个虚拟机的名称和 UUID。

列出可用屏幕截图格式

VBoxManage list screenshotformats

VBoxManage list screenshotformats 命令显示可用屏幕截图格式的列表。

列出系统属性

VBoxManage list systemproperties

VBoxManage list systemproperties 命令显示大量全局 Oracle VM VirtualBox 设置和限制,例如最小和最大客户机 RAM、虚拟硬盘大小、文件夹设置以及当前正在使用的身份验证库。

列出已注册的全局 USB 筛选器

VBoxManage list usbfilters

VBoxManage list usbfilters 命令列出所有在 Oracle VM VirtualBox 中注册的全局 USB 筛选器并显示筛选器参数。全局 USB 筛选器适用于所有虚拟机都可访问的设备。

列出主机系统上的 USB 设备

VBoxManage list usbhost

VBoxManage list usbhost 命令显示有关连接到主机系统的 USB 设备的信息。输出包括可用于构建 USB 筛选器的信息,并指示设备当前是否正在被主机系统使用。

列出虚拟机

VBoxManage list vms

VBoxManage list vms 命令列出所有当前已注册到 Oracle VM VirtualBox 的虚拟机 (VM)。默认情况下,此命令显示一个紧凑列表,其中显示每个虚拟机的名称和 UUID。

列出连接到正在运行的虚拟机的网络摄像头

VBoxManage list webcams

VBoxManage list webcams 命令显示连接到正在运行的虚拟机的网络摄像头列表。

输出是绝对路径或别名列表,用于通过使用 VBoxManage webcam attach 命令将网络摄像头连接到虚拟机。

示例

以下命令列出为 Oracle VM VirtualBox 配置的虚拟机组。

$ VBoxManage list groups
"/Linux-VMs"
"/Windows-VMs"

以下命令列出当前正在运行的 VM。

$ VBoxManage list runningvms
"ol7" {ol7-UUID}
"win8" {win8-UUID}

8.6. VBoxManage showvminfo

显示虚拟机的配置信息或日志文件内容。

概要

VBoxManage showvminfo < uuid | vmname > [--details] [--machinereadable] [--password-id] [--password]

VBoxManage showvminfo < uuid | vmname > <--log=index> [--password-id id] [--password file|-]

描述

VBoxManage showvminfo 命令输出指定虚拟机 (VM) 的配置信息或日志文件内容。

查看虚拟机信息

VBoxManage showvminfo < uuid | vmname > [--details] [--machinereadable] [--password-id] [--password]

VBoxManage showvminfo 命令以详细格式或机器可读格式输出有关指定虚拟机的信息。

VBoxManage showvminfo 命令显示与 VBoxManage list vms --long 命令相同格式的指定虚拟机信息。

--details

包括有关 VM 的详细信息。

--machinereadable

指定 VM 信息采用机器可读格式。

--password-id id

如果 VM 已加密,则指定其密码 ID。

--password file|-

指定虚拟机的密码(如果已加密)。可以指定主机操作系统上密码文件的绝对路径名,或者使用 - 提示您输入密码。

查看虚拟机日志内容

VBoxManage showvminfo < uuid | vmname > <--log=index> [--password-id id] [--password file|-]

VBoxManage showvminfo --log 命令输出指定虚拟机日志文件之一的内容。

--log=index

指定标识日志文件的数字索引。

索引值从 0 开始,表示 VBox.log 文件。索引值为 1 表示 VBoxHardening.log 文件。从 2 开始的索引值表示其他日志文件,例如 VBox.log.1 文件。

--password-id id

如果 VM 已加密,则指定其密码 ID。

--password file|-

指定虚拟机的密码(如果已加密)。可以指定主机操作系统上密码文件的绝对路径名,或者使用 - 提示您输入密码。

示例

以下示例显示此命令的典型输出:

$ VBoxManage showvminfo "Windows 10"
VirtualBox Command Line Management Interface Version version-number
Copyright (C) 2005-2023 Oracle and/or its affiliates

Name:            Windows 10
Groups:          /
Guest OS:        Windows 10 (64-bit)
UUID:            1bf3464d-57c6-4d49-92a9-a5cc3816b7e7
Config file:     /home/username/VirtualBox VMs/Windows 10/Windows 10.vbox
Snapshot folder: /home/username/VirtualBox VMs/Windows 10/Snapshots
Log folder:      /home/username/VirtualBox VMs/Windows 10/Logs
Hardware UUID:   1bf3464d-57c6-4d49-92a9-a5cc3816b7e7
Memory size:     2048MB
Page Fusion:     off
VRAM size:       12MB
CPU exec cap:    100%
...

以下示例显示以机器可读格式输出的信息,其中将条目显示为 property=value 字符串

$ VBoxManage showvminfo "Windows 10" --machinereadable
...
groups="/"
ostype="Windows 10 (64-bit)"
UUID="1bf3464d-57c6-4d49-92a9-a5cc3816b7e7"
...

以下示例显示 VBox.log 日志文件的内容

$ VBoxManage showvminfo "Windows 10" --log 0
00:00:02.895106 VirtualBox VM 6.0.0_RC1 r127378 linux.amd64 (Dec 10 2018 17:16:06) release log
00:00:02.895109 Log opened 2018-12-14T14:31:44.088259000Z
00:00:02.895111 Build Type: release
00:00:02.895115 OS Product: Linux
00:00:02.895117 OS Release: 4.1.12-61.1.22.el7uek.x86_64
00:00:02.895119 OS Version: #2 SMP Fri Dec 2 09:28:44 PST 2016
...

8.7. VBoxManage registervm

注册虚拟机。

概要

VBoxManage registervm <filename> --password file

描述

VBoxManage registervm 命令使您能够通过将 XML 机器配置文件导入到 Oracle VM VirtualBox 中来创建虚拟机 (VM)。该虚拟机不能拥有与 Oracle VM VirtualBox 中已注册的虚拟机相同的 UUID。请确保 XML 机器配置文件在注册之前位于 machines 文件夹中。

注意

当您使用 VBoxManage createvm 命令创建虚拟机时,可以指定 --register 选项来注册虚拟机。

文件名

指定 XML 虚拟机配置文件。此文件具有 .vbox 文件扩展名。

--password

使用 --password 提供虚拟机的加密密码。可以指定主机操作系统上密码文件的绝对路径名,或者指定 - 以在命令行中提示您输入密码。

示例

以下命令注册名为 vm2 的虚拟机。该虚拟机的 XML 虚拟机配置文件位于默认虚拟机文件夹中。

$ VBoxManage registervm "/home/user/VirtualBox VMs/vm2/vm2.vbox"

8.8. VBoxManage unregistervm

注销虚拟机。

概要

VBoxManage unregistervm < uuid | vmname > [--delete] [--delete-all]

描述

VBoxManage unregistervm 命令注销虚拟机 (VM)。

uuid|vmname

指定虚拟机的名称或全局唯一标识符 (UUID)。

--delete

自动删除与虚拟机相关的以下文件

  • 所有硬盘映像文件,包括差分文件。

  • 虚拟机创建的所有保存状态文件,包括每个快照的文件。

  • XML 虚拟机定义文件及其备份。

  • 虚拟机日志文件。

  • 与未注册虚拟机相关联的空目录。

--delete-all

删除 --delete 选项中描述的文件,以及位于虚拟机文件夹中且仅附加到此虚拟机的所有 DVD 和软盘。

示例

以下命令注销名为 vm2 的虚拟机。

$ VBoxManage unregistervm vm2

以下命令注销名为 vm3 的虚拟机。所有与虚拟机相关联的文件都将被删除。

$ VBoxManage unregistervm vm3 --delete
%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

8.9. VBoxManage createvm

创建新的虚拟机。

概要

VBoxManage createvm <--name=name> [--basefolder=basefolder] [--default] [--groups=group-ID,...] [--ostype=ostype] [--register] [--uuid=uuid] [--cipher cipher] [--password-id password-id] [--password file]

描述

VBoxManage createvm 命令创建新的 XML 虚拟机 (VM) 定义文件。

您必须使用 --name name 指定虚拟机的名称。此名称默认用作具有 .vbox 扩展名的设置文件以及虚拟机文件夹的名称,该文件夹是 $HOME/VirtualBox VMs 目录的一个子文件夹。

如果实际文件名违反了主机操作系统文件名要求(例如使用路径分隔符或其他保留字符),则可能与虚拟机名称不直接对应,它们将被替换为占位符。如果您稍后重命名虚拟机,文件和文件夹名称将自动更新以匹配新名称。

命令选项

除了指定虚拟机名称或 UUID(必需)之外,您还可以指定以下任何选项

--basefolder=basefolder

指定用于保存新虚拟机机器配置文件的文件夹名称。

请注意,如果您重命名虚拟机,文件和文件夹的名称不会更改。

--default

为指定的客户操作系统应用默认硬件配置。默认情况下,虚拟机以最小硬件创建。

--groups=group-ID[,...]

将虚拟机分配给指定的组。如果指定多个组,请用逗号分隔每个组名称。

请注意,每个组都由一个以斜杠字符 (/) 开头的组 ID 标识,以便组可以嵌套。默认情况下,虚拟机始终被分配到 / 组。

--ostype=ostype

指定要在虚拟机中运行的客户机操作系统。运行 VBoxManage list ostypes 命令以查看可用的操作系统类型。

--register

将虚拟机注册到您的 Oracle VM VirtualBox 安装。默认情况下,VBoxManage createvm 命令仅为虚拟机创建 XML 配置,但不会注册虚拟机。如果您在创建时未注册虚拟机,则可以在创建虚拟机后运行 VBoxManage registervm 命令。

--uuid=uuid

指定虚拟机的全局唯一标识符 (UUID)。如果您决定注册虚拟机,请确保此 UUID 在主机或其虚拟机组成员资格的 Oracle VM VirtualBox 命名空间内是唯一的。默认情况下,Oracle VM VirtualBox 提供 UUID。

--cipher cipher

指定用于加密的加密算法。有效值为 AES-128AES-256

此选项使您能够在虚拟机上设置加密。

--password-id password-id

指定一个新的密码标识符,该标识符用于在为虚拟机提供多个密码时进行正确识别。

此选项使您能够在虚拟机上设置加密。

--password file

使用 --password 提供虚拟机的加密密码。可以指定主机操作系统上密码文件的绝对路径名,或者指定 - 以在命令行中提示您输入密码。

此选项使您能够在虚拟机上设置加密。

示例

以下命令创建名为 vm2 的虚拟机,您计划在其上运行 64 位版本的 Oracle Linux。

$ VBoxManage createvm --name "vm2" --ostype "Oracle_64"

以下命令创建并注册名为 vm3 的虚拟机。

$ VBoxManage createvm --name "vm3" --register

8.10. VBoxManage modifyvm

更改已停止虚拟机的设置。

概要

VBoxManage modifyvm < uuid | vmname > [--name=name] [--groups= group [,group...] ] [--description=description] [--os-type=OS-type] [--icon-file=filename] [--memory=size-in-MB] [--page-fusion= on | off ] [--vram=size-in-MB] [--acpi= on | off ] [--ioapic= on | off ] [--hardware-uuid=UUID] [--cpus=CPU-count] [--cpu-hotplug= on | off ] [--plug-cpu=CPU-ID] [--unplug-cpu=CPU-ID] [--cpu-execution-cap=number] [--pae= on | off ] [--long-mode= on | off ] [--ibpb-on-vm-exit= on | off ] [--ibpb-on-vm-entry= on | off ] [--spec-ctrl= on | off ] [--l1d-flush-on-sched= on | off ] [--l1d-flush-on-vm-entry= on | off ] [--mds-clear-on-sched= on | off ] [--mds-clear-on-vm-entry= on | off ] [--cpu-profile= host | Intel 8086 | Intel 80286 | Intel 80386 ] [--hpet= on | off ] [--hwvirtex= on | off ] [--triple-fault-reset= on | off ] [--apic= on | off ] [--x2apic= on | off ] [--paravirt-provider= none | default | legacy | minimal | hyperv | kvm ] [--paravirt-debug= key=value [,key=value...] ] [--nested-paging= on | off ] [--large-pages= on | off ] [--vtx-vpid= on | off ] [--vtx-ux= on | off ] [--nested-hw-virt= on | off ] [--virt-vmsave-vmload= on | off ] [--accelerate-3d= on | off ] [--accelerate-2d-video= on | off ] [--chipset= ich9 | piix3 ] [--iommu= none | automatic | amd | intel ] [--tpm-type= none | 1.2 | 2.0 | host | swtpm ] [--tpm-location= location ] [--bios-logo-fade-in= on | off ] [--bios-logo-fade-out= on | off ] [--bios-logo-display-time=msec] [--bios-logo-image-path=pathname] [--bios-boot-menu= disabled | menuonly | messageandmenu ] [--bios-apic= disabled | apic | x2apic ] [--bios-system-time-offset=msec] [--bios-pxe-debug= on | off ] [--system-uuid-le= on | off ] [--bootX= none | floppy | dvd | disk | net ] [--rtc-use-utc= on | off ] [--graphicscontroller= none | vboxvga | vmsvga | vboxsvga ] [--snapshot-folder= default | pathname ] [--firmware= bios | efi | efi32 | efi64 ] [--guest-memory-balloon=size-in-MB] [--default-frontend= default | name ] [--vm-process-priority= default | flat | low | normal | high ]

VBoxManage modifyvm < uuid | vmname > [--nicN= none | null | nat | bridged | intnet | hostonly | hostonlynet | generic | natnetwork | cloud ] [--nic-typeN= Am79C970A | Am79C973 | 82540EM | 82543GC | 82545EM | virtio ] [--cable-connectedN= on | off ] [--nic-traceN= on | off ] [--nic-trace-fileN=filename] [--nic-propertyN=name= [value]] [--nic-speedN=kbps] [--nic-boot-prioN=priority] [--nic-promiscN= deny | allow-vms | allow-all ] [--nic-bandwidth-groupN= none | name ] [--bridge-adapterN= none | device-name ] [--cloud-networkN=network-name] [--host-only-adapterN= none | device-name ] [--host-only-netN=network-name] [--intnetN=network-name] [--nat-networkN=network-name] [--nic-generic-drvN=driver-name] [--mac-addressN= auto | MAC-address ]

VBoxManage modifyvm < uuid | vmname > [--nat-netN= network | default ] [--nat-pfN= [rule-name],tcp | udp,[host-IP],hostport,[guest-IP],guestport ] [--nat-pfN=delete=rule-name] [--nat-tftp-prefixN=prefix] [--nat-tftp-fileN=filename] [--nat-tftp-serverN=IP-address] [--nat-bind-ipN=IP-address] [--nat-dns-pass-domainN= on | off ] [--nat-dns-proxyN= on | off ] [--nat-dns-host-resolverN= on | off ] [--nat-localhostreachableN= on | off ] [--nat-settingsN=[mtu],[socksnd],[sockrcv],[tcpsnd],[tcprcv]] [--nat-alias-modeN= default | [log],[proxyonly],[sameports] ]

VBoxManage modifyvm < uuid | vmname > [--mouse= ps2 | usb | usbtablet | usbmultitouch | usbmtscreenpluspad ] [--keyboard= ps2 | usb ] [--uartN= off | IO-baseIRQ ] [--uart-modeN= disconnected | server pipe | client pipe | tcpserver port | tcpclient hostname:port | file filename | device-name ] [--uart-typeN= 16450 | 16550A | 16750 ] [--lpt-modeN=device-name] [--lptN= off | IO-baseIRQ ] [--audio-controller= ac97 | hda | sb16 ] [--audio-codec= stac9700 | ad1980 | stac9221 | sb16 ] [--audio-driver= none | default | null | dsound | was | oss | alsa | pulse | coreaudio ] [--audio-enabled= on | off ] [--audio-in= on | off ] [--audio-out= on | off ] [--clipboard-mode= disabled | hosttoguest | guesttohost | bidirectional ] [--drag-and-drop= disabled | hosttoguest | guesttohost | bidirectional ] [--monitor-count=number] [--usb-ehci= on | off ] [--usb-ohci= on | off ] [--usb-xhci= on | off ] [--usb-rename=old-namenew-name]

VBoxManage modifyvm < uuid | vmname > [--recording= on | off ] [--recording-screens= all | none | screen-ID[,screen-ID...] ] [--recording-file=filename] [--recording-max-size=MB] [--recording-max-time=msec] [--recording-opts= key=value[,key=value...] ] [--recording-video-fps=fps] [--recording-video-rate=rate] [--recording-video-res=widthheight]

VBoxManage modifyvm < uuid | vmname > [--vrde= on | off ] [--vrde-property=property-name= [property-value]] [--vrde-extpack= default | name ] [--vrde-port=port] [--vrde-address=hostip] [--vrde-auth-type= null | external | guest ] [--vrde-auth-library= default | name ] [--vrde-multi-con= on | off ] [--vrde-reuse-con= on | off ] [--vrde-video-channel= on | off ] [--vrde-video-channel-quality=percent]

VBoxManage modifyvm < uuid | vmname > [--teleporter= on | off ] [--teleporter-port=port] [--teleporter-address= address | empty ] [--teleporter-password=password] [--teleporter-password-file= filename | stdin ] [--cpuid-portability-level=level] [--cpuid-set=leaf [:subleaf]eaxebxecxedx] [--cpuid-remove=leaf [:subleaf]] [--cpuid-remove-all]

VBoxManage modifyvm < uuid | vmname > [--tracing-enabled= on | off ] [--tracing-config=string] [--tracing-allow-vm-access= on | off ]

VBoxManage modifyvm < uuid | vmname > [--usb-card-reader= on | off ]

VBoxManage modifyvm < uuid | vmname > [--autostart-enabled= on | off ] [--autostart-delay=seconds]

VBoxManage modifyvm < uuid | vmname > [--guest-debug-provider= none | native | gdb | kd ] [--guest-debug-io-provider= none | tcp | udp | ipc ] [--guest-debug-address= IP-Address | path ] [--guest-debug-port=port]

VBoxManage modifyvm < uuid | vmname > [--pci-attach=host-PCI-address [@guest-PCI-bus-address]] [--pci-detach=host-PCI-address]

VBoxManage modifyvm < uuid | vmname > [--testing-enabled= on | off ] [--testing-mmio= on | off ] [--testing-cfg-dwordidx=value]

描述

VBoxManage modifyvm 命令使您能够更改未运行的已注册虚拟机 (VM) 的属性。

这些属性中的大多数都与 VirtualBox 管理器中每个虚拟机的“设置”对话框中显示的虚拟机设置相对应。参见 第 3 章,配置虚拟机。但是,某些设置只能使用 VBoxManage 命令查看和管理。

只有在虚拟机已关闭电源时,您才能使用 VBoxManage modifyvm 命令更改虚拟机设置。使用此命令时,虚拟机不能处于运行状态或保存状态。

您可以使用 VBoxManage controlvm 命令在虚拟机运行时动态更改某些虚拟机设置。参见 第 8.20 节,“VBoxManage controlvm”

通用设置

VBoxManage modifyvm < uuid | vmname > [--name=name] [--groups= group [,group...] ] [--description=description] [--os-type=OS-type] [--icon-file=filename] [--memory=size-in-MB] [--page-fusion= on | off ] [--vram=size-in-MB] [--acpi= on | off ] [--ioapic= on | off ] [--hardware-uuid=UUID] [--cpus=CPU-count] [--cpu-hotplug= on | off ] [--plug-cpu=CPU-ID] [--unplug-cpu=CPU-ID] [--cpu-execution-cap=number] [--pae= on | off ] [--long-mode= on | off ] [--ibpb-on-vm-exit= on | off ] [--ibpb-on-vm-entry= on | off ] [--spec-ctrl= on | off ] [--l1d-flush-on-sched= on | off ] [--l1d-flush-on-vm-entry= on | off ] [--mds-clear-on-sched= on | off ] [--mds-clear-on-vm-entry= on | off ] [--cpu-profile= host | Intel 8086 | Intel 80286 | Intel 80386 ] [--hpet= on | off ] [--hwvirtex= on | off ] [--triple-fault-reset= on | off ] [--apic= on | off ] [--x2apic= on | off ] [--paravirt-provider= none | default | legacy | minimal | hyperv | kvm ] [--paravirt-debug= key=value [,key=value...] ] [--nested-paging= on | off ] [--large-pages= on | off ] [--vtx-vpid= on | off ] [--vtx-ux= on | off ] [--nested-hw-virt= on | off ] [--virt-vmsave-vmload= on | off ] [--accelerate-3d= on | off ] [--accelerate-2d-video= on | off ] [--chipset= ich9 | piix3 ] [--iommu= none | automatic | amd | intel ] [--tpm-type= none | 1.2 | 2.0 | host | swtpm ] [--tpm-location= location ] [--bios-logo-fade-in= on | off ] [--bios-logo-fade-out= on | off ] [--bios-logo-display-time=msec] [--bios-logo-image-path=pathname] [--bios-boot-menu= disabled | menuonly | messageandmenu ] [--bios-apic= disabled | apic | x2apic ] [--bios-system-time-offset=msec] [--bios-pxe-debug= on | off ] [--system-uuid-le= on | off ] [--bootX= none | floppy | dvd | disk | net ] [--rtc-use-utc= on | off ] [--graphicscontroller= none | vboxvga | vmsvga | vboxsvga ] [--snapshot-folder= default | pathname ] [--firmware= bios | efi | efi32 | efi64 ] [--guest-memory-balloon=size-in-MB] [--default-frontend= default | name ] [--vm-process-priority= default | flat | low | normal | high ]

以下选项使您能够修改有关 VM 的常规信息。

VBoxManage modifyvm 命令支持以下选项

--name=vmname

更改虚拟机及其相关联的内部虚拟机文件的名称。参见 第 8.9 节,“VBoxManage createvm”

--groups=group

更改虚拟机的组成员资格。组名始终以斜杠字符 (/) 开头,并且可以嵌套。默认情况下,虚拟机是 / 组的成员。虚拟机可以是多个组的成员,但其主要组决定了默认放置内部虚拟机文件的目录结构。

--description=desc

更改可选的虚拟机描述。使用描述以有意义的方式记录有关虚拟机的详细信息。GUI 解释 HTML 标记,而 VBoxManage modifyvm 命令使您能够包含可包含多行的任意字符串。

--os-type=OS-type

指定虚拟机的客户机操作系统 (OS) 信息。使用 VBoxManage list ostypes 命令查看操作系统类型标识符。

--icon-file=filename

指定主机系统上 PNG 格式的 VM 图标文件的路径。该图标显示在 VM 管理器 UI 中,并在通过 UI 运行 VM 时显示。

--memory=size

指定分配给虚拟机的内存量。大小以 MB 为单位。参见 第 1.8 节,“创建您的第一个虚拟机”

--page-fusion=on | off

启用或禁用页面融合功能,该功能默认禁用。使用页面融合功能可最大程度地减少配置相似且在同一主机系统上运行的虚拟机之间的内存重复。参见 第 4.10.2 节,“页面融合”

--vram=size

指定分配给虚拟显卡的内存量。参见 第 3.6 节,“显示设置”

--acpi=on | off

确定虚拟机是否具有 ACPI 支持。参见 第 3.5.1 节,“主板选项卡”

--ioapic=on | off

确定虚拟机是否具有 I/O APIC 支持。参见 第 3.5.1 节,“主板选项卡”

--hardware-uuid=uuid

指定呈现给客户机虚拟机(在内存表 (DMI/SMBIOS)、硬件和虚拟机属性中)的全局唯一标识符 (UUID)。默认情况下,此硬件 UUID 与虚拟机 UUID 相同。克隆虚拟机和瞬移功能会自动保留硬件 UUID 值。虚拟设备的导出和导入也是如此,但前提是这两个操作均由 Oracle VM VirtualBox 完成。

--cpus=CPU-count

指定分配给虚拟机的虚拟 CPU 数量。参见 第 3.5.2 节,“处理器选项卡”

如果启用了 CPU 热插拔,此选项指定可插入 VM 的最大虚拟 CPU 数量。

--cpu-hotplug=on | off

启用或禁用 CPU 热插拔。启用后,您可以动态地向虚拟机添加虚拟 CPU 或从虚拟机移除虚拟 CPU。参见 第 9.4 节,“CPU 热插拔”

--plug-cpu=CPU-ID

向虚拟机添加虚拟 CPU。CPU-ID 是要添加的虚拟 CPU 的索引。有效索引值为使用 --cpus 选项配置的 CPU 最大数量范围内的数字(从 0 到该最大数量)。

仅当启用 CPU 热插拔时才使用此选项。

--unplug-cpu=CPU-ID

从虚拟机移除虚拟 CPU。CPU-ID 是要移除的虚拟 CPU 的索引。有效索引值为使用 --cpus 选项配置的 CPU 最大数量范围内的数字(从 1 到该最大数量)。

仅当启用 CPU 热插拔时才使用此选项。

请注意,不能移除 CPU 0。

--cpuexectioncap=percentage

指定虚拟 CPU 可以使用的 CPU 时间量。有效值为 1100。值 50 表示单个虚拟 CPU 最多可以使用单个主机 CPU 的 50%。

请谨慎使用此功能,它可能会产生意想不到的结果,包括时间保持问题和低于指定性能。如果您想限制虚拟机的资源使用,选择适当数量的 VCPU 更可靠。

--pae=on | off

启用或禁用物理地址扩展 (PAE)。参见 第 3.5.2 节,“处理器选项卡”

--long-mode=on | off

启用或禁用长模式。参见 第 3.5.2 节,“处理器选项卡”

--ibpb-on-vm-exit=on | off

在每次 VM 退出时启用使用间接分支预测屏障 (IBPB)。

--ibpb-on-vm-entry=on | off

在每次 VM 进入时启用使用间接分支预测屏障 (IBPB)。

--spec-ctrl=on | off

启用或禁用向客户机 VM 公开推测控制接口。这些接口必须在主机系统上可用。

根据主机 CPU 和工作负载,启用推测控制可能会显著降低性能。

--l1d-flush-on-sched=on | off

启用或禁用当线程计划执行客户机代码时级别 1 数据缓存的刷新。参见 第 13.4.1 节,“CVE-2018-3646”

--l1d-flush-on-vm-entry=on | off

启用或禁用在每次虚拟机进入时级别 1 数据缓存的刷新。参见 第 13.4.1 节,“CVE-2018-3646”

--mds-clear-on-sched=on | off

启用当线程计划执行客户机代码时 CPU 缓冲区的清除。参见 第 13.4.2 节,“CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091”

--mds-clear-on-vm-entry=on | off

启用在每次虚拟机进入时 CPU 缓冲区的清除。参见 第 13.4.2 节,“CVE-2018-12126, CVE-2018-12127, CVE-2018-12130, CVE-2019-11091”

--cpu-profile=host | Intel 8086 | Intel 80286 | Intel 80386

指定用于客户机 CPU 仿真的配置文件。指定基于主机系统 CPU (host) 或以下较旧的 Intel 微体系结构之一的值:80868028680386

--hpet=on | off

启用或禁用高精度事件计时器 (HPET),它可以替换旧版系统计时器。此功能默认情况下是禁用的。请注意,HPET 在 Vista 及更高版本的 Windows 上受支持。

--hwvirtex=on | off

启用或禁用在主机系统处理器中使用硬件虚拟化扩展。此类扩展包括 Intel VT-x 或 AMD-V。参见 第 10.3 节,“硬件虚拟化”

--triple-fault-reset=on | off

启用或禁用客户机虚拟机复位,而不是触发 Guru Meditation。某些客户机虚拟机引发三重故障以复位 CPU,因此有时复位客户机虚拟机是最佳结果。此选项仅适用于不使用对称多处理 (SMP) 的客户机。

--apic=on | off

启用或禁用 APIC。使用 APIC,操作系统可以使用超过 16 个中断请求 (IRQ) 来避免 IRQ 共享并提高可靠性。APIC 默认启用。参见 第 3.5.1 节,“主板选项卡”

--x2apic=on | off

启用或禁用 CPU x2APIC 功能。CPU x2APIC 使操作系统能够在高核心计数配置上更高效地运行,并优化虚拟化环境中的中断分配。此功能默认情况下是启用的。

当在主机系统或客户机 VM 上运行的操作系统与 CPU x2APIC 不兼容时,请禁用此功能。

--paravirt-provider=none | default | legacy | minimal | hyperv | kvm

指定向客户机操作系统提供以下准虚拟化接口之一:

  • none 不公开任何半虚拟化接口。

  • default 在启动虚拟机时根据客户机操作系统类型选择适当的接口。这是创建新虚拟机时使用的默认值。

  • legacy 为由较旧的 Oracle VM VirtualBox 版本创建的虚拟机选择半虚拟化接口。

  • minimal 是 Mac OS X 客户机虚拟机必需的。

  • kvm 建议用于 Linux 客户机虚拟机。参见 第 10.5 节,“半虚拟化提供程序”

  • hyperv 建议用于 Windows 客户机虚拟机。参见 第 10.5 节,“半虚拟化提供程序”

--paravirt-debug=property=value

指定特定于为指定虚拟机配置的半虚拟化提供程序的调试属性。参见 第 9.30 节,“半虚拟化调试”

--nested-paging=on | off

启用或禁用主机系统处理器中的嵌套分页功能。此选项仅在硬件虚拟化启用时可用。参见 第 10.3 节,“硬件虚拟化”第 13.4.1 节,“CVE-2018-3646”

--large-pages=on | off

启用或禁用管理程序使用大页面,这可以提高性能高达 5%。使用大页面可减少 TLB 使用和开销。此选项仅在同时启用硬件虚拟化和嵌套分页时可用。

--vtx-vpid=on | off

启用或禁用在主机系统处理器中使用标记 TLB (VPID) 功能。参见 第 10.3 节,“硬件虚拟化”。此选项仅当 Intel VT-x 上启用硬件虚拟化时才可用。

--vtx-ux=on | off

启用或禁用使用无限制客户机模式执行客户机 VM。此选项仅在 Intel VT-x 上启用硬件虚拟化时可用。

--nested-hw-virt=on | off

启用或禁用嵌套虚拟化。启用后,硬件虚拟化功能可用于虚拟机。参见 第 9.34 节,“嵌套虚拟化”

--virt-vmsave-vmload=on | off

如果硬件虚拟化已启用且主机具有 AMD CPU,则此设置启用或禁用在执行虚拟机时使用虚拟化的 vmsave/vmload 主机功能。它默认启用。建议保持启用,因为它在使用嵌套硬件虚拟化功能时对执行嵌套虚拟机的性能有巨大影响。第 9.34 节,“嵌套虚拟化”

--accelerate-3d=on | off

启用或禁用支持硬件 3D 加速的显卡变体。此选项仅在安装了增强功能时才生效。参见 第 4.5.1 节,“硬件 3D 加速 (OpenGL 和 Direct3D 8/9)”

--accelerate-2d-video=on | off

启用或禁用支持 2D 视频加速的显卡变体。此选项仅在安装了增强功能时才生效。参见 第 4.5.2 节,“适用于 Windows 客户机的硬件 2D 视频加速”

--chipset=piix3 | ich9

指定 Oracle VM VirtualBox 要仿真的 Intel 芯片组。默认值为 Intel PIIX3 芯片组 (piix3)。

仅当您需要放宽某些芯片组限制时才更改此值。参见 第 3.5.1 节,“主板选项卡”

--iommu=none | automatic | amd | intel

指定 Oracle VM VirtualBox 要仿真的 IOMMU 类型。Intel 和 AMD IOMMU 仿真当前都要求使用 Intel ICH9 芯片组(参见 --chipset 选项)。

有效值如下:

  • none – 不存在 IOMMU,这是默认值。

  • automatic – 存在 IOMMU,但其类型在虚拟机通电时自动选择以匹配主机 CPU 供应商。

  • amd – 存在 AMD IOMMU。

  • intel – 存在 Intel IOMMU。

--tpm-type=none | 1.2 | 2.0 | host | swtpm

指定 Oracle VM VirtualBox 要仿真的 TPM 类型。

有效值如下:

  • none – 不存在 TPM,这是默认值。

  • 1.2 – 存在符合 TCG 规范版本 1.2 的 TPM。

  • 2.0 – 存在符合 TCG 规范版本 2.0 的 TPM。

  • host – 主机 TPM 透传到客户机。可能并非在所有受支持的主机平台上都可用。

  • swtpm – 虚拟机连接到符合 swtpm 的外部 TPM 仿真。需要设置要连接的 TPM 位置(参见 --tpm-location 选项)。

--bios-logo-fade-in=on | off

指定 BIOS 徽标是否在虚拟机启动时淡入。默认情况下,显示 Oracle VM VirtualBox 徽标。

--bios-logo-fade-out=on | off

指定 BIOS 徽标是否在 VM 启动时淡出。

--bios-logo-display-time=msec

指定 BIOS 徽标可见的毫秒数。

--bios-logo-image-path=pathname

使用不同的图像替换现有 BIOS 徽标。替换图像必须是未压缩的 16、256 或 16M 色位图文件 (BMP),且不包含颜色空间信息(Windows 3.0 格式)。此外,请确保图像不大于 640 X 480 像素。

--bios-boot-menu=disabled | menuonly | messageandmenu

指定 BIOS 是否允许您选择临时引导设备。有效值包括:

  • disabled 输出备用引导设备消息,并允许您通过按 F12 选择临时引导设备。

  • menuonly 抑制备用引导设备消息,但允许您通过按 F12 选择临时引导设备。

  • messageandmenu 抑制备用引导设备消息并阻止您通过按 F12 选择临时引导设备。

--bios-apic=x2apic | apic | disabled

指定固件的 APIC 级别。有效值为:x2apicapicdisabled。当值为 disabled 时,不使用固件的 apicx2apic 版本。

请注意,如果您指定 x2apic 值,而虚拟 CPU 不支持 x2APIC,则 APIC 级别将降级为 apic(如果支持)。否则,APIC 级别将降级为 disabled。类似地,如果您指定 apic 值,而虚拟 CPU 不支持 APIC,则 APIC 级别将降级为 disabled

--bios-system-time-offset=msec

指定客户机 VM 相对于主机系统时间的毫秒级时间偏移量。如果偏移值为正,则客户机 VM 时间将比主机系统时间快。

--bios-pxe-debug=on | off

启用或禁用使用 Intel PXE 引导 ROM 时的附加调试输出。调试输出将写入发布日志文件。参见 第 12.1.2 节,“收集调试信息”

--system-uuid-le=on | off

启用或禁用以小端形式表示系统 UUID。新虚拟机的默认值为 on。对于旧虚拟机,此设置通常为 off 以保持 DMI/SMBIOS 表的内容不变,这对于 Windows 许可证激活可能很重要。

--bootN=none | floppy | dvd | disk | net

使您能够通过将其中一种设备类型分配给选项名称中由 N 表示的四个引导设备插槽中的每一个,来指定虚拟机的引导设备顺序。

N 的值 1 表示第一个引导设备插槽,依此类推。

设备类型为:floppy(软盘)、dvd(DVD 或 CD)、disk(硬盘)和 net(网络设备)。none 值表示没有引导设备与指定插槽关联。

--rtc-use-utc=on | off

指定实时时钟 (RTC) 是否使用协调世界时 (UTC)。参见 第 3.5.1 节,“主板选项卡”

--graphicscontroller=none | vboxvga | vmsvga | vboxsvga

指定要使用的显卡控制器类型。参见 第 3.6.1 节,“屏幕选项卡”

--snapshot-folder=default | pathname

指定虚拟机快照存储文件夹的名称。如果指定 default,则文件夹名称为虚拟机文件夹中的 Snapshots/

--firmware=bios | efi | efi32 | efi64

指定用于引导虚拟机的固件。有效值为:biosefiefi32efi64。请谨慎使用 EFI 值。

默认情况下,使用 BIOS 固件。

--guest-memory-balloon=size

指定客户机内存气球的大小。客户机内存气球是增强功能从客户机操作系统分配并返回给虚拟机管理程序供其他虚拟机使用的内存。以兆字节为单位指定 size。默认值为 0 兆字节。参见 第 4.10.1 节,“内存气球”

--default-frontend=default | name

指定启动指定虚拟机时要使用的默认前端。如果指定 default,则虚拟机将显示在用户桌面上的一个窗口中。参见 第 8.19 节,“VBoxManage startvm”

--vm-process-priority=default | flat | low | normal | high

指定启动指定 VM 和 VM 运行期间要使用的 VM 进程的优先级方案。

以下是有效值:

  • default – 由操作系统确定的默认进程优先级。

  • flat – 假定一种调度策略,将进程置于默认优先级,并且所有线程都处于相同优先级。

  • low – 假定一种调度策略,将进程大部分置于主机操作系统的默认优先级之下。

  • normal – 假定一种调度策略,将 CPU 资源与主机操作系统默认优先级下运行的其他进程公平共享。

  • high – 假定一种调度策略,将任务置于主机操作系统默认优先级之上。此策略可能会轻易导致系统中其他任务资源不足。

网络设置

VBoxManage modifyvm < uuid | vmname > [--nicN= none | null | nat | bridged | intnet | hostonly | hostonlynet | generic | natnetwork | cloud ] [--nic-typeN= Am79C970A | Am79C973 | 82540EM | 82543GC | 82545EM | virtio ] [--cable-connectedN= on | off ] [--nic-traceN= on | off ] [--nic-trace-fileN=filename] [--nic-propertyN=name= [value]] [--nic-speedN=kbps] [--nic-boot-prioN=priority] [--nic-promiscN= deny | allow-vms | allow-all ] [--nic-bandwidth-groupN= none | name ] [--bridge-adapterN= none | device-name ] [--cloud-networkN=network-name] [--host-only-adapterN= none | device-name ] [--host-only-netN=network-name] [--intnetN=network-name] [--nat-networkN=network-name] [--nic-generic-drvN=driver-name] [--mac-addressN= auto | MAC-address ]

以下选项使您能够修改虚拟机上的网络。对于所有这些选项,N 是一个大于零的整数,表示要配置的特定虚拟网卡。

--nicN=none | null | nat | natnetwork | bridged | intnet | hostonly | generic

配置 VM 中每个虚拟网卡使用的网络类型。

以下有效值对应于 第 6.2 节,“网络模式简介”中描述的模式

  • none – 不存在网络

  • null – 未连接到主机系统

  • nat – 使用网络地址转换 (NAT)

  • natnetwork – 使用 NAT 网络

  • bridged – 使用桥接网络

  • intnet – 使用内部网络

  • hostonly – 使用仅主机网络

  • generic – 访问不常用的子模式

--nic-typeN=Am79C970A | Am79C973 | 82540EM | 82543GC | 82545EM | virtio

标识 Oracle VM VirtualBox 为指定的虚拟网卡呈现给客户机虚拟机的网络硬件类型。参见 第 6.1 节,“虚拟网络硬件”

有效值如下:

  • Am79C970A 代表 AMD PCNet PCI II。

  • Am79C973 代表 AMD PCNet FAST III,它是默认值。

  • 82540EM 代表 Intel PRO/1000 MT Desktop。

  • 82543GC 代表 Intel PRO/1000 T Server。

  • 82545EM 代表 Intel PRO/1000 MT Server。

  • virtio 代表半虚拟化网卡。

--cable-connectedN=on | off

临时断开虚拟网络接口,就像您从物理网卡中拔出网线一样。您可以使用此选项重置 VM 中的某些软件组件。

--nic-traceN=on | off

启用或禁用指定虚拟网卡的网络跟踪。

--nic-trace-fileN=filename

指定要写入跟踪日志信息的文件绝对路径。如果启用了网络跟踪,请使用此选项。

--nic-propertyN=name=value

使您能够设置属性值并将其传递给不常用的网络后端。要使用此选项,您还必须使用 --nic-generic-drv 选项。

这些属性特定于后端引擎,并且在 UDP 隧道和 VDE 后端驱动程序之间有所不同。有关属性示例,请参见 第 6.8 节,“UDP 隧道网络”

--nic-speedN=kbps

指定不常用的网络子模式(例如 VDE 网络和 UDP 隧道)的每秒千比特吞吐率。仅当您使用 --nic 选项为指定的虚拟网卡启用通用网络时才使用此选项。

--nic-boot-prioN=priority

为每个网卡分配一个优先级,该优先级决定该网卡执行 PXE 网络引导的顺序。优先级值是 04 范围内的整数。优先级 0(默认值)是最低优先级。优先级 1 是最高优先级,优先级 34 较低。

此选项仅在使用 Intel PXE 引导 ROM 时有效。

--nic-promiscN=deny | allow-vms | allow-all

使您能够指定是否拒绝或允许指定 VM 虚拟网卡的混杂模式。此选项仅与桥接网络相关。有效值如下:

  • deny 隐藏任何不用于虚拟机的流量。这是默认值。

  • allow-vms 隐藏所有主机流量,使其不被虚拟机看到,但允许虚拟机查看与其他虚拟机之间的流量。

  • allow-all 允许虚拟机查看所有流量。

--nic-bandwidth-groupN=none | name

向指定的虚拟网络接口添加或移除带宽组分配。有效值如下:

  • none 从指定的虚拟网卡移除任何当前带宽组分配。

  • name 向指定的虚拟网卡添加带宽组分配。

参见 第 6.12 节,“限制网络输入/输出的带宽”

--bridge-adapterN=none | device-name

指定用于指定虚拟网卡的主机接口。参见 第 6.5 节,“桥接网络”。仅当您使用 --nic 选项为指定的虚拟网卡启用桥接网络时才使用此选项。

--host-only-adapterN=none | device-name

指定用于指定虚拟网卡的仅主机网络接口。参见 第 6.7 节,“仅主机网络”。仅当您使用 --nic 选项为指定的虚拟网卡启用仅主机网络时才使用此选项。

--intnetN=network-name

指定内部网络的名称。参见 第 6.6 节,“内部网络”。仅当您使用 --nic 选项为指定的虚拟网卡启用内部网络时才使用此选项。

--nat-networkN=network-name

指定此网卡连接到的 NAT 网络的名称。仅当网络类型为 natnetwork 而不是 nat 时才使用此选项。

--nic-generic-drvN=backend-driver

使您能够访问不常用的网络子模式,例如 VDE 网络和 UDP 隧道。仅当您使用 --nic 选项为虚拟网卡启用通用网络时才使用此选项。

--mac-addressN=auto | MAC-address

指定虚拟机上指定网卡的 MAC 地址。默认情况下,Oracle VM VirtualBox 在虚拟机创建时为每个网卡分配一个随机 MAC 地址。

NAT 网络设置

VBoxManage modifyvm < uuid | vmname > [--nat-netN= network | default ] [--nat-pfN= [rule-name],tcp | udp,[host-IP],hostport,[guest-IP],guestport ] [--nat-pfN=delete=rule-name] [--nat-tftp-prefixN=prefix] [--nat-tftp-fileN=filename] [--nat-tftp-serverN=IP-address] [--nat-bind-ipN=IP-address] [--nat-dns-pass-domainN= on | off ] [--nat-dns-proxyN= on | off ] [--nat-dns-host-resolverN= on | off ] [--nat-localhostreachableN= on | off ] [--nat-settingsN=[mtu],[socksnd],[sockrcv],[tcpsnd],[tcprcv]] [--nat-alias-modeN= default | [log],[proxyonly],[sameports] ]

以下选项使用 N 来指定要修改的特定虚拟网卡。

--nat-netN=default | network

指定此网络要使用的 IP 地址范围。参见 第 9.8 节,“精细调整 Oracle VM VirtualBox NAT 引擎”。仅当网络类型为 nat 而不是 natnetwork 时才使用此选项。

--nat-pfN=[name],tcp | udp,[host-IP],hostport,[guest-IP],guestport

指定要使用的 NAT 端口转发规则。参见 第 6.3.1 节,“使用 NAT 配置端口转发”

--nat-pfN=delete name

指定要删除的 NAT 端口转发规则。请参阅第 6.3.1 节,“配置带 NAT 的端口转发”

--nat-tftp-prefixN=prefix

指定用于内置 TFTP 服务器的前缀。例如,您可以使用前缀来指示引导文件的位置。请参阅第 6.3.2 节,“使用 NAT 进行 PXE 引导”第 9.8.2 节,“配置 NAT 网络接口的引导服务器 (Next Server)”

--nat-tftp-fileN=boot-file

指定 TFTP 引导文件的名称。请参阅第 9.8.2 节,“配置 NAT 网络接口的引导服务器 (Next Server)”

--nat-tftp-serverN=tftp-server

指定要从中引导的 TFTP 服务器的地址。请参阅第 9.8.2 节,“配置 NAT 网络接口的引导服务器 (Next Server)”

--nat-bind-ipN=IP-address

指定 NAT 引擎绑定到的备用 IP 地址。请参阅第 9.8.3 节,“调整 NAT 的 TCP/IP 缓冲区”。默认情况下,Oracle VM VirtualBox 的 NAT 引擎通过主机 TCP/IP 堆栈分配的默认接口路由 TCP/IP 数据包。

--nat-dns-pass-domainN=on | off

指定内置 DHCP 服务器是否传递用于网络名称解析的域名。

--nat-dns-proxyN=on | off

指定 NAT 引擎是否作为所有客户机 DNS 请求到主机系统 DNS 服务器的代理。请参阅第 9.8.5 节,“在 NAT 模式下启用 DNS 代理”

--nat-dns-host-resolverN=on | off

指定 NAT 引擎是否使用主机系统的解析器机制来处理 DNS 请求。请参阅第 9.8.5 节,“在 NAT 模式下启用 DNS 代理”

--nat-localhostreachableN=on | off

指定 NAT 引擎是否允许从客户机定向到 10.0.2.2 的流量传递到主机的环回接口,即 localhost 或 127.0.0.1。

--nat-settingsN=[mtu],[socksnd],[sockrcv],[tcpsnd],[tcprcv]

指定用于调整 NAT 性能的值。请参阅第 9.8.3 节,“调整 NAT 的 TCP/IP 缓冲区”

--nat-alias-modeN=default | [log],[proxyonly],[sameports]

指定 NAT 引擎核心的行为如下:

  • log 启用日志记录

  • proxyonly 关闭别名模式并使 NAT 透明

  • sameports 强制 NAT 引擎通过其发起的同一端口发送数据包

  • default 禁用所有别名模式

有关更多信息,请参阅第 9.8.7 节,“配置 NAT 引擎的别名”

其他硬件设置

VBoxManage modifyvm < uuid | vmname > [--mouse= ps2 | usb | usbtablet | usbmultitouch | usbmtscreenpluspad ] [--keyboard= ps2 | usb ] [--uartN= off | IO-baseIRQ ] [--uart-modeN= disconnected | server pipe | client pipe | tcpserver port | tcpclient hostname:port | file filename | device-name ] [--uart-typeN= 16450 | 16550A | 16750 ] [--lpt-modeN=device-name] [--lptN= off | IO-baseIRQ ] [--audio-controller= ac97 | hda | sb16 ] [--audio-codec= stac9700 | ad1980 | stac9221 | sb16 ] [--audio-driver= none | default | null | dsound | was | oss | alsa | pulse | coreaudio ] [--audio-enabled= on | off ] [--audio-in= on | off ] [--audio-out= on | off ] [--clipboard-mode= disabled | hosttoguest | guesttohost | bidirectional ] [--drag-and-drop= disabled | hosttoguest | guesttohost | bidirectional ] [--monitor-count=number] [--usb-ehci= on | off ] [--usb-ohci= on | off ] [--usb-xhci= on | off ] [--usb-rename=old-namenew-name]

以下选项使您能够配置其他硬件,例如串行端口、显示器、音频设备、USB 端口以及剪贴板和拖放功能。

--mouse=ps2 | usb | usbtablet | usbmultitouch | usbmtscreenpluspad

指定在 VM 中使用的鼠标模式。有效值为:ps2usbusbtabletusbmultitouchusbmtscreenpluspad

--keyboard=ps2 | usb

指定在 VM 中使用的键盘模式。有效值为:ps2usb

--uartN=off | I/O-baseIRQ

为 VM 配置虚拟串行端口。N 表示要修改的串行端口。有效值为 off(禁用端口)或 I/O 基地址和 IRQ。有关传统 COM 端口 I/O 基地址和 IRQ 值的信息,请参阅第 3.10 节,“串行端口”

--uart-modeN=mode

指定 Oracle VM VirtualBox 如何将指定的虚拟串行端口连接到运行 VM 的主机系统。请参阅第 3.10 节,“串行端口”

请确保首先使用 --uartN 选项配置虚拟串行端口。

为每个端口指定以下连接模式之一

  • disconnected 表示即使串行端口显示给客户机 VM,它也没有连接。此状态类似于没有连接电缆的物理 COM 端口。

  • serverpipe-name 在主机系统上创建指定的命名管道或本地域套接字,并将虚拟串行设备连接到它。

    在 Windows 主机系统上,pipe-name 是一个命名管道,其名称使用以下形式:\\.\pipe\pipe-name

    在 Linux 主机系统上,pipe-name 是一个本地域套接字。

  • clientpipe-name 将虚拟串行设备连接到指定的命名管道或本地域套接字。

    请注意,命名管道或本地域套接字必须已经存在。

  • tcpserverport 在主机系统上创建具有指定 TCP 端口的 TCP 套接字,并将虚拟串行设备连接到它。

    对于类 UNIX 系统,非 root 用户请使用 1024 以上的端口。

  • tcpclienthostname:port 将虚拟串行设备连接到 TCP 套接字。

    请注意,TCP 套接字必须已经存在。

  • filefilename 将串行端口输出重定向到指定的原始文件。请确保filename 是主机系统上文件的绝对路径。

  • device-name: 指定连接虚拟串行端口的指定主机系统上物理硬件串行端口的设备名称。

    使用此模式将物理串行端口连接到 VM。

    在 Windows 主机系统上,设备名称是 COM 端口,例如 COM1。在 Linux 主机系统上,设备名称类似于 /dev/ttyS0

--uart-typeN=UART-type

配置指定虚拟串行端口 (N) 的 UART 类型。有效值为 1645016550A16750。默认值为 16550A

--lpt-modeN=device-name

指定要使用的并行端口的设备名称。

对于 Windows 主机系统,请使用设备名称,例如 lpt1。对于 Linux 主机系统,请使用设备名称,例如 /dev/lp0

--lptN=I/O-baseIRQ

指定并行端口的 I/O 基地址和 IRQ。

您可以在设备管理器中查看 VM 用于并行端口的 I/O 基地址和 IRQ。

--audio-controller=controller-type

指定要与 VM 一起使用的音频控制器。有效的音频控制器类型值为:ac97hdasb16

--audio-codec=codec-type

指定要与 VM 一起使用的音频编解码器。有效的音频编解码器类型值为:stac9700ad1980stac9221sb16

--audio-driver=type

指定要使用哪个音频驱动程序(后端)。nonedefaultnulldsoundwasossalsapulsecoreaudio

请注意,音频驱动程序取决于主机操作系统。使用 VBoxManage modifyvm 命令的用法输出来确定主机系统支持的音频类型。

为了在主机之间实现最大互操作性,可以使用默认音频驱动程序。VM 将自动为当前可用的主机选择最合适的音频驱动程序。

--audio-enabled=on|off

指定是否为 VM 启用或禁用音频。

此选项优先于 --audio-on 和 --audio-off 选项,即通过此选项关闭音频将同时关闭输入和输出音频。

--audio-in=on|off

指定是否启用或禁用从主机系统捕获音频。

--audio-out=on|off

指定是否启用或禁用从客户机 VM 播放音频。

--clipboard-mode=value

指定如何分别与主机系统或客户机 VM 共享客户机 VM 或主机系统操作系统的剪贴板。有效值为:disabledhosttoguestguesttohostbidirectional。请参阅第 3.4 节,“通用设置”

剪贴板功能仅在 VM 中安装了 Guest Additions 时可用。

--drag-and-drop=value

指定如何在主机系统和 VM 之间使用拖放功能。有效值为:disabledhosttoguestguesttohostbidirectional。请参阅第 4.4 节,“拖放”

拖放功能仅在 VM 中安装了 Guest Additions 时可用。

--monitor-count=count

使您能够配置多个监视器。请参阅第 3.6 节,“显示设置”

--usb-ohci=on | off

启用或禁用 VM 的虚拟 USB 1.1 控制器。请参阅第 3.11.1 节,“USB 设置”

--usb-ehci=on | off

启用或禁用 VM 的虚拟 USB 2.0 控制器。请参阅第 3.11.1 节,“USB 设置”

--usb-xhci=on | off

启用或禁用 VM 的虚拟 USB 3.0 控制器。如果 VM 支持,这是最有效的选项。请参阅第 3.11.1 节,“USB 设置”

--usb-rename=old-namenew-name

将 VM 的虚拟 USB 控制器从old-name重命名为new-name

录制设置

VBoxManage modifyvm < uuid | vmname > [--recording= on | off ] [--recording-screens= all | none | screen-ID[,screen-ID...] ] [--recording-file=filename] [--recording-max-size=MB] [--recording-max-time=msec] [--recording-opts= key=value[,key=value...] ] [--recording-video-fps=fps] [--recording-video-rate=rate] [--recording-video-res=widthheight]

以下选项使您能够修改视频录制、音频录制或两者的设置。

--recording=on | off

启用或禁用将 VM 会话录制为 WebM 或 VP8 文件。设置为 on 时,录制在 VM 会话开始时开始。

--recording-screens=all | none | screen-ID[,screen-ID...

使您能够指定要录制的 VM 屏幕。每个屏幕的录制内容输出到自己的文件。有效值为:all(录制所有屏幕)、none(不录制任何屏幕),或一个或多个指定的屏幕。

--recording-file=filename

指定保存录制内容的文件名。

--recording-max-size=MB

指定录制视频文件的最大大小(以兆字节为单位)。当文件达到指定大小时,录制停止。如果值为 0,则录制继续直到您手动停止录制。

--recording-max-time=seconds

指定最大录制时间(以秒为单位)。当指定时间过去后,录制停止。如果值为 0,则录制继续直到您手动停止录制。

--recording-opts=keyword=value

将其他视频录制属性指定为逗号分隔的属性关键字-值列表。例如,foo=bar,a=b

仅当您是高级用户时才使用此选项。有关关键字的信息,请参阅《Oracle VM VirtualBox 编程指南和参考》。

--recording-video-fps=fps

指定要录制的最大视频帧/秒 (FPS)。录制会忽略任何频率更高的帧。当您增加 FPS 时,忽略的帧数会减少,但录制和录制文件的大小会增加。

--recording-video-rate=bit-rate

指定视频的比特率(以千比特/秒为单位)。当您增加比特率时,录制外观会改善,录制文件的大小会增加。

--recording-video-res=widthxheight

指定录制视频的视频分辨率(宽度和高度,以像素为单位)。

远程计算机设置

VBoxManage modifyvm < uuid | vmname > [--vrde= on | off ] [--vrde-property=property-name= [property-value]] [--vrde-extpack= default | name ] [--vrde-port=port] [--vrde-address=hostip] [--vrde-auth-type= null | external | guest ] [--vrde-auth-library= default | name ] [--vrde-multi-con= on | off ] [--vrde-reuse-con= on | off ] [--vrde-video-channel= on | off ] [--vrde-video-channel-quality=percent]

以下选项使您能够修改 VirtualBox 远程桌面扩展 (VRDE) 行为。

--vrde=on | off

启用或禁用 VRDE 服务器。

--vrde-property=TCP/Ports=port

port 是 VRDE 服务器绑定的端口或端口范围。default0 值使用端口 3389,这是标准 RDP 端口。

另请参阅 --vrde-port 选项说明。

--vrde-property=TCP/Address=IP-address

IP-address 是 VRDE 服务器绑定的主机网络接口的 IP 地址。指定时,服务器仅接受该 IP 地址处主机网络接口上的连接。

另请参阅 --vrde-address 选项说明。

--vrde-property=VideoChannel/Enabled=value

指定 VRDP 视频通道是启用还是禁用。1 表示 on0 表示 off。请参阅第 7.1.9 节,“VRDP 视频重定向”

--vrde-property=Quality=value

指定一个介于 10% 到 100%(含)之间的值,表示 VRDE 服务器视频通道上的 JPEG 压缩级别。较低的值会产生较低的 JPEG 质量但较高的压缩。请参阅第 7.1.9 节,“VRDP 视频重定向”

--vrde-property=DownscaleProtection=value

启用或禁用视频缩小保护功能。有效值为 1(启用此功能)和 0(禁用此功能)。

启用此功能后,Oracle VM VirtualBox 会确定是否显示视频

  • 当视频大小等于影子缓冲区的大小时,视频被视为全屏并显示。

  • 当视频大小介于全屏和缩小阈值之间时,视频不显示。此类视频可能是应用程序窗口,缩小后无法阅读。

禁用此功能时,总是尝试显示视频。

--vrde-property=Client/DisableDisplay=1

禁用显示 VRDE 服务器功能。

要重新启用功能,请分配空值。例如,要重新启用显示功能,请指定 VBoxManage modifyvm --vrde-property=Client/DisableDisplay= 命令。请参阅第 7.1.10 节,“VRDP 自定义”

--vrde-property=DisableInput=1

禁用输入 VRDE 服务器功能。

--vrde-property=DisableAudio=1

禁用音频 VRDE 服务器功能。

--vrde-property=DisableUSB=1

禁用 USB VRDE 服务器功能。

--vrde-property=Client/DisableClipboard=1

禁用剪贴板 VRDE 服务器功能。要重新启用此功能,请分配空值。请参阅第 7.1.10 节,“VRDP 自定义”

--vrde-property=DisableUpstreamAudio=1

禁用上游音频 VRDE 服务器功能。要重新启用此功能,请分配空值。请参阅第 7.1.10 节,“VRDP 自定义”

--vrde-property=Client/DisableRDPDR=1

禁用智能卡的 RDP 设备重定向 VRDE 服务器功能。要重新启用此功能,请分配空值。

--vrde-property=H3DRedirect/Enabled=1

启用 3D 重定向 VRDE 服务器功能。要禁用此功能,请分配空值。

--vrde-property=Security/Method=value

指定连接所需的以下信息

  • Negotiate 表示允许增强型 (TLS) 和标准 RDP 安全连接。安全方法与客户端协商。这是默认值。

  • RDP 表示仅接受标准 RDP 安全。

  • TLS 表示仅接受增强型 RDP 安全。客户端必须支持 TLS。

请参阅第 7.1.6 节,“RDP 加密”

--vrde-property=ServerCertificate=value

指定服务器证书的绝对路径。请参阅第 7.1.6 节,“RDP 加密”

--vrde-property=ServerPrivateKey=value

指定服务器私钥的绝对路径。请参阅第 7.1.6 节,“RDP 加密”

--vrde-property=CACertificate=value

指定 CA 自签名证书的绝对路径。请参阅第 7.1.6 节,“RDP 加密”

--vrde-property Audio/RateCorrectionMode=value

指定音频连接模式或音频日志文件的路径。有效值如下

  • VRDP_AUDIO_MODE_VOID 表示无模式。使用此值取消设置任何已设置的音频模式。

  • VRDP_AUDIO_MODE_RC 是速率校正模式。

  • VRDP_AUDIO_MODE_LPF 是低通滤波器模式。

  • VRDP_AUDIO_MODE_CS 是客户端同步模式,用于防止客户端队列下溢或溢出。

--vrde-property=LogPath=value

指定音频日志文件的绝对路径。

--vrde-extpack=default | name

指定用于远程访问 VM 的库。default 值使用 Oracle VM VirtualBox Extension Pack 中的 RDP 代码。

要在 VNC 中使用 VRDE 模块,请指定 VNC。请参阅第 9.20 节,“其他扩展包”

--vrde-port=default | port

port 是 VRDE 服务器绑定的端口或端口范围。default0 值使用端口 3389,这是标准 RDP 端口。

您可以指定一个逗号分隔的端口列表或端口范围。使用连字符分隔两个端口号以指定端口范围。VRDE 服务器仅绑定到列表中的一个可用端口。一次只能一台计算机使用给定端口。例如,--vrde-port=5000,5010-5012 选项指定服务器可以绑定到以下端口之一:5000501050115012

--vrde-address=IP-address

指定 VRDE 服务器绑定的主机网络接口的 IP 地址。如果指定 IP 地址,服务器仅接受指定主机网络接口上的连接。

使用此选项指定 VRDP 服务器是否应接受 IPv4、IPv6 或两种类型的连接

  • 仅 IPv4: 使用 --vrde-address="0.0.0.0" 选项。

  • 仅 IPv6: 使用 --vrde-address="::" 选项。

  • IPv6 和 IPv4: 使用 --vrde-address="" 选项。这是默认值。

--vrde-auth-type=null | external | guest

指定是否使用授权以及如何执行授权。请参阅第 7.1.5 节,“RDP 身份验证”。有效值如下

  • null 提供无身份验证。

  • external 通过身份验证库提供外部身份验证。

  • guest 使用客户机用户帐户执行身份验证。此不支持的方法要求您在 VM 上安装 Guest Additions。

--vrde-auth-library=default | name

指定用于 RDP 身份验证的库。外部身份验证的默认库是 VBoxAuth。请参阅第 7.1.5 节,“RDP 身份验证”

--vrde-multi-con=on | off

启用或禁用多连接 VRDE 服务器功能(如果支持)。请参阅第 7.1.7 节,“与 VRDP 服务器的多个连接”

--vrde-reuse-con=on | off

指定禁用多连接时 VRDE 服务器的行为。当值为 on 时,服务器允许新客户端连接并断开现有连接。当值为 off 时,如果客户端已连接到服务器,则不接受新连接。这是默认值。

--vrde-video-channel=on | off

如果 VRDE 服务器支持,则启用视频重定向。请参阅第 7.1.9 节,“VRDP 视频重定向”

--vrde-video-channel-quality=percent

指定视频重定向的图像质量,值为 10 到 100%。百分比表示 JPEG 压缩级别,其中较低的数字会降低质量并提供更高的压缩。请参阅第 7.1.9 节,“VRDP 视频重定向”

远程传送设置

VBoxManage modifyvm < uuid | vmname > [--teleporter= on | off ] [--teleporter-port=port] [--teleporter-address= address | empty ] [--teleporter-password=password] [--teleporter-password-file= filename | stdin ] [--cpuid-portability-level=level] [--cpuid-set=leaf [:subleaf]eaxebxecxedx] [--cpuid-remove=leaf [:subleaf]] [--cpuid-remove-all]

以下选项使您能够将计算机配置为远程传送目标。请参阅第 7.2 节,“远程传送”以及第 13.3.4 节,“潜在不安全操作”中与远程传送相关的条目。

--teleporter=on | off

启用或禁用远程传送器。启用后,计算机将启动并等待从网络接收远程传送请求,而不是正常启动。

远程传送请求在以下参数指定的端口和地址上接收。

--teleporter-port=port

指定 VM 侦听以接收来自另一个 VM 的远程传送请求的端口。port 是任意空闲的 TCP/IP 端口号,例如 6000。您还必须指定 --teleporter 选项。

--teleporter-address=IP-address

指定 VM 侦听以接收来自另一个 VM 的远程传送请求的 IP 地址。IP-address 是任意 IP 地址或主机名,并指定要绑定的 TCP/IP 套接字。默认 IP 地址是 0.0.0.0,表示任意 IP 地址。您还必须指定 --teleporter 选项。

--teleporter-password=password

指定用于身份验证的密码。指定后,只有当源计算机上的密码与您指定的密码相同时,远程传送请求才会成功。

--teleporter-password-file=filename

指定包含用于身份验证的密码的文件。指定后,只有当源计算机上的密码与您在密码文件中指定的密码相同时,远程传送请求才会成功。stdin 值从标准输入读取密码。

--cpuid-portability-level=level

通过使用可移植性规则限制 Oracle VM VirtualBox 呈现给客户机操作系统的虚拟 CPU 功能。较高的整数值表示更严格的行为。默认级别 0 表示主机支持的所有虚拟化功能都可供客户机使用。值 3 抑制了大多数功能。值 12 表示介于两者之间的限制。行为可能因产品版本而异。

--cpuid-set=leaf[:subleaf] eax ebx ecx edx

高级用户可以在远程传送操作之前(实际上是在启动 VM 之前)使用此设置来限制 Oracle VM VirtualBox 呈现给客户机操作系统的虚拟 CPU 功能。这必须在参与远程传送的源计算机和目标计算机上运行,然后将修改客户机在执行 CPUID 机器指令时看到的内容。这可能有助于解决错误地假定存在某些 CPU 功能的异常应用程序。参数的含义取决于硬件。请参阅 AMD 或 Intel 处理器文档。

leafsubleaf(可选)、eaxebxecxedx 的值是以十六进制格式给出的整数,即使用基数 16,无需任何前缀。

--cpuid-remove=leaf[:subleaf]

删除使用 --cpuid-set 建立的调整。

--cpuid-remove-all

删除使用 --cpuid-set 建立的所有调整。

调试设置

VBoxManage modifyvm < uuid | vmname > [--tracing-enabled= on | off ] [--tracing-config=string] [--tracing-allow-vm-access= on | off ]

仅使用以下选项执行低级 VM 调试。这些选项仅供高级用户使用。

--tracing-enabled=on | off

启用或禁用跟踪缓冲区。请注意,指定后,跟踪缓冲区会消耗一些内存并增加开销。

--tracing-config=config-string

启用跟踪配置,该配置定义启用了哪些跟踪点组。

--tracing-allow-vm-access=on | off

启用或禁用 VM 对跟踪缓冲区的访问。默认值为 off,表示禁用访问。

USB 读卡器设置

VBoxManage modifyvm < uuid | vmname > [--usb-card-reader= on | off ]

以下选项指定客户机环境对 USB 读卡器的访问。USB 读卡器可以访问存储卡上的数据,例如 CompactFlash (CF)、Secure Digital (SD) 和 MultiMediaCard (MMC)。

--usb-card-reader=on | off

启用或禁用 USB 读卡器接口。

主机系统启动时自动启动 VM

以下选项使您能够配置 VM 自动启动功能,该功能会在主机系统启动时自动启动 VM。在使用此功能之前,您必须进行一些主机系统配置。请参阅第 9.21 节,“在系统启动期间启动虚拟机”

VBoxManage modifyvm < uuid | vmname > [--autostart-enabled= on | off ] [--autostart-delay=seconds]

--autostart-enabled=on | off

为指定用户启用或禁用主机系统启动时 VM 自动启动。

--autostart-delay=seconds

指定主机系统启动后自动启动 VM 的秒数。

客户机调试

这些选项用于配置用于客户机调试的 VMM。

VBoxManage modifyvm < uuid | vmname > [--guest-debug-provider= none | native | gdb | kd ] [--guest-debug-io-provider= none | tcp | udp | ipc ] [--guest-debug-address= IP-Address | path ] [--guest-debug-port=port]

--guest-debug-provider=none | native | gdb | kd

选择给定的调试存根提供程序。

--guest-debug-io-provider=none | tcp | udp | ipc

为选定的提供程序选择给定的 I/O 传输后端。

--guest-debug-address=IP-Address | path

设置调试器可访问的路径,这取决于所选的 I/O 传输。

--guest-debug-port=port

设置调试器可访问的端口,这取决于所选的 I/O 传输。

PCI 直通设置

以下选项使您能够配置 PCI 直通功能,该功能目前在 Oracle VM VirtualBox 中不可用。计划在将来恢复此功能。

VBoxManage modifyvm < uuid | vmname > [--pci-attach=host-PCI-address [@guest-PCI-bus-address]] [--pci-detach=host-PCI-address]

--pci-attach=host-PCI-address[@guest-PCI-bus-address]

将主机上指定的 PCI 网络控制器连接到客户机 VM。您可以选择指定要将控制器连接到的客户机 VM 上的 PCI 总线。

--pci-detach=host-PCI-address

从客户机 VM 上连接的 PCI 总线分离指定的 PCI 网络控制器。

测试 (ValidationKit / Bootsector)

这些选项用于配置 VMM 设备测试功能,几乎仅用于 ValidationKit 中的引导扇区测试用例。

VBoxManage modifyvm < uuid | vmname > [--testing-enabled= on | off ] [--testing-mmio= on | off ] [--testing-cfg-dwordidx=value]

--testing-enabled=on | off

启用 VMMDev 的测试功能。有关详细信息,请参阅 VMMDevTesting.h。

--testing-mmio=on | off

启用 VMMDev 测试功能的 MMIO 区域。

--testing-cfg-dwordidx=value

这设置了 10 个双字配置值中的一个。idx 必须在 0 到 9 的范围内。value 限制为 32 位(双字)。

示例

以下命令更改 ol7 VM 的描述。

$ VBoxManage modifyvm ol7 --description "Oracle Linux 7 with UEK4"

以下命令为 ol7 VM 启用 VirtualBox 远程桌面协议 (VRDP) 支持。

$ VBoxManage modifyvm ol7 --vrde on

8.11. VBoxManage clonevm

创建现有虚拟机的克隆。

概要

VBoxManage clonevm <vmname|uuid> [--basefolder=basefolder] [--groups=group,...] [ --mode=machine | --mode=machinechildren | --mode=all ] [--name=name] [--options=option,...] [--register] [--snapshot=snapshot-name] [--uuid=uuid]

描述

VBoxManage clonevm 命令创建现有虚拟机 (VM) 的克隆。克隆可以是 VM 的完整副本或 VM 的链接副本。

您必须指定要克隆的虚拟机的名称或通用唯一标识符 (UUID)。

命令操作数和选项

以下列表描述了您可以与 VBoxManage clonevm 命令一起使用的操作数和选项

vmname|uuid

指定要克隆的虚拟机的名称或 UUID。

--basefolder=basefolder

指定用于保存新虚拟机配置的文件夹名称。

--groups=group,...

将克隆分配给指定的一个或多个组。如果您指定多个组,请用逗号分隔每个组名。

请注意,每个组都由一个以斜杠字符 (/) 开头的组 ID 标识,以便可以嵌套组。默认情况下,克隆始终被分配到 / 组。

--mode=machine|machineandchildren|all

指定要使用的以下克隆模式之一

  • machine 模式克隆现有 VM 的当前状态,不带任何快照。这是默认模式。

  • machineandchildren 模式克隆 --snapshot 选项指定的快照以及所有子快照。

  • all 模式克隆所有快照和现有 VM 的当前状态。

--name=name

为新 VM 指定新名称。默认值为 original-name Clone,其中 original-name 是 VM 的原始名称。

--options=选项,...

指定如何创建新克隆。

--options 参数可以多次使用以启用多个选项,也可以将选项指定为逗号分隔的列表。这些选项不区分大小写。

识别以下选项(不区分大小写)

链接

仅从快照创建链接克隆。

KeepAllMACs(保留所有 MAC 地址)

指定新克隆重用现有虚拟机中每个虚拟网卡的 MAC 地址。

如果您未指定此选项或 --options=keepnatmacs 选项,默认行为是重新初始化每个虚拟网卡的 MAC 地址。

KeepNATMACs(保留 NAT MAC 地址)

指定当网络类型为 NAT 时,新克隆重用现有虚拟机中每个虚拟网卡的 MAC 地址。

如果您未指定此选项或 KeepAllMACs 选项,默认行为是重新初始化每个虚拟网卡的 MAC 地址。

KeepDiskNames(保留磁盘名称)

指定新克隆重用现有虚拟机中的磁盘镜像名称。默认情况下,磁盘镜像会被重命名。

KeepHwUUIDs(保留硬件 UUID)

指定新克隆重用现有虚拟机中的硬件 ID。默认情况下,使用新的 UUID。

--register

自动在此 Oracle VM VirtualBox 安装中注册新克隆。您以后可以使用 VBoxManage registervm 命令手动注册新虚拟机。请参见 第 8.7 节,“VBoxManage registervm”

--snapshot=快照名称

指定新虚拟机所基于的快照。默认情况下,克隆是从指定虚拟机的当前状态创建的。

--uuid=uuid

指定新虚拟机的 UUID。如果您决定注册此新虚拟机,请确保此 ID 对于 Oracle VM VirtualBox 实例是唯一的。默认情况下,Oracle VM VirtualBox 会提供一个新的 UUID。

示例

以下命令创建并注册 ol7 虚拟机的精确克隆。该克隆名为 ol7-dev-001

新克隆包含源虚拟机的所有快照。新虚拟机还重用源虚拟机的所有网络接口 MAC 地址、磁盘名称和 UUID。

$ VBoxManage clonevm ol7 --name="ol7-dev-001" --register --mode=all \
    --options=keepallmacs --options=keepdisknames --options=keephwuuids

以下命令创建并注册 ol7 虚拟机的 快照 1 快照的克隆。该克隆名为 ol7-dev-002

$ VBoxManage clonevm ol7 --name="ol7-dev-002" --register --snapshot="Snapshot 1"

8.12.�VBoxManage movevm

将虚拟机移动到主机系统上的新位置。

概要

VBoxManage movevm < uuid | vmname > [--type=basic] [--folder=folder-name]

说明

VBoxManage movevm 命令将虚拟机 (VM) 移动到主机系统上的新位置。

移动时,所有与虚拟机关联的文件(例如设置文件和磁盘映像文件)都将移动到新位置。Oracle VM VirtualBox 配置将自动更新。

uuid|vmname

指定要移动的虚拟机的通用唯一标识符 (UUID) 或名称。

--type=basic

指定移动操作的类型。目前 basic 是唯一识别的值,如果未指定,它也是默认值。

--folder=文件夹名称

指定主机文件系统上新位置的完整路径名或相对路径名。允许不指定该选项或指定当前位置,如果磁盘映像和虚拟机的其他部分当前位于其他位置,则会将其移动到此位置。

示例

以下命令将 ol7 虚拟机移动到主机系统上的新位置。

$ VBoxManage movevm ol7 --folder "/home/testuser/vms" --type basic
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Machine has been successfully moved into /home/testuser/vms

8.13.�VBoxManage encryptvm

更改虚拟机的加密和密码。

概要

VBoxManage encryptvm < uuid | vmname > setencryption --old-password file --cipher cipher-identifier --new-password file --new-password-id password-identifier --force

VBoxManage encryptvm < uuid | vmname > checkpassword <file>

VBoxManage encryptvm < uuid | vmname > addpassword --password file --password-id password-identifier

VBoxManage encryptvm < uuid | vmname > removepassword <password-identifier>

说明

VBoxManage encryptvm 命令使您能够更改虚拟机的加密或添加和删除用户密码。以下部分描述了您可以使用的子命令:

设置虚拟机的加密

VBoxManage encryptvm < uuid | vmname > setencryption --old-password file --cipher cipher-identifier --new-password file --new-password-id password-identifier --force

VBoxManage encryptvm 虚拟机名称 setencryption 命令更改虚拟机的加密。

使用 --old-password 提供旧的加密密码。您可以指定主机操作系统上密码文件的绝对路径名,或使用 - 提示您输入旧密码。

使用 --cipher 选项指定虚拟机加密的新加密算法。目前仅支持 AES-128AES-256。虚拟机将根据加密组件选择相应的 GCM、CTR 或 XTS 模式。

使用 --new-password 选项指定虚拟机加密的新密码。您可以指定主机操作系统上密码文件的绝对路径名,或使用 - 提示您输入新密码。

使用 --new-password-id 选项指定虚拟机加密密码的新 ID。

使用 --force 选项强制系统重新加密虚拟机,而不是简单地更改密码。

检查提供的密码是否正确

VBoxManage encryptvm < uuid | vmname > checkpassword <file>

VBoxManage encryptvm 虚拟机名称 checkpassword 命令检查所提供密码的正确性。

密码可以从文件中提供。指定主机操作系统上密码文件的绝对路径名。此外,您还可以指定 - 以提示您输入密码。

添加用于解密虚拟机的密码

VBoxManage encryptvm < uuid | vmname > addpassword --password file --password-id password-identifier

VBoxManage encryptvm 虚拟机名称 addpassword 命令为解密虚拟机添加密码。

使用 --password 提供加密密码。您可以指定主机操作系统上密码文件的绝对路径名,或使用 - 提示您输入密码。

使用 --password-id 选项指定密码的 ID。

删除用于解密虚拟机的密码

VBoxManage encryptvm < uuid | vmname > removepassword <password-identifier>

VBoxManage encryptvm 虚拟机名称 removepassword 命令删除用于解密虚拟机的密码。

指定要删除的密码标识符。密码将变为未知,虚拟机无法解密。

示例

以下命令使用 AES-256 加密 ol7 虚拟机,并通过命令行提示符提供密码。

$ VBoxManage encryptvm ol7 setencryption --cipher=AES-256 --new-password - --new-password-id vmid

8.14.�VBoxManage cloud

管理云实体。

概要

VBoxManage cloud <--provider=name> <--profile=name>
list instances [--state=string] [--compartment-id=string]

VBoxManage cloud <--provider=name> <--profile=name>
list images <--compartment-id=string> [--state=string]

VBoxManage cloud <--provider=name> <--profile=name>
list vnicattachments <--compartment-id=string> [--filter=string]

VBoxManage cloud <--provider=name> <--profile=name>
instance create <--domain-name=name> <<--image-id=id> | <--boot-volume-id=id>> <--display-name=name> <--shape=type> <--subnet=id> [--boot-disk-size=size in GB] [--publicip=true/false] [--privateip=IP address] [--public-ssh-key=key string...] [--launch-mode=NATIVE/EMULATED/PARAVIRTUALIZED] [--cloud-init-script-path=path to a script]

VBoxManage cloud <--provider=name> <--profile=name>
instance info <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
instance terminate <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
instance start <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
instance pause <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
instance reset <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
image create <--display-name=name> [--bucket-name=name] [--object-name=name] [--instance-id=unique id]

VBoxManage cloud <--provider=name> <--profile=name>
image info <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
image delete <--id=unique id>

VBoxManage cloud <--provider=name> <--profile=name>
image import <--id=unique id> [--bucket-name=name] [--object-name=name]

VBoxManage cloud <--provider=name> <--profile=name>
image export <--id=unique id> <--display-name=name> [--bucket-name=name] [--object-name=name]

VBoxManage cloud <--provider=name> <--profile=name>
network setup [--gateway-os-name=string] [--gateway-os-version=string] [--gateway-shape=string] [--tunnel-network-name=string] [--tunnel-network-range=string] [--proxy=string] [--compartment-id=string]

VBoxManage cloud <--provider=name> <--profile=name>
network create <--name=string> <--network-id=string> [ --enable | --disable ]

VBoxManage cloud network update <--name=string> [--network-id=string] [ --enable | --disable ]

VBoxManage cloud network delete <--name=string>

VBoxManage cloud network info <--name=string>

说明

常用选项

“cloud”一词涵盖了所有与云互连相关的命令。以下常用选项必须置于“cloud”和后续子命令之间。

--provider=名称

云提供商简称。

--profile=名称

云配置文件名称。

cloud list instances(列出云实例)

VBoxManage cloud <--provider=name> <--profile=name>
list instances [--state=string] [--compartment-id=string]

显示指定区间的实例列表。

--state"运行中/已暂停/已终止"

云实例的状态。目前可能的状态有“运行中/已暂停/已终止”。如果未提供状态,则返回所有可能状态的实例列表。

--compartment-id(区间 ID)

区间是用于组织和隔离云资源的逻辑容器。不同的云提供商可能对此实体有不同的名称。

cloud list images(列出云映像)

VBoxManage cloud <--provider=name> <--profile=name>
list images <--compartment-id=string> [--state=string]

显示指定隔间(compartment)的镜像列表。

--state"可用/已禁用/已删除"

云映像的状态。目前可能的状态有“可用/已禁用/已删除”。如果未提供状态,则返回所有可能状态的映像列表。

--compartment-id(区间 ID)

区间是用于组织和隔离云资源的逻辑容器。不同的云提供商可能对此实体有不同的名称。

cloud list vnic attachments(列出 VNIC 附件)

VBoxManage cloud <--provider=name> <--profile=name>
list vnicattachments <--compartment-id=string> [--filter=string]

显示指定隔间(compartment)的 vnic 附件列表。

--filter"instanceId/vnicId/domainName=字符串"

过滤器用于缩小感兴趣的 VNIC 附件集。此参数可重复。目前可能的过滤器有“instanceId”、“vnicId”或“availabilityDomain”。格式为“instanceId/vnicId/domainName=[字符串值]”并且可以重复。例如,“--filter instanceId=ocid1.instance.oc1.iad.anuwcl...js6 --filter vnicId=ocid1.vnic.oc1.iad.abuwcl...jsm --filter domainName=ergw:US-ASHBURN-AD-2”。但在大多数情况下,这都是多余的,一个过滤器就足够了。如果未提供过滤器,则返回指定区间的整个 VNIC 附件列表。

--compartment-id(区间 ID)

区间是用于组织和隔离云资源的逻辑容器。不同的云提供商可能对此实体有不同的名称。

cloud instance create(创建云实例)

VBoxManage cloud <--provider=name> <--profile=name>
instance create <--domain-name=name> <<--image-id=id> | <--boot-volume-id=id>> <--display-name=name> <--shape=type> <--subnet=id> [--boot-disk-size=size in GB] [--publicip=true/false] [--privateip=IP address] [--public-ssh-key=key string...] [--launch-mode=NATIVE/EMULATED/PARAVIRTUALIZED] [--cloud-init-script-path=path to a script]

在云中创建新实例。在云中创建实例有两种标准方法:1. 从现有自定义映像创建实例。2. 从现有可启动卷创建实例。此可启动卷不应附加到任何实例。对于第一种方法,需要以下参数:image-id、boot-disk-size。对于第二种方法,需要以下参数:boot-volume-id。其余参数适用于两种情况:display-name、launch-mode、subnet-id、publicIP、privateIP、shape、domain。

--domain-name(域名)

创建新实例的云域。

--image-id(映像 ID)

在云中完全标识自定义镜像的唯一标识符。

--boot-volume-id(启动卷 ID)

在云中完全标识启动卷的唯一标识符。

--display-name(显示名称)

云中新实例的名称。

--shape(形态)

实例的形态,定义了 CPU 数量和内存大小。

--subnet(子网)

在云中完全标识将被实例使用的现有子网的唯一标识符。

--boot-disk-size(启动盘大小)

可启动映像的大小,单位为 GB。默认值为 50GB。

--publicip(公共 IP)

实例是否具有公共 IP。

--privateip(私有 IP)

为创建的实例分配的私有 IP 地址。

--public-ssh-key(公共 SSH 密钥)

用于通过 SSH 连接到实例的公共 SSH 密钥。如果您计划使用多个密钥,此参数可以重复,例如:“--public-ssh-key=firstSSHKey --public-ssh-key=secondSSHKey”。

--launch-mode(启动模式)

此处最常见的值可能是 EMULATED、NATIVE、PARAVIRTUALIZED。

--cloud-init-script-path(Cloud-init 脚本路径)

用户 cloud-init 脚本的绝对路径。

cloud instance info(云实例信息)

显示具有指定 ID 的云实例的信息。

--id(ID)

在云中完全标识实例的唯一标识符。

cloud instance termination(终止云实例)

删除具有指定 ID 的云实例。

--id(ID)

在云中完全标识实例的唯一标识符。

cloud instance start(启动云实例)

启动具有指定 ID 的云实例。

--id(ID)

在云中完全标识实例的唯一标识符。

cloud instance pause(暂停云实例)

暂停具有指定 ID 的云实例。

--id(ID)

在云中完全标识实例的唯一标识符。

cloud instance reset(重置云实例)

强制重置具有指定 ID 的云实例。

--id(ID)

在云中完全标识实例的唯一标识符。

cloud image create(创建云映像)

VBoxManage cloud <--provider=name> <--profile=name>
image create <--display-name=name> [--bucket-name=name] [--object-name=name] [--instance-id=unique id]

在云中创建新映像。在云中创建映像有两种标准方法:1. 从云存储中的对象创建映像;2. 从现有云实例创建映像。对于第一种方法,需要以下参数:bucket-name - 对象所在的云存储桶名称;object-name - 存储桶中对象的名称;display-name - 云中新映像的名称。对于第二种方法,需要以下参数:instance-id - 云中实例的 ID;display-name - 云中新映像的名称。

--display-name(显示名称)

云中新镜像的名称。

--bucket-name(存储桶名称)

对象所在的云存储桶名称。

--object-name(对象名称)

存储桶中对象的名称。

--instance-id(实例 ID)

在云中完全标识实例的唯一标识符。

cloud image info(云映像信息)

VBoxManage cloud <--provider=name> <--profile=name>
image info <--id=unique id>

显示具有指定 ID 的云映像的信息。

--id(ID)

在云中完全标识镜像的唯一标识符。

cloud image delete(删除云映像)

VBoxManage cloud <--provider=name> <--profile=name>
image delete <--id=unique id>

从云中删除具有指定 ID 的映像。

--id(ID)

在云中完全标识镜像的唯一标识符。

cloud image import(导入云映像)

VBoxManage cloud <--provider=name> <--profile=name>
image import <--id=unique id> [--bucket-name=name] [--object-name=name]

将具有指定 ID 的映像从云导入到本地主机。结果是本地主机上“temp”文件夹中的一个对象。可能的方法包括两个通用步骤:1. 从云存储中的映像创建对象;2. 将对象下载到本地主机。因此,可能需要以下参数:bucket-name - 创建对象的云存储桶名称;object-name - 存储桶中对象的名称。如果参数“object-name”缺失,则使用显示的映像名称。如果不需要第一步,则仅需要参数“id”。

--id(ID)

在云中完全标识镜像的唯一标识符。

--bucket-name(存储桶名称)

将创建对象的云存储桶名称。

--object-name(对象名称)

在存储桶中创建的对象的名称。下载的对象将具有此名称。

cloud image export(导出云映像)

VBoxManage cloud <--provider=name> <--profile=name>
image export <--id=unique id> <--display-name=name> [--bucket-name=name] [--object-name=name]

将具有指定 UUID 的现有 VBox 映像从本地主机导出到云。结果是云中的新映像。可能的方法包括两个通用步骤:1. 将 VBox 映像上传到云存储;2. 从已上传的对象创建映像。因此,可能需要以下参数:bucket-name - 对象将上传到的云存储桶名称;object-name - 存储桶中对象的名称。如果参数“object-name”缺失,则使用映像 ID;display-name - 云中新映像的名称。如果不需要第一步,则仅需要参数“id”和“display-name”。

--id(ID)

VirtualBox 中映像的唯一标识符。

--display-name(显示名称)

云中新镜像的名称。

--bucket-name(存储桶名称)

映像(对象)将上传到的云存储桶名称。

--object-name(对象名称)

存储桶中对象的名称。

cloud network setup(设置云网络)

VBoxManage cloud <--provider=name> <--profile=name>
network setup [--gateway-os-name=string] [--gateway-os-version=string] [--gateway-shape=string] [--tunnel-network-name=string] [--tunnel-network-range=string] [--proxy=string] [--compartment-id=string]

为指定的云配置文件设置云网络环境。

--gateway-os-name(网关操作系统名称)

用于云网关的操作系统名称。

--gateway-os-version(网关操作系统版本)

用于云网关的操作系统版本。

--gateway-shape(网关形态)

用于云网关的实例形态。

--tunnel-network-name(隧道网络名称)

用于隧道的 VCN/子网名称。

--tunnel-network-range(隧道网络范围)

用于隧道连接的 IP 地址范围。

--proxy(代理)

本地网关安装中使用的代理 URL。

--compartment-id(区间 ID)

用于创建隧道网络的区间。

cloud network create(创建云网络)

VBoxManage cloud <--provider=name> <--profile=name>
network create <--name=string> <--network-id=string> [ --enable | --disable ]

创建与现有云子网关联的新云网络描述符。

--name(名称)

要分配给云网络描述符的名称。

--network-id(网络 ID)

云中现有子网的唯一标识符。

--enable, --disable

是否启用或禁用网络描述符。如果未指定,网络将启用。

cloud network update(更新云网络)

VBoxManage cloud network update <--name=string> [--network-id=string] [ --enable | --disable ]

修改现有云网络描述符。

--name(名称)

现有云网络描述符的名称。

--network-id(网络 ID)

云中现有子网的唯一标识符。

--enable, --disable

是否启用或禁用网络描述符。

cloud network delete(删除云网络)

VBoxManage cloud network delete <--name=string>

删除现有云网络描述符。

--name(名称)

现有云网络描述符的名称。

cloud network info(云网络信息)

VBoxManage cloud network info <--name=string>

显示云网络描述符的信息。

--name(名称)

现有云网络描述符的名称。

8.15.�VBoxManage cloudprofile

管理云配置文件。

概要

VBoxManage cloudprofile <--provider=name> <--profile=name> add [--clouduser=unique id] [--fingerprint=MD5 string] [--keyfile=path] [--passphrase=string] [--tenancy=unique id] [--compartment=unique id] [--region=string]

VBoxManage cloudprofile <--provider=name> <--profile=name> update [--clouduser=unique id] [--fingerprint=MD5 string] [--keyfile=path] [--passphrase=string] [--tenancy=unique id] [--compartment=unique id] [--region=string]

VBoxManage cloudprofile <--provider=name> <--profile=name> delete

VBoxManage cloudprofile <--provider=name> <--profile=name> show

说明

常用选项

cloudprofile 的子命令实现了云配置文件的标准 CRUD 操作。以下常用选项必须置于“cloud”和后续子命令之间。

--provider=名称

云提供商简称。

--profile=名称

云配置文件名称。

cloudprofile add(添加云配置文件)

VBoxManage cloudprofile <--provider=name> <--profile=name> add [--clouduser=unique id] [--fingerprint=MD5 string] [--keyfile=path] [--passphrase=string] [--tenancy=unique id] [--compartment=unique id] [--region=string]

为指定的云提供商添加新的云配置文件。

--clouduser(云用户)

在指定云提供商中完全标识用户的名称。

--fingerprint(指纹)

正在使用的密钥对的指纹。

--keyfile(密钥文件)

私钥的完整路径和文件名。

--passphrase(密码短语)

如果密钥已加密,则用于密钥的密码短语。

--tenancy(租户)

您的租户 ID。

--compartment(区间)

您的区间 ID。

--region(区域)

区域名称。区域是您计划部署应用程序的地方。

cloudprofile show(显示云配置文件)

VBoxManage cloudprofile <--provider=name> <--profile=name> show

显示指定云提供商的云配置文件信息。

cloudprofile update(更新云配置文件)

VBoxManage cloudprofile <--provider=name> <--profile=name> update [--clouduser=unique id] [--fingerprint=MD5 string] [--keyfile=path] [--passphrase=string] [--tenancy=unique id] [--compartment=unique id] [--region=string]

修改指定云提供商的云配置文件。

--clouduser(云用户)

在指定云提供商中完全标识用户的名称。

--fingerprint(指纹)

正在使用的密钥对的指纹。

--keyfile(密钥文件)

私钥的完整路径和文件名。

--passphrase(密码短语)

如果密钥已加密,则用于密钥的密码短语。

--tenancy(租户)

您的租户 ID。

--compartment(区间)

您的区间 ID。

--region(区域)

区域名称。区域是您计划部署应用程序的地方。

cloudprofile delete(删除云配置文件)

VBoxManage cloudprofile <--provider=name> <--profile=name> delete

删除指定云提供商的云配置文件。

8.16.�VBoxManage import

导入 OVF 格式的虚拟设备或从云服务导入并创建虚拟机。

概要

VBoxManage import < ovfname | ovaname > [--dry-run] [--options= keepallmacs | keepnatmacs | importtovdi ] [--vsys=n] [--ostype=ostype] [--vmname=name] [--settingsfile=file] [--basefolder=folder] [--group=group] [--memory=MB] [--cpus=n] [--description=text] [--eula= show | accept ] [--unit=n] [--ignore] [--scsitype= BusLogic | LsiLogic ] [--disk=path] [--controller=index] [--port=n]

VBoxManage import OCI:// --cloud [--ostype=ostype] [--vmname=name] [--basefolder=folder] [--memory=MB] [--cpus=n] [--description=text] <--cloudprofile=profile> <--cloudinstanceid=id> [--cloudbucket=bucket]

说明

VBoxManage import 命令导入 OVF 格式的虚拟设备或从 Oracle Cloud Infrastructure 等云服务导入。导入操作通过复制虚拟磁盘映像(默认使用 VMDK 映像格式)并在 Oracle VM VirtualBox 中创建虚拟机 (VM) 来执行。请参见 第 1.15 节,“导入和导出虚拟机”

您必须指定要用作输入的 OVF 文件或 OVA 归档文件的路径名,或云情况下的占位符。对于 OVF 设备,请确保任何磁盘映像都在 OVF 文件所在的同一目录中。

请注意,您为控制导入的虚拟设备或修改导入参数而指定的任何选项都依赖于 OVF 文件的内容或来自云服务的信息。

在使用导入操作创建虚拟机之前,请执行一次试运行以验证配置的正确性。这对于 OVF 或 OVA 设备更有用,因为对于云服务,即使是试运行也需要执行大部分耗时的步骤。

从云服务导入会下载一个临时文件,其中包含引导映像和一些描述 VM 实例详细信息的元数据。成功导入后,临时文件将被删除。

常用选项

ovf 文件名 | ova 文件名

指定描述设备的 OVF 文件或 OVA 归档的名称。在云情况下,这通常是一个固定字符串,例如 OCI://

--dry-run(试运行)

在执行实际导入操作之前,对 VBoxManage import 命令执行一次试运行。试运行操作执行以下步骤:

  • 根据指定的 OVF 或 OVA 文件输出设备内容的描述。

  • 显示设备将如何导入到 Oracle VM VirtualBox 中。此外,输出还会显示可用于更改导入行为的任何选项。

此选项的缩写形式是 -n

--options=keepallmacs | keepnatmacs | importtovdi

使您能够微调导入操作。

有效参数如下所示。

  • keepallmacs:指定每个虚拟网卡的 MAC 地址保持不变。

  • keepnatmacs:指定如果网络类型为 NAT,则每个虚拟网卡的 MAC 地址保持不变。

  • importtovdi:指定所有新磁盘映像为 VDI 文件格式。

--ostype=ostype

指定虚拟机的客户机操作系统 (OS) 信息。使用 VBoxManage list ostypes 命令查看操作系统类型标识符。

--vmname=名称

指定 Oracle VM VirtualBox 将使用的虚拟机名称。

--basefolder=文件夹

指定存储导入 VM 文件的文件夹。

--memory=MB

指定导入 VM 的内存大小(以兆字节为单位)。

--cpus=n

指定导入 VM 的 CPU 数量。

--description=文本

指定在检查 VM 详细信息时在 GUI 和 CLI 中可见的描述文本。

OVF / OVA 导入选项

以下选项专门用于导入 OVF 或 OVA 格式的虚拟设备。此类设备可以包含一个或多个虚拟机,这需要指定如果要更改,应调整哪个虚拟机配置。请参见 第 1.15.2 节,“导入 OVF 格式的设备”

VBoxManage import < ovfname | ovaname > [--dry-run] [--options= keepallmacs | keepnatmacs | importtovdi ] [--vsys=n] [--ostype=ostype] [--vmname=name] [--settingsfile=file] [--basefolder=folder] [--group=group] [--memory=MB] [--cpus=n] [--description=text] [--eula= show | accept ] [--unit=n] [--ignore] [--scsitype= BusLogic | LsiLogic ] [--disk=path] [--controller=index] [--port=n]

--vsys=n

指定在设备中选择特定 VM 的索引。影响以下选项。

--unit=n

指定在设备中选择 VM 特定单元的索引。影响以下选项。

--settingsfile=文件

指定作为导入一部分创建的虚拟机配置文件名(带或不带路径)。通常首选方法是使用 --vmname 覆盖虚拟机名称,如有必要,使用 --basefolder 指定创建虚拟机的文件夹。

--group=

指定导入 VM 的主组。

--eula=show | accept

使您能够显示或接受设备中 VM 的许可条款。

有效参数如下所示。

  • show:显示虚拟机的 EULA。

  • accepts:接受虚拟机的 EULA。设备中任何具有 EULA 的虚拟机都需要接受它,否则导入将失败。

--ignore(忽略)

忽略导入虚拟机的当前单元,从而有效地删除相关联的硬件。

--scsitype=BusLogic | LsiLogic

使您能够为导入 VM 的当前单元选择 SCSI 控制器类型。

有效参数如下所示。

  • BusLogic:使用(非常旧的)BusLogic SCSI 控制器类型。

  • LsiLogic:使用(更现代的)LsiLogic SCSI 控制器类型。

云导入选项

以下选项专门用于从云服务提供商导入虚拟机实例。它始终处理单个虚拟机。请参见 第 1.16.9 节,“从 Oracle Cloud Infrastructure 导入实例”

VBoxManage import OCI:// --cloud [--ostype=ostype] [--vmname=name] [--basefolder=folder] [--memory=MB] [--cpus=n] [--description=text] <--cloudprofile=profile> <--cloudinstanceid=id> [--cloudbucket=bucket]

--cloud(云)

指定导入应来自云。

--cloudprofile=配置文件

指定用于连接到云服务提供商的云配置文件。云配置文件包含您的 Oracle Cloud Infrastructure 帐户详细信息,例如您的用户 OCID 和公共密钥指纹。要使用云配置文件,您必须在 Oracle Cloud Infrastructure 上具有所需的权限。

--cloudinstanceid=ID

指定云中现有实例的 ID。

--cloudbucket=存储桶

指定存储从实例创建的对象的存储桶名称。在 Oracle Cloud Infrastructure 中,存储桶是用于存储对象的逻辑容器。默认情况下,使用云配置文件可用的第一个存储桶。

示例

以下示例对包含 Windows 10 客户机的示例设备执行 OVF 导入操作的试运行。

$ VBoxManage import Windows10.ovf --dry-run
Interpreting Windows10.ovf...
OK.
Virtual system 0:
 0: Suggested OS type: "Windows10_64"
    (change with "--vsys 0 --ostype <type>"; use "list ostypes" to list all)
 1: Suggested VM name "win10-appliance"
    (change with "--vsys 0 --vmname <name>")
 2: Suggested VM group "/"
    (change with "--vsys 0 --group <group>")
 3: Suggested VM settings file name "/home/user1/VirtualBox VMs/win10-appliance/win10-appliance.vbox"
    (change with "--vsys 0 --settingsfile <filename>")
 4: Suggested VM base folder "/home/user1/VirtualBox VMs"
    (change with "--vsys 0 --basefolder <path>")
 5: End-user license agreement
    (display with "--vsys 0 --eula show";
    accept with "--vsys 0 --eula accept")
 6: Number of CPUs: 1
    (change with "--vsys 0 --cpus <n>")
 7: Guest memory: 2048 MB (change with "--vsys 0 --memory <MB>")
 8: Sound card (appliance expects "ensoniq1371", can change on import)
    (disable with "--vsys 0 --unit 8 --ignore")
 9: USB controller
    (disable with "--vsys 0 --unit 9 --ignore")
10: Network adapter: orig bridged, config 2, extra type=bridged
11: Floppy
    (disable with "--vsys 0 --unit 11 --ignore")
12: SCSI controller, type BusLogic
    (change with "--vsys 0 --unit 12 --scsitype {BusLogic|LsiLogic}";
    disable with "--vsys 0 --unit 12 --ignore")
13: IDE controller, type PIIX4
    (disable with "--vsys 0 --unit 13 --ignore")
14: Hard disk image: source image=Windows10.vmdk,
      target path=/home/user1/disks/Windows10.vmdk, controller=12;channel=0
    (change target path with "--vsys 0 --unit 14 --disk <path>";
    change controller with "--vsys 0 --unit 14 --controller <index>";
    change controller port with "--vsys 0 --unit 14 --port <n>";
    disable with "--vsys 0 --unit 14 --ignore")

试运行输出列出并编号了 Windows10.ovf 文件中描述的各个配置项。其中一些项包含有关如何禁用或更改该项配置的信息。

您可以使用 --vsys X --unit Y --ignore 选项禁用许多项。X 是虚拟系统的编号。除非设备包含多个虚拟系统描述,否则该值为 0Y 是配置项编号。

示例命令输出中的第 1 项指定了目标计算机的名称。第 12 项和第 13 项分别指定了 IDE 和 SCSI 硬盘控制器。

项 14 指示了硬盘映像,--disk 选项指定了映像将存储的目标路径,--controller 选项指定了磁盘将连接到哪个控制器,--port 选项指定了磁盘将连接到控制器的哪个端口。默认值在 OVF 文件中指定。

您可以通过为 --vsys 选项指定相同的值来为同一个虚拟系统组合多个项。例如,使用以下命令导入 OVF 中描述的机器,排除声卡和 USB 控制器,并指定磁盘映像以不同的名称存储。

$ VBoxManage import Windows10.ovf --vsys 0 --unit 8 --ignore \
  --unit 9 --ignore --unit 14 --disk Windows10_disk0.vmdk

以下示例演示如何从 Oracle Cloud Infrastructure 导入 VM。要查找 Oracle Cloud Infrastructure VM 实例及其 ID,您可以使用以下命令列出所有可用实例:

$ VBoxManage cloud --provider=OCI --profile=cloud-profile-name list instances

知道 ID 后,以下命令将从 Oracle Cloud Infrastructure 导入该实例:

$ VBoxManage import OCI:// --cloud --vmname OCI_FreeBSD_VM --memory 4000 \
  --cpus 3 --ostype FreeBSD_64 --cloudprofile "standard user" \
  --cloudinstanceid ocid1.instance.oc1.iad.abuwc... --cloudbucket myBucket

8.17.�VBoxManage export

将一台或多台虚拟机导出到虚拟设备或云服务。

概要

VBoxManage export <machines> <--output=name> [ --legacy09 | --ovf09 | --ovf10 | --ovf20 ] [--manifest] [--options= manifest | iso | nomacs | nomacsbutnat ... ] [--vsys=virtual-system-number] [--description=description-info] [--eula=license-text] [--eulafile=filename] [--product=product-name] [--producturl=product-URL] [--vendor=vendor-name] [--vendorurl=vendor-URL] [--version=version-info] [--vmname=vmname]

VBoxManage export <machine> <--output=cloud-service-provider> [--opc10] [--vmname=vmname] [--cloud=virtual-system-number] [--cloudprofile=cloud-profile-name] [--cloudshape=cloud-shape-name] [--clouddomain=cloud-domain] [--clouddisksize=disk-size-in-GB] [--cloudbucket=bucket-name] [--cloudocivcn=OCI-VCN-ID] [--cloudocisubnet=OCI-subnet-ID] [--cloudkeepobject= true | false ] [--cloudlaunchinstance= true | false ] [--cloudlaunchmode= EMULATED | PARAVIRTUALIZED ] [--cloudpublicip= true | false ]

说明

VBoxManage export 命令使您能够从 Oracle VM VirtualBox 导出一台或多台虚拟机 (VM)。您可以将虚拟机导出到以下任一位置:

  • OVF 格式的虚拟设备。包括将其虚拟磁盘映像复制到压缩的 VMDK。

  • Oracle Cloud Infrastructure 等云服务。导出一个虚拟机。

有关从 Oracle VM VirtualBox 导出虚拟机的更多信息,请参见 第 1.15 节,“导入和导出虚拟机”

将虚拟机导出到 OVF 虚拟设备

VBoxManage export <machines> <--output=name> [ --legacy09 | --ovf09 | --ovf10 | --ovf20 ] [--manifest] [--options= manifest | iso | nomacs | nomacsbutnat ... ] [--vsys=virtual-system-number] [--description=description-info] [--eula=license-text] [--eulafile=filename] [--product=product-name] [--producturl=product-URL] [--vendor=vendor-name] [--vendorurl=vendor-URL] [--version=version-info] [--vmname=vmname]

VBoxManage export 命令使您能够将虚拟机以 OVF 格式导出为虚拟设备。

机器

指定一个或多个要导出到同一 OVF 文件的机器的逗号分隔列表。

--output=文件名

指定目标 OVF 文件。该文件可以是 OVF、OVA 或使用 gzip 命令压缩的 ZIP 文件。由于包含目标 OVF 文件的目录也将以压缩的 VMDK 格式存储导出的磁盘映像,因此请确保该目录有足够的磁盘空间来存储映像。

此选项的缩写形式是 -o

--legacy09

如果虚拟化产品与 OVF 1.0 标准不完全兼容,则以 OVF 0.9 传统模式导出。

--ovf09

以 OVF 0.9 格式导出。

--ovf10

以 OVF 1.0 格式导出。

--ovf20

以 OVF 2.0 格式导出。

--manifest(清单)

创建导出文件的清单。

--options=参数,...

指定控制设备文件确切内容的信息。指定一个或多个逗号分隔的参数

清单

生成一个清单文件,用于在导入时检测损坏的设备。

iso

将 DVD 镜像导出为 ISO 文件。

nomacs

排除所有 MAC 地址。

nomacsbutnat

排除所有 MAC 地址,除了 NAT 网络中的地址。

--description=描述信息

指定虚拟机的描述。

--eula=许可文本

指定最终用户许可文本。

--eulafile=文件名

指定最终用户许可文件。

--product=产品名称

指定产品名称。

--producturl=产品 URL

指定产品 URL。

--vendor=供应商名称

指定供应商名称。

--vendorurl=供应商 URL

指定供应商 URL。

--version=版本信息

指定版本信息。

--vmname=虚拟机名称

指定导出的虚拟机名称。

--vsys=虚拟系统编号

指定虚拟系统的编号。

将虚拟机导出到 Oracle Cloud Infrastructure

VBoxManage export <machine> <--output=cloud-service-provider> [--opc10] [--vmname=vmname] [--cloud=virtual-system-number] [--cloudprofile=cloud-profile-name] [--cloudshape=cloud-shape-name] [--clouddomain=cloud-domain] [--clouddisksize=disk-size-in-GB] [--cloudbucket=bucket-name] [--cloudocivcn=OCI-VCN-ID] [--cloudocisubnet=OCI-subnet-ID] [--cloudkeepobject= true | false ] [--cloudlaunchinstance= true | false ] [--cloudlaunchmode= EMULATED | PARAVIRTUALIZED ] [--cloudpublicip= true | false ]

VBoxManage export 命令使您能够将虚拟机导出到 Oracle Cloud Infrastructure 等云服务提供商。默认情况下,导出的磁盘映像会转换为压缩的 VMDK 格式。这最大限度地减少了传输到云服务的数据量。

以下某些选项是虚拟机实例的配置设置。因此,请为资源指定 Oracle Cloud 标识符 (OCID)。使用 Oracle Cloud Infrastructure 控制台查看 OCID。

--output=云服务提供商

指定要导出虚拟机到的云服务提供商的短名称。对于 Oracle Cloud Infrastructure,请指定 OCI://

此选项的缩写形式是 -o

--opc10

以 Oracle Cloud Infrastructure 格式导出。

--cloud=虚拟系统数量

指定用于标识要导出的虚拟机的数字。第一个虚拟机从 0 开始编号。

--vmname=虚拟机名称

指定导出虚拟机的名称,该名称在 Oracle Cloud Infrastructure 中用作虚拟机实例名称。

--cloudprofile=云配置文件名称

指定用于连接到云服务提供商的云配置文件。云配置文件包含您的 Oracle Cloud Infrastructure 账户详细信息,例如您的用户 OCID 和公共密钥的指纹。

要使用云配置文件,您必须在 Oracle Cloud Infrastructure 上拥有所需的权限。

--cloudshape=云形态名称

指定虚拟机实例使用的形状。形状定义了分配给虚拟机实例的 CPU 数量和内存量。确保形状与导出的镜像兼容。

--clouddomain=云域

指定用于虚拟机实例的可用性域。输入可用性域的完整名称。

--clouddisksize=磁盘大小(GB)

指定用于导出磁盘镜像的磁盘空间量,以千兆字节为单位。有效值为 50 GB 到 300 GB。

--cloudbucket=存储桶名称

指定用于存储上传文件的存储桶。在 Oracle Cloud Infrastructure 中,存储桶是用于存储对象的逻辑容器。

--cloudocivcn=OCI-VCN-ID

指定用于虚拟机实例的虚拟云网络 (VCN) 的 OCID。

--cloudocisubnet=OCI-子网-ID

指定用于虚拟机实例的 VCN 子网的 OCID。

--cloudkeepobject=true | false

指定是否将导出的磁盘镜像存储在 Oracle 对象存储中。

--cloudlaunchinstance=true | false

指定在导出到 Oracle Cloud Infrastructure 完成后是否启动虚拟机实例。

--cloudlaunchinstance=EMULATED | PARAVIRTUALIZED

指定实例使用的启动模式。半虚拟化模式可提供改进的性能。

--cloudpublicip=true | false

指定是否为虚拟机实例启用公共 IP 地址。

示例

以下示例展示了如何将 myVM 虚拟机导出到 Oracle Cloud Infrastructure。命令的选项参数描述了 Oracle Cloud Infrastructure 中 myVM_Cloud 虚拟机的配置。

# VBoxManage export myVM --output=OCI:// --cloud=0 --vmname=myVM_Cloud \
--cloudprofile="standard user" --cloudbucket=myBucket \
--cloudshape=VM.Standard2.1 --clouddomain=US-ASHBURN-AD-1 --clouddisksize=50  \
--cloudocivcn=ocid1.vcn.oc1.iad.aaaa... --cloudocisubnet=ocid1.subnet.oc1.iad.aaaa... \
--cloudkeepobject=true --cloudlaunchinstance=true --cloudpublicip=true

8.18.�VBoxManage signova

对 OVA 进行数字签名。

概要

VBoxManage signova <ova> <--certificate=file> <--private-key=file> [ --private-key-password-file=password-file | --private-key-password=password ] [--digest-type=type] [ --pkcs7 | --no-pkcs7 ] [--intermediate-cert=file] [--force] [--verbose] [--quiet] [--dry-run]

说明

VBoxManage signova 命令为 OVA 文件添加数字签名。

ova

要签名的 OVA 文件。

--certificate=文件

包含用于签名 OVA 的证书的文件。该文件可以是 PEM 格式(Base64)或 DER 格式(二进制),命令将自动检测。

--private-key=文件

包含私钥的文件。该文件可以是 PEM 格式(Base64)或 DER 格式(二进制),命令将自动检测。

--private-key-password-file=密码文件

包含私钥密码的文件。

--private-key-password=密码

私钥密码。

--digest-type=类型

选择签名中使用的加密摘要算法。可能的值:SHA-256(默认)、SHA-512 和 SHA-1。

某些旧版本的 OVFTool 和其他 VMware 产品可能需要 --digest-type=sha-1 才能接受 OVA。

--pkcs7, --no-pkcs7

启用或禁用创建附加的 PKCS#7/CMS 签名。此选项默认启用。

--intermediate-cert=文件

包含应包含在可选 PKCS#7/CMS 签名中的中间证书的文件。与其他文件一样,该文件可以是 PEM 或 DER 格式。此选项可以重复以添加多个中间证书。此选项隐含 --pkcs7 选项。

--force(强制)

如果存在现有签名,则覆盖。默认行为是如果 OVA 已经签名则失败。

--dry-run(试运行)

不实际修改 OVA,仅测试运行签名操作。

-v, --verbose, -q, --quiet

控制命令执行的详细程度。--verbose 选项可以多次使用以获取更多输出。

8.19.�VBoxManage startvm

启动虚拟机。

概要

VBoxManage startvm < uuid | vmname ...> [--putenv=name[=value]] [--type= [ gui | headless | sdl | separate ]] --password file --password-id password identifier

说明

VBoxManage startvm 命令启动处于关机或保存状态的 Oracle VM VirtualBox 虚拟机 (VM)。

UUID | 虚拟机名称

指定虚拟机的名称或全局唯一标识符 (UUID)。

--putenv=名称=

将值作为名称-值对分配给环境变量。例如,VBOX_DISABLE_HOST_DISK_CACHE=1。

此选项的缩写形式是 -E

--type=gui | headless | sdl | separate

指定用于启动虚拟机的前端。

您可以使用 VBoxManage setproperty 命令为前端设置全局默认值。或者,您可以使用 VBoxManage modifyvm 命令为特定虚拟机指定默认前端值。如果既没有设置全局默认值也没有设置每虚拟机默认值,并且您未指定 --type 选项,则虚拟机将在主机桌面的窗口中打开。

--type 选项接受以下值:

gui

在图形用户界面 (GUI) 窗口中启动虚拟机。这是默认值。

headless(无头模式)

启动虚拟机仅用于远程显示。

sdl

使用 VBoxSDL 前端启动虚拟机。

separate(分离)

启动具有可分离用户界面 (UI) 的虚拟机,这意味着虚拟机以无头模式运行,UI 在单独的进程中。

这是一项实验性功能,缺少某些功能,例如 3D 加速。

--password

使用 --password 提供加密密码。您可以指定主机操作系统上密码文件的绝对路径名,或使用 - 在命令行上提示您输入密码。

--password-id(密码 ID)

使用 --password-id 选项指定密码的 ID。

注意

如果虚拟机无法使用特定前端启动且错误信息不明确,请考虑直接运行前端来启动虚拟机。此解决方法可能会提供额外的错误信息。

示例

以下命令启动 ol7u6 虚拟机:

$ VBoxManage startvm ol7u6

以下命令以无头模式启动 ol7u6-mininstall 虚拟机。

$ VBoxManage startvm ol7u6-mininstall --type headless

8.20.�VBoxManage controlvm

更改运行中虚拟机的状态和设置。

概要

VBoxManage controlvm < uuid | vmname > pause

VBoxManage controlvm < uuid | vmname > resume

VBoxManage controlvm < uuid | vmname > reset

VBoxManage controlvm < uuid | vmname > poweroff

VBoxManage controlvm < uuid | vmname > savestate

VBoxManage controlvm < uuid | vmname > acpipowerbutton

VBoxManage controlvm < uuid | vmname > acpisleepbutton

VBoxManage controlvm < uuid | vmname > reboot

VBoxManage controlvm < uuid | vmname > shutdown [--force]

VBoxManage controlvm < uuid | vmname > keyboardputscancode <hex> [hex...]

VBoxManage controlvm < uuid | vmname > keyboardputstring <string> [string...]

VBoxManage controlvm < uuid | vmname > keyboardputfile <filename>

VBoxManage controlvm < uuid | vmname > setlinkstateN < on | off >

VBoxManage controlvm < uuid | vmname > nicN < null | nat | bridged | intnet | hostonly | generic | natnetwork > [device-name]

VBoxManage controlvm < uuid | vmname > nictraceN < on | off >

VBoxManage controlvm < uuid | vmname > nictracefileN <filename>

VBoxManage controlvm < uuid | vmname > nicpropertyN <prop-name=prop-value>

VBoxManage controlvm < uuid | vmname > nicpromiscN < deny | allow-vms | allow-all >

VBoxManage controlvm < uuid | vmname > natpfN < [rulename] ,tcp | udp, [host-IP], hostport, [guest-IP], guestport >

VBoxManage controlvm < uuid | vmname > natpfN delete <rulename>

VBoxManage controlvm < uuid | vmname > guestmemoryballoon <balloon-size>

VBoxManage controlvm < uuid | vmname > usbattach < uuid | address > [--capturefile=filename]

VBoxManage controlvm < uuid | vmname > usbdetach < uuid | address >

VBoxManage controlvm < uuid | vmname > audioin < on | off >

VBoxManage controlvm < uuid | vmname > audioout < on | off >

VBoxManage controlvm < uuid | vmname > clipboard mode < disabled | hosttoguest | guesttohost | bidirectional >

VBoxManage controlvm < uuid | vmname > clipboard filetransfers < on | off >

VBoxManage controlvm < uuid | vmname > draganddrop < disabled | hosttoguest | guesttohost | bidirectional >

VBoxManage controlvm < uuid | vmname > vrde < on | off >

VBoxManage controlvm < uuid | vmname > vrdeport <port>

VBoxManage controlvm < uuid | vmname > vrdeproperty <prop-name=prop-value>

VBoxManage controlvm < uuid | vmname > vrdevideochannelquality <percentage>

VBoxManage controlvm < uuid | vmname > setvideomodehint <xres> <yres> <bpp> [[display] [ enabled:yes | no | [x-origin y-origin]]]

VBoxManage controlvm < uuid | vmname > setscreenlayout <display> < on | primary x-origin y-origin x-resolution y-resolution bpp | off >

VBoxManage controlvm < UUID | 虚拟机名称 > screenshotpng <文件名> [显示器]

VBoxManage controlvm < UUID | 虚拟机名称 > recording < on | off >

VBoxManage controlvm < UUID | 虚拟机名称 > recording screens < all | none | 屏幕ID[,屏幕ID...] >

VBoxManage controlvm < UUID | 虚拟机名称 > recording filename <文件名>

VBoxManage controlvm < UUID | 虚拟机名称 > recording videores <宽度x高度>

VBoxManage controlvm < UUID | 虚拟机名称 > recording videorate <速率>

VBoxManage controlvm < UUID | 虚拟机名称 > recording videofps <帧率>

VBoxManage controlvm < UUID | 虚拟机名称 > recording maxtime <>

VBoxManage controlvm < UUID | 虚拟机名称 > recording maxfilesize <兆字节>

VBoxManage controlvm < UUID | 虚拟机名称 > setcredentials <用户名> --passwordfile= < 文件名 | 密码 > <域名> --allowlocallogon= < yes | no >

VBoxManage controlvm < UUID | 虚拟机名称 > teleport <--host=主机名> <--port=端口名> [--maxdowntime=毫秒] [ --passwordfile=文件名 | --password=密码 ]

VBoxManage controlvm < UUID | 虚拟机名称 > plugcpu <ID>

VBoxManage controlvm < UUID | 虚拟机名称 > unplugcpu <ID>

VBoxManage controlvm < UUID | 虚拟机名称 > cpuexecutioncap <数量>

VBoxManage controlvm < UUID | 虚拟机名称 > vm-process-priority < default | flat | low | normal | high >

VBoxManage controlvm < UUID | 虚拟机名称 > webcam attach [路径名 [设置]]

VBoxManage controlvm < UUID | 虚拟机名称 > webcam detach [路径名]

VBoxManage controlvm < UUID | 虚拟机名称 > webcam list

VBoxManage controlvm < UUID | 虚拟机名称 > addencpassword <ID> < 密码文件 | - > [--removeonsuspend= yes | no ]

VBoxManage controlvm < UUID | 虚拟机名称 > removeencpassword <ID>

VBoxManage controlvm < UUID | 虚拟机名称 > removeallencpasswords

VBoxManage controlvm < UUID | 虚拟机名称 > changeuartmodeN disconnected | server 管道名 | client 管道名 | tcpserver 端口 | tcpclient 主机名:端口 | file 文件名 | 设备名

VBoxManage controlvm < UUID | 虚拟机名称 > autostart-enabledN on | off

VBoxManage controlvm < UUID | 虚拟机名称 > autostart-delay

说明

VBoxManage controlvm 命令使您能够更改运行中虚拟机 (VM) 的状态。以下部分描述了您可以使用的子命令:

暂停虚拟机

VBoxManage controlvm < uuid | vmname > pause

VBoxManage controlvm 虚拟机名称 pause 命令暂时停止虚拟机的执行。暂停时,虚拟机的状态不会永久更改。

虚拟机窗口显示为灰色,窗口标题栏指示虚拟机当前已暂停。此操作等同于从 GUI 的“控制”菜单中选择“暂停”

恢复已暂停的虚拟机

VBoxManage controlvm < uuid | vmname > resume

VBoxManage controlvm 虚拟机名称 resume 命令重新启动已暂停虚拟机的执行。此操作等同于从 GUI 的“控制”菜单中选择“恢复”

重置虚拟机

VBoxManage controlvm < uuid | vmname > reset

VBoxManage controlvm 虚拟机名称 reset 命令对虚拟机执行冷重置。此命令对虚拟机的作用与按下物理计算机上的重置按钮相同。

冷重启会立即重新启动和重新引导客户操作系统 (OS)。在重置之前不会保存虚拟机的状态,因此可能会丢失数据。此操作等同于从 GUI 的“控制”菜单中选择“重置”

关闭虚拟机电源

VBoxManage controlvm < uuid | vmname > poweroff

The VBoxManage controlvm vmname poweroff command powers off the VM. This command has the same effect on a VM as pulling the power cable on a physical computer.

在断电前不会保存虚拟机的状态,因此数据可能会丢失。此操作等同于在图形用户界面 (GUI) 的“计算机”菜单中选择“关闭”,或单击虚拟机窗口的“关闭”按钮,然后选择“关闭计算机电源”

在断电状态下,您可以重启虚拟机。请参见第 8.19 节“VBoxManage startvm”

保存虚拟机状态

VBoxManage controlvm < uuid | vmname > savestate

VBoxManage controlvm vmname savestate 命令会将虚拟机的当前状态保存到磁盘,然后停止虚拟机。

此操作等同于在 GUI 的“计算机”菜单中选择“关闭”,或单击虚拟机窗口的“关闭”按钮,然后选择“保存计算机状态”

在已保存状态下,您可以重启虚拟机。它将完全按照您保存时的状态继续运行。

向虚拟机发送 ACPI 关机信号

VBoxManage controlvm < uuid | vmname > acpipowerbutton

VBoxManage controlvm vmname acpipowerbutton 命令会向虚拟机发送 ACPI 关机信号。此命令对虚拟机的影响与按下物理计算机电源按钮的效果相同。

只要虚拟机运行的客户操作系统提供适当配置的 ACPI 支持,此命令就会触发虚拟机内部的操作系统关机。

向虚拟机发送 ACPI 睡眠信号

VBoxManage controlvm < uuid | vmname > acpisleepbutton

VBoxManage controlvm vmname acpisleepbutton 命令会向虚拟机发送 ACPI 睡眠信号。

只要虚拟机运行的客户操作系统提供适当配置的 ACPI 支持,此命令就会触发虚拟机内部的睡眠机制。

重启客户机操作系统

VBoxManage controlvm < uuid | vmname > reboot

VBoxManage controlvm vmname reboot 命令要求客户机操作系统自行重启。

此命令要求在虚拟机中安装增强功能 (Guest Additions)。

关闭客户机操作系统

VBoxManage controlvm < uuid | vmname > shutdown [--force]

VBoxManage controlvm vmname shutdown 命令要求客户机操作系统停止并关机,可以选择强制关机。

此命令要求在虚拟机中安装增强功能 (Guest Additions)。

向虚拟机发送键盘扫描码

VBoxManage controlvm < uuid | vmname > keyboardputscancode <hex> [hex...]

VBoxManage controlvm vmname keyboardputscancode 命令会向虚拟机发送键盘扫描码命令。

有关键盘扫描码的信息,请参见 http://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html

向虚拟机发送键盘字符串

VBoxManage controlvm < uuid | vmname > keyboardputstring <string> [string...]

VBoxManage controlvm vmname keyboardputstring 命令会向虚拟机发送键盘字符串。

向虚拟机发送文件

VBoxManage controlvm < uuid | vmname > keyboardputfile <filename>

VBoxManage controlvm vmname keyboardputfile 命令会向虚拟机发送文件。

设置虚拟机的链路状态

VBoxManage controlvm < uuid | vmname > setlinkstateN < on | off >

VBoxManage controlvm vmname setlinkstateN 命令允许您从网络接口实例 (N) 连接或断开虚拟网线。有效值为 onoff。默认值为 on

设置虚拟机要使用的网络类型

VBoxManage controlvm < uuid | vmname > nicN < null | nat | bridged | intnet | hostonly | generic | natnetwork > [device-name]

VBoxManage controlvm vmname nicN 命令指定在指定虚拟机的虚拟网卡上使用的网络类型。N1 开始编号。

以下有效网络类型也在第 6.2 节“网络模式简介”中进行了描述

  • null 指定虚拟机未连接到主机系统。

  • nat 指定虚拟机使用网络地址转换 (NAT)。

  • bridged 指定虚拟机使用桥接网络。

  • intnet 指定虚拟机通过使用内部网络与其他虚拟机通信。

  • hostonly 指定虚拟机使用仅主机网络。

  • natnetwork 指定虚拟机使用 NAT 网络。

  • generic 指定虚拟机可以访问不常用的子模式

跟踪虚拟机的网络流量

VBoxManage controlvm < uuid | vmname > nictraceN < on | off >

VBoxManage controlvm vmname nictraceN 命令允许您跟踪指定虚拟网卡 (N) 上的网络流量。N1 开始编号。有效值为 onoff。默认值为 off

如果您没有为跟踪文件配置文件名,则会使用默认文件,并将其放置在虚拟机子目录中。

指定虚拟机的网络流量跟踪日志文件

VBoxManage controlvm < uuid | vmname > nictracefileN <filename>

VBoxManage controlvm vmname nictracefileN 命令允许您为指定的虚拟网卡 (N) 指定网络流量跟踪日志文件的名称。N1 开始编号。

指定虚拟机要使用的混杂模式

VBoxManage controlvm < uuid | vmname > nicpromiscN < deny | allow-vms | allow-all >

VBoxManage controlvm vmname nicpromiscN 命令允许您指定如何处理桥接网络的混杂模式。默认值 deny 会隐藏所有不用于此虚拟机的数据流量。allow-vms 值会从此虚拟机中隐藏所有主机流量,但允许虚拟机查看进出其他虚拟机的数据流量。allow-all 值会完全移除此限制。

指定虚拟机的网络后端属性值

VBoxManage controlvm < uuid | vmname > nicpropertyN <prop-name=prop-value>

VBoxManage controlvm vmname nicpropertyNprop-name=prop-value 命令与 nicgenericdrv 结合使用,使您能够将属性值传递给不常用的网络后端。

这些属性是后端引擎特有的,并且在 UDP 隧道和 VDE 后端驱动程序之间有所不同。请参见第 6.8 节“UDP 隧道网络”

指定虚拟机的 NAT 端口转发规则

VBoxManage controlvm < uuid | vmname > natpfN < [rulename] ,tcp | udp, [host-IP], hostport, [guest-IP], guestport >

VBoxManage controlvm vmname natpfN 命令指定 NAT 端口转发规则。请参见第 6.3.1 节“使用 NAT 配置端口转发”

删除虚拟机的 NAT 端口转发规则

VBoxManage controlvm < uuid | vmname > natpfN delete <rulename>

VBoxManage controlvm vmname natpfN delete 命令会删除指定的 NAT 端口转发规则。请参见第 6.3.1 节“使用 NAT 配置端口转发”

更改虚拟机客户机内存气球的大小

VBoxManage controlvm < uuid | vmname > guestmemoryballoon <balloon-size>

VBoxManage controlvm vmname guestmemoryballoon 命令会更改客户机内存气球的大小。客户机内存气球是 Oracle VM VirtualBox 增强功能从客户机操作系统分配并返回给虚拟机管理程序以供其他虚拟机重用的内存。您指定的值以兆字节为单位。请参见第 4.10.1 节“内存气球”

使主机系统 USB 设备对虚拟机可见

VBoxManage controlvm < uuid | vmname > usbattach < uuid | address > [--capturefile=filename]

VBoxManage controlvm vmname usbattach 命令会动态地将主机 USB 设备附加到虚拟机,使其可见。您无需创建筛选器。

通过其通用唯一标识符 (UUID) 或其在主机系统上的地址指定 USB 设备。使用 VBoxManage list usbhost 命令获取有关主机系统上 USB 设备的信息。

使用 --capturefile 选项指定要写入日志数据的文件的绝对路径。

使主机系统 USB 设备对虚拟机不可见

VBoxManage controlvm < uuid | vmname > usbdetach < uuid | address >

VBoxManage controlvm vmname usbdetach 命令会动态地从虚拟机分离主机 USB 设备,使其不可见。您无需创建筛选器。

通过其 UUID 或其在主机系统上的地址指定 USB 设备。使用 VBoxManage list usbhost 命令获取有关主机系统上 USB 设备的信息。

启用或禁用从主机系统捕获音频

VBoxManage controlvm < uuid | vmname > audioin < on | off >

VBoxManage controlvm vmname audioin 命令指定是启用还是禁用从主机系统捕获音频。有效值为 on(启用音频捕获)和 off(禁用音频捕获)。默认值为 off

启用或禁用虚拟机的音频播放

VBoxManage controlvm < uuid | vmname > audioout < on | off >

VBoxManage controlvm vmname audioout 命令指定是启用还是禁用客户虚拟机中的音频播放。有效值为 on(启用音频播放)和 off(禁用音频播放)。默认值为 off

指定如何共享主机操作系统或客户机操作系统剪贴板

VBoxManage controlvm < uuid | vmname > clipboard mode < disabled | hosttoguest | guesttohost | bidirectional >

VBoxManage controlvm vmname clipboard mode 命令指定如何与主机系统或虚拟机共享客户机或主机操作系统的剪贴板。有效值为 disabledhosttoguestguesttohostbidirectional。默认值为 disabled。请参见第 3.4 节“常规设置”

此功能要求在虚拟机中安装 Oracle VM VirtualBox 增强功能。

指定是否可以通过剪贴板传输文件

VBoxManage controlvm < uuid | vmname > clipboard filetransfers < on | off >

VBoxManage controlvm vmname clipboard filetransfers 命令指定是否可以在主机和虚拟机之间通过剪贴板传输文件,具体取决于允许的方向。有效值为 offon。默认值为 off

此功能要求在虚拟机中安装 Oracle VM VirtualBox 增强功能。

设置主机系统与虚拟机之间的拖放模式

VBoxManage controlvm < uuid | vmname > draganddrop < disabled | hosttoguest | guesttohost | bidirectional >

VBoxManage controlvm vmname draganddrop 命令指定主机系统与虚拟机之间使用的当前拖放模式。有效值为 disabledhosttoguestguesttohostbidirectional。默认值为 disabled。请参见第 4.4 节“拖放”

此功能要求在虚拟机中安装 Oracle VM VirtualBox 增强功能。

启用或禁用 VRDE 服务器

VBoxManage controlvm < uuid | vmname > vrde < on | off >

VBoxManage controlvm vmname vrde 命令启用或禁用 VirtualBox 远程桌面扩展 (VRDE) 服务器(如果已安装)。有效值为 onoff。默认值为 off

指定 VRDE 服务器端口

VBoxManage controlvm < uuid | vmname > vrdeport <port>

VBoxManage controlvm vmname vrdeport 命令指定 VRDE 服务器可以绑定的端口或端口范围。默认值为 default0,即标准 RDP 端口 3389

另请参见第 8.10.2.6 节“远程计算机设置”中的 --vrde-port 选项说明。

指定 VRDE 服务器端口号和 IP 地址

VBoxManage controlvm < uuid | vmname > vrdeproperty <prop-name=prop-value>

VBoxManage controlvm vmname vrdeproperty 命令指定 VRDE 服务器可以绑定到的虚拟机上的端口号和 IP 地址。

  • TCP/Ports 指定 VRDE 服务器可以绑定到的端口或端口范围。默认值为 default0,即标准 RDP 端口 3389

    另请参见第 8.10.2.6 节“远程计算机设置”中的 --vrde-port 选项说明。

  • TCP/Address 指定 VRDE 服务器绑定到的主机网络接口的 IP 地址。指定后,服务器只接受在指定主机网络接口上连接。

    另请参见第 8.10.2.6 节“远程计算机设置”中的 --vrde-address 选项说明。

  • VideoChannel/Enabled 指定是否启用 VirtualBox 远程桌面协议 (VRDP) 视频通道。有效值为 1(启用视频通道)和 0(禁用视频通道)。默认值为 off。请参见第 7.1.9 节“VRDP 视频重定向”

  • VideoChannel/Quality 指定 VRDE 服务器视频通道上的 JPEG 压缩级别。有效值在 10% 到 100% 之间(包括 10% 和 100%)。值越低表示质量越低但压缩率越高。默认值为 100。请参见第 7.1.9 节“VRDP 视频重定向”

  • VideoChannel/DownscaleProtection 指定是否启用视频通道缩减保护功能。指定 1 以启用此功能。此功能默认禁用。

    启用后,如果视频大小等于影子缓冲区大小,则视频将以全屏模式显示。如果视频大小介于全屏模式和缩减阈值之间,则视频不显示,因为它可能是一个在缩减后无法读取的应用程序窗口。禁用时,缩减保护功能始终尝试显示视频。

  • Client/DisableDisplay 指定是否禁用 VRDE 服务器显示功能。有效值为 1(禁用此功能)和空字符串 ("")(启用此功能)。默认值为空字符串。请参见第 7.1.10 节“VRDP 自定义”

  • Client/DisableInput 指定是否禁用 VRDE 服务器输入功能。有效值为 1(禁用此功能)和空字符串 ("")(启用此功能)。默认值为 1。请参见第 7.1.10 节“VRDP 自定义”

  • Client/DisableAudio 指定是否禁用 VRDE 服务器音频功能。有效值为 1(禁用此功能)和空字符串 ("")(启用此功能)。默认值为 1。请参见第 7.1.10 节“VRDP 自定义”

  • Client/DisableUSB 指定是否禁用 VRDE 服务器 USB 功能。有效值为 1(禁用此功能)和空字符串 ("")(启用此功能)。默认值为 1。请参见第 7.1.10 节“VRDP 自定义”

  • Client/DisableClipboard 指定是否禁用 VRDE 剪贴板功能。有效值为 1(禁用此功能)和空字符串 ("")(启用此功能)。要重新启用此功能,请使用 Client/DisableClipboard=。默认值为 1。请参见第 7.1.10 节“VRDP 自定义”

  • Client/DisableUpstreamAudio 指定是否禁用 VRDE 上游音频功能。有效值为 1(禁用此功能)和空字符串 ("")(启用此功能)。要重新启用此功能,请使用 Client/DisableUpstreamAudio=。默认值为 1。请参见第 7.1.10 节“VRDP 自定义”

  • Client/DisableRDPDR 指定是否禁用 VRDE 服务器上的智能卡 RDP 设备重定向功能。有效值为 1(禁用此功能)和空字符串 ("")(启用此功能)。默认值为 1。请参见第 7.1.10 节“VRDP 自定义”

  • H3DRedirect/Enabled 指定是否启用 VRDE 服务器 3D 重定向功能。有效值为 1(启用此功能)和空字符串 ("")(禁用此功能)。请参见第 7.1.10 节“VRDP 自定义”

  • Security/Method 指定连接要使用的安全方法。请参见第 7.1.6 节“RDP 加密”

    • Negotiate 接受增强型 (TLS) 和标准 RDP 安全连接。安全方法与客户端协商。这是默认值。

    • RDP 仅接受标准 RDP 安全连接。

    • TLS 仅接受增强型 RDP 安全连接。客户端必须支持 TLS。

  • Security/ServerCertificate 指定连接要使用的服务器证书的绝对路径。请参见第 7.1.6 节“RDP 加密”

  • Security/ServerPrivateKey 指定服务器私钥的绝对路径。请参见第 7.1.6 节“RDP 加密”

  • Security/CACertificate 指定 CA 自签名证书的绝对路径。请参见第 7.1.6 节“RDP 加密”

  • Audio/RateCorrectionMode 指定要使用的速率校正模式。

    • VRDP_AUDIO_MODE_VOID 表示未指定任何模式。使用此值可以取消设置已设置的任何音频模式。

    • VRDP_AUDIO_MODE_RC 指定使用速率校正模式。

    • VRDP_AUDIO_MODE_LPF 指定使用低通滤波器模式。

    • VRDP_AUDIO_MODE_CS 指定使用客户端同步模式以防止客户端队列下溢或溢出。

  • Audio/LogPath 指定音频日志文件的绝对路径。

指定 VRDP 视频重定向的图像质量

VBoxManage controlvm < uuid | vmname > vrdevideochannelquality <percentage>

VBoxManage controlvm vmname vrdevideochannelquality 命令将视频重定向的图像质量设置为 JPEG 压缩级别值。有效值在 10% 到 100% 之间(包括 10% 和 100%)。值越低表示质量越低但压缩率越高。请参见第 7.1.9 节“VRDP 视频重定向”

指定客户虚拟机的视频模式

VBoxManage controlvm < uuid | vmname > setvideomodehint <xres> <yres> <bpp> [[display] [ enabled:yes | no | [x-origin y-origin]]]

VBoxManage controlvm vmname setvideomodehint 命令指定客户虚拟机要使用的视频模式。您必须安装 Oracle VM VirtualBox 增强功能。请注意,此功能并非适用于所有客户机系统。

指定客户虚拟机上显示的屏幕布局

VBoxManage controlvm < uuid | vmname > setscreenlayout <display> < on | primary x-origin y-origin x-resolution y-resolution bpp | off >

VBoxManage controlvm vmname setscreenlayout 命令可用于配置多屏幕显示。可以启用或禁用客户虚拟机上的指定屏幕,或配置自定义屏幕布局。

截取虚拟机显示屏的屏幕截图

VBoxManage controlvm < UUID | 虚拟机名称 > screenshotpng <文件名> [显示器]

VBoxManage controlvm vmname screenshotpng 命令截取客户机显示屏的屏幕截图,并将其保存为指定文件中的 PNG 格式。

  • filename 指定要创建的 PNG 文件的名称。

  • display 指定屏幕截图的显示编号。对于单个显示器客户机显示屏,此值为 0

启用或禁用虚拟机会话的录制

VBoxManage controlvm < UUID | 虚拟机名称 > recording < on | off >

VBoxManage controlvm vmname recording 命令启用或禁用将虚拟机录制到 WebM/VP8 文件。有效值为 on(在虚拟机启动时开始录制)和 off(禁用录制)。默认值为 off

指定要录制的虚拟机屏幕

VBoxManage controlvm < UUID | 虚拟机名称 > recording screens < all | none | 屏幕ID[,屏幕ID...] >

VBoxManage controlvm vmname recording screens 命令允许您指定要录制的虚拟机屏幕。您指定的每个屏幕的录制内容都保存到机器文件夹中的单独文件中。启用录制时,您无法修改此设置。

  • all 指定录制所有虚拟机屏幕。

  • none 指定不录制任何虚拟机屏幕。

  • screen-ID 指定要录制的一个或多个虚拟机屏幕。

指定保存虚拟机录制内容的文件

VBoxManage controlvm < UUID | 虚拟机名称 > recording filename <文件名>

VBoxManage controlvm vmname recording filename 命令指定保存录制内容的文件。启用录制时,您无法修改此设置。

默认设置是将录制内容存储在机器文件夹中,使用虚拟机名称作为文件名,文件扩展名为 webm

指定录制视频的分辨率

VBoxManage controlvm < UUID | 虚拟机名称 > recording videores <宽度x高度>

VBoxManage controlvm vmname recording videores 命令指定录制视频的像素分辨率。启用录制时,您无法修改此设置。

使用“设置”工具查看视频录制设置,这些设置基于分辨率(帧大小)。请参见“显示”页面的“录制”选项卡上的“帧大小”字段以查看默认值。

将分辨率指定为 widthxheight

  • width 指定像素宽度。

  • height 指定像素高度。

指定视频的比特率

VBoxManage controlvm < UUID | 虚拟机名称 > recording videorate <速率>

VBoxManage controlvm vmname recording videorate 命令以每秒千比特为单位指定视频的比特率 bit-rate。增加此值可改善视频外观,但会增加文件大小。启用录制时,您无法修改此设置。

使用“设置”工具查看视频录制设置,这些设置基于帧大小。请参见“显示”页面的“录制”选项卡上的“视频质量”字段以查看默认值。

指定视频的最大频率

VBoxManage controlvm < UUID | 虚拟机名称 > recording videofps <帧率>

VBoxManage controlvm vmname recording videofps 命令指定要录制的视频的最大频率。视频频率以每秒帧数 (FPS) 衡量。录制会跳过频率高于指定最大值的任何帧。增加频率会减少跳过的帧数并增加文件大小。启用录制时,您无法修改此设置。

使用“设置”工具查看视频录制设置,这些设置基于帧大小。请参见“显示”页面的“录制”选项卡上的“帧速率”字段以查看默认值。

指定录制视频的最长时间

VBoxManage controlvm < UUID | 虚拟机名称 > recording maxtime <>

VBoxManage controlvm vmname recording maxtime 命令指定以秒为单位的最长录制时间。录制将在指定秒数过去后停止。如果此值为零,则录制将继续,直到您停止录制。

指定录制视频的最大大小

VBoxManage controlvm < UUID | 虚拟机名称 > recording maxfilesize <兆字节>

VBoxManage controlvm vmname recording maxfilesize 命令指定录制视频文件的最大大小(以兆字节为单位)。当文件达到指定大小时,录制将停止。如果此值为零,则录制将继续,直到您停止录制。启用录制时,您无法修改此设置。

指定 Windows 虚拟机上远程登录的凭据

VBoxManage controlvm < UUID | 虚拟机名称 > setcredentials <用户名> --passwordfile= < 文件名 | 密码 > <域名> --allowlocallogon= < yes | no >

setcredentials 命令允许您指定远程登录 Windows 虚拟机的凭据。请参见第 9.1 节“自动客户机登录”

  • username 指定用于登录 Windows 虚拟机的用户名。

  • --passwordfile=filename 指定从中获取 username 密码的文件。

    --passwordfile--password 选项互斥。

  • --password=password 指定 username 的密码。

    --password--passwordfile 选项互斥。

  • --allowlocallogin 指定是启用还是禁用本地登录。有效值为 on(启用本地登录)和 off(禁用本地登录)。

配置虚拟机的传送目标

VBoxManage controlvm < UUID | 虚拟机名称 > teleport <--host=主机名> <--port=端口名> [--maxdowntime=毫秒] [ --passwordfile=文件名 | --password=密码 ]

VBoxManage controlvm vmname teleport 命令启动指定虚拟机与指定主机系统之间的传送操作。请参见第 7.2 节“传送”

如果您指定了密码,则该密码必须与您为目标机器发出 VBoxManage modifyvm 命令时指定的密码相匹配。

--host=hostname

指定虚拟机的名称。

--port=port

指定虚拟机上应监听来自其他虚拟机的传送请求的端口。端口号可以是任何空闲的 TCP/IP 端口号,例如 6000

--maxdowntime=msec

指定传送目标虚拟机的最大停机时间(毫秒)。

--password=password

指定源机器用于传送请求的密码。只有当源机器指定相同的密码时,请求才会成功。

--password--passwordfile 选项互斥。

--passwordfile=filename

指定从中获取源机器用于传送请求的密码的文件。只有当源机器指定相同的密码时,请求才会成功。

当您指定文件名为 stdin 时,可以从标准输入读取密码。

--passwordfile--password 选项互斥。

向虚拟机添加虚拟 CPU

VBoxManage controlvm < UUID | 虚拟机名称 > plugcpu <ID>

VBoxManage controlvm vmname plugcpu 命令会将虚拟 CPU 添加到指定的虚拟机(如果启用了 CPU 热插拔)。ID 指定要添加的虚拟 CPU 的索引,并且必须是 0 到配置的最大 CPU 数量之间的数字。

从虚拟机中移除虚拟 CPU

VBoxManage controlvm < UUID | 虚拟机名称 > unplugcpu <ID>

VBoxManage controlvm vmname unplugcpu 命令会从指定的虚拟机中移除虚拟 CPU(如果启用了 CPU 热插拔)。ID 指定要移除的虚拟 CPU 的索引,并且必须是 0 到配置的最大 CPU 数量之间的数字。您不能移除 CPU 0。

设置虚拟 CPU 使用的最大物理 CPU 时间量

VBoxManage controlvm < UUID | 虚拟机名称 > cpuexecutioncap <数量>

VBoxManage controlvm vmname cpuexecutioncap 命令指定虚拟 CPU 使用的最大物理 CPU 时间量。有效值为 1100 之间的百分比。值为 50 指定单个虚拟 CPU 最多可以使用物理 CPU 的 50%。默认值为 100

请谨慎使用此功能,它可能会产生意想不到的结果,包括时间保持问题和低于指定性能。如果您想限制虚拟机的资源使用,选择适当数量的 VCPU 更可靠。

更改虚拟机进程的优先级

VBoxManage controlvm < UUID | 虚拟机名称 > vm-process-priority < default | flat | low | normal | high >

VBoxManage controlvm vmname vm-process-priority 命令指定在启动指定虚拟机以及虚拟机运行时要使用的虚拟机进程优先级方案。

有效值为

  • default – 由操作系统确定的默认进程优先级。

  • flat – 假定一种调度策略,将进程置于默认优先级,并且所有线程都处于相同优先级。

  • low – 假定一种调度策略,将进程大部分置于主机操作系统的默认优先级之下。

  • normal – 假定一种调度策略,将 CPU 资源与主机操作系统默认优先级下运行的其他进程公平共享。

  • high – 假定一种调度策略,将任务置于主机操作系统默认优先级之上。此策略可能会轻易导致系统中其他任务资源不足。

将网络摄像头附加到虚拟机

VBoxManage controlvm < UUID | 虚拟机名称 > webcam attach [路径名 [设置]]

VBoxManage controlvm vmname webcam attach 命令将网络摄像头附加到正在运行的虚拟机。将网络摄像头指定为网络摄像头在主机操作系统上的绝对路径或别名。使用 VBoxManage list webcams 命令获取网络摄像头别名。

请注意,别名 .0 是主机操作系统上的默认视频输入设备。.1 是第一个视频输入设备,.2 是第二个视频输入设备,依此类推。设备的顺序特定于主机系统。

您可以以分号 (;) 分隔的名称-值对形式指定可选设置。这些属性使您能够配置模拟网络摄像头设备。

支持以下设置

MaxFramerate

指定向虚拟机发送视频帧的最高速率。速率以每秒帧数表示。较高的帧速率会增加 CPU 负载,因此您可以使用此设置来减少 CPU 负载。默认值为 no maximum limit。此值使虚拟机能够使用网络摄像头支持的任何帧速率。

MaxPayloadTransferSize

指定虚拟机在一个缓冲区中从模拟网络摄像头接收的最大字节数。默认设置为 3060 字节,某些网络摄像头使用此设置。如果虚拟机能够使用更大的缓冲区,更高的值可能会稍微降低 CPU 负载。请注意,某些客户机操作系统可能不支持更高的 MaxPayloadTransferSize 值。

从虚拟机分离网络摄像头

VBoxManage controlvm < UUID | 虚拟机名称 > webcam detach [路径名]

VBoxManage controlvm vmname webcam detach 命令将网络摄像头从正在运行的虚拟机中分离。将网络摄像头指定为主机操作系统上网络摄像头的绝对路径或其别名。使用VBoxManage list webcams 命令可获取网络摄像头别名。

当网络摄像头设备从主机分离时,主机操作系统决定模拟网络摄像头的行为方式。

  • Windows 主机: 模拟的网络摄像头设备会自动从虚拟机中分离。

  • 运行 OS X 10.7 或更高版本的 Mac OS X 主机: 模拟的网络摄像头设备仍附加到虚拟机,您必须使用VBoxManage controlvm webcam detach 命令手动分离它。

  • Linux 主机: 仅当网络摄像头正在积极传输视频时,模拟的网络摄像头设备才会自动从虚拟机中分离。如果模拟的网络摄像头处于非活动状态,请使用VBoxManage controlvm vmname webcam detach 命令手动分离它。

列出附加到虚拟机的网络摄像头

VBoxManage controlvm < UUID | 虚拟机名称 > webcam list

VBoxManage controlvm vmname webcam list 命令列出附加到正在运行的虚拟机的网络摄像头。输出显示了通过使用VBoxManage controlvm vmname webcam attach 命令将网络摄像头附加到虚拟机的绝对路径或别名列表。

为虚拟机设置加密密码

VBoxManage controlvm < UUID | 虚拟机名称 > addencpassword <ID> < 密码文件 | - > [--removeonsuspend= yes | no ]

VBoxManage controlvm vmname addencpassword 命令为 vmname 加密虚拟机提供加密密码,以启用无头启动。指定主机系统上密码文件的绝对路径。如果 filename-VBoxManage 将提示输入加密密码。

使用 --removeonsuspend 选项指定在虚拟机暂停时是否保存密码或从虚拟机内存中清除密码。

如果虚拟机已暂停且密码已清除,请使用VBoxManage controlvm vmname addencpassword 提供密码以恢复虚拟机上的执行。当您不希望在虚拟机因主机暂停事件而暂停时将密码存储在虚拟机内存中时,请使用此功能。

注意

您可以加密虚拟机使用的硬盘映像上存储的数据。Oracle VM VirtualBox 在 XTS 模式下使用 AES 算法,并支持 128 位或 256 位数据加密密钥 (DEK)。加密的 DEK 存储在介质属性中,并在虚拟机启动时(当您提供加密密码时)解密。

使用VBoxManage encryptmedium 命令创建 DEK 加密介质。请参阅第 9.29.2 节,“加密磁盘映像”

当您启动加密的虚拟机时,Oracle VM VirtualBox GUI 会提示您输入加密密码。

使用以下命令执行加密虚拟机的无头启动

          $ VBoxManage startvm vmname --type headless
        

然后,使用以下命令提供加密密码

          $ VBoxManage vmname controlvm addencpassword vmname -
          Password: encryption-password

禁用虚拟机的加密密码

VBoxManage controlvm < UUID | 虚拟机名称 > removeencpassword <ID>

VBoxManage controlvm vmname removeencpassword 命令禁用附加到虚拟机的所有加密介质的特定加密密码。

ID 是您要禁用的加密密码的密码标识符。

禁用虚拟机的所有加密密码

VBoxManage controlvm < UUID | 虚拟机名称 > removeallencpasswords

VBoxManage controlvm vmname removeallencpasswords 命令禁用附加到虚拟机的所有加密介质的所有加密密码。

更改虚拟机虚拟串行端口的连接模式

VBoxManage controlvm < UUID | 虚拟机名称 > changeuartmodeN disconnected | server 管道名 | client 管道名 | tcpserver 端口 | tcpclient 主机名:端口 | file 文件名 | 设备名

VBoxManage controlvm vmname changeuartmode 命令更改指定虚拟串行端口的连接模式。有效的串行端口值为从 1 开始的整数。

断开连接的

断开设备。

服务器 pipe-name

指定服务器的管道名称。

客户端 pipe-name

指定客户端的管道名称。

tcpserver port

指定 TCP 服务器的端口号。

tcpclient hostname:port

指定 TCP 客户端的主机名和端口号。

文件 filename

指定文件的名称。

设备名称

指定设备的名称。

在主机系统启动时启用虚拟机自动启动

VBoxManage controlvm < UUID | 虚拟机名称 > autostart-enabledN on | off

VBoxManage controlvm vmname autostart-enabled 命令指定是否在主机系统启动时自动启动虚拟机。在使用此功能之前,您必须进行一些主机系统配置。请参阅第 9.21 节,“在系统启动期间启动虚拟机”。有效值为 on(启用虚拟机的自动启动功能)和 off(禁用它)。默认值为 off

设置主机系统启动时虚拟机的启动延迟

VBoxManage controlvm < UUID | 虚拟机名称 > autostart-delay

VBoxManage controlvm vmname autostart-delay 命令指定虚拟机在主机系统启动时启动前的延迟(以秒为单位)。请参阅第 9.21 节,“在系统启动期间启动虚拟机”

示例

以下命令暂时停止 ol7 虚拟机的执行。

$ VBoxManage controlvm ol7 pause

以下命令配置 ol7 虚拟机的共享剪贴板操作。允许主机和访客之间双向复制剪贴板数据。

$ VBoxManage controlvm ol7 clipboard mode bidirectional

8.21. VBoxManage unattended

无人参与的访客操作系统安装。

概要

VBoxManage unattended detect <--iso=安装ISO> [--machine-readable]

VBoxManage unattended install <UUID|虚拟机名称> <--iso=安装ISO> [--user=登录名] [--password=密码] [--password-file=文件] [--full-user-name=全名] [--key=产品密钥] [--install-additions] [--no-install-additions] [--additions-iso=增强功能ISO] [--install-txs] [--no-install-txs] [--validation-kit-iso=测试ISO] [--locale=ll_CC] [--country=CC] [--time-zone=时区] [--hostname=完全限定域名] [--package-selection-adjustment=关键词] [--dry-run] [--auxiliary-base-path=路径] [--image-index=编号] [--script-template=文件] [--post-install-template=文件] [--post-install-command=命令] [--extra-install-kernel-parameters=参数] [--language=语言] [--start-vm=会话类型]

描述

unattended detect

VBoxManage unattended detect <--iso=安装ISO> [--machine-readable]

检测指定安装 ISO 上的访客操作系统 (OS) 并显示结果。这可以用作创建虚拟机以安装 ISO 时的输入。

--iso=install-iso

要运行检测的安装 ISO。

--machine-readable

生成更易于从脚本中解析的输出。

unattended install

VBoxManage unattended install <UUID|虚拟机名称> <--iso=安装ISO> [--user=登录名] [--password=密码] [--password-file=文件] [--full-user-name=全名] [--key=产品密钥] [--install-additions] [--no-install-additions] [--additions-iso=增强功能ISO] [--install-txs] [--no-install-txs] [--validation-kit-iso=测试ISO] [--locale=ll_CC] [--country=CC] [--time-zone=时区] [--hostname=完全限定域名] [--package-selection-adjustment=关键词] [--dry-run] [--auxiliary-base-path=路径] [--image-index=编号] [--script-template=文件] [--post-install-template=文件] [--post-install-command=命令] [--extra-install-kernel-parameters=参数] [--language=语言] [--start-vm=会话类型]

重新配置指定的虚拟机以进行安装,并可选地启动它。

uuid|vmname

虚拟机的 UUID 或名称(区分大小写)。

--iso=install-iso

要运行检测的安装 ISO。

--user=login

登录名。(默认值:vboxuser)

--password=password

登录密码。此密码用于 --user 指定的用户以及 root/管理员用户。(默认值:changeme)

--password-file=file

提供密码的 --password 替代选项。特殊文件名 stdin 可用于从标准输入读取密码。

--full-user-name=name

完整用户名。(默认值:--user)

--key=product-key

访客操作系统产品密钥。并非所有访客操作系统都要求此密钥。

--install-additions, --no-install-additions

是否安装 VirtualBox 增强功能。(默认值:--no-install-additions)

--additions-iso=add-iso

VirtualBox 增强功能 ISO 的路径。(默认值:已安装/已下载的增强功能)

--install-txs, --no-install-txs

是否从 VirtualBox ValidationKit 安装测试执行服务 (TXS)。这在准备虚拟机进行测试或类似操作时很有用。(默认值:--no-install-txs)

--validation-kit-iso=testing-iso

VirtualBox ValidationKit ISO 的路径。如果指定了 --install-txs,则此选项是必需的。

--locale=ll_CC

访客的基本语言环境规范,例如 en_US、de_CH 或 nn_NO。(默认值:主机或 en_US)

--country=CC

如果与 --location 指定的国家/地区代码不同,则为两位国家/地区代码。

--time-zone=tz

访客操作系统要设置的时区。(默认值:主机时区或 UTC)

--hostname=fqdn

访客机器的完全限定域名。(默认值:vmname.myguest.virtualbox.org)

--package-selection-adjustment=keyword

调整访客操作系统包/组件的选择。此选项可以多次指定。目前唯一识别的关键字是 minimal,它会为某些访客操作系统触发最小安装。

--dry-run(试运行)

不创建任何文件或更改虚拟机配置。

--start-vm=session-type

使用 session-type 指定的前端启动虚拟机。这与 startvm 命令的 --type 选项相同,但我们添加了 none 以指示不应启动虚拟机。(默认值:none

高级选项

--auxiliary-base-path=path

为安装生成的介质相关文件的路径前缀。(默认值:vm-config-dir/Unattended-vm-uuid-)

--image-index=number

Windows 安装映像索引。(默认值:1)

--script-template=file

无人参与安装脚本模板。(默认值:取决于 IMachine::OSTypeId)

--post-install-template=file

安装后脚本模板。(默认值:取决于 IMachine::OSTypeId)

--post-install-command=command

安装完成后要运行的单个命令。确切的格式和运行时间取决于访客操作系统安装程序。

--extra-install-kernel-parameters=params

安装期间要使用的额外 Linux 内核参数列表。(默认值:取决于 IMachine::OSTypeId)

--language=lang

指定 Windows 安装的 UI 语言。lang 通常采用 {ll}-{CC} 形式。请参阅VBoxManage unattended detect 的 detectedOSLanguages 结果。(默认值:detectedOSLanguages[0])

8.22. VBoxManage discardstate

丢弃虚拟机的已保存状态。

概要

VBoxManage discardstate < UUID | 虚拟机名称 >

描述

VBoxManage discardstate 命令丢弃未运行的虚拟机 (VM) 的已保存状态。此命令将导致虚拟机操作系统在下次启动虚拟机时重新启动。

注意

如果可能,请避免执行此操作。此命令的效果等同于拔掉物理机的电源线。

uuid|vmname

指定虚拟机的通用唯一标识符 (UUID) 或名称。

示例

以下命令丢弃名为 vm2 的虚拟机的已保存状态文件。下次启动虚拟机时,虚拟机的操作系统将重新启动。

$ VBoxManage discardstate vm2

8.23. VBoxManage adoptstate

根据已保存状态文件更改虚拟机状态。

概要

VBoxManage adoptstate < UUID | 虚拟机名称 > <状态文件名>

描述

VBoxManage adoptstate 命令使您能够将虚拟机 (VM) 的状态更改为已保存状态文件 (.sav) 中描述的状态。此操作称为虚拟机采用已保存状态文件。已保存状态文件必须独立于虚拟机配置。

采用保存状态后启动虚拟机时,虚拟机将从保存的状态文件中恢复其状态。

仅将此命令用于自定义部署。

UUID | 虚拟机名称

指定虚拟机的通用唯一标识符 (UUID) 或名称。

状态文件名

指定保存的状态文件的名称。

示例

以下命令通过名为 vm2 的虚拟机采用名为 mystate.sav 的已保存状态文件。随后启动名为 vm2 的虚拟机将从已保存状态文件 mystate.sav 恢复状态。

$ VBoxManage adoptstate vm2 /home/user/mystate.sav

8.24. VBoxManage snapshot

管理虚拟机快照。

概要

VBoxManage snapshot <UUID|虚拟机名称>

VBoxManage snapshot <UUID|虚拟机名称> take <快照名称> [--description=描述] [--live] [--uniquename Number,Timestamp,Space,Force]

VBoxManage snapshot <UUID|虚拟机名称> delete <快照名称>

VBoxManage snapshot <UUID|虚拟机名称> restore <快照名称>

VBoxManage snapshot <UUID|虚拟机名称> restorecurrent

VBoxManage snapshot <UUID|虚拟机名称> edit < 快照名称 | --current > [--description=描述] [--name=新名称]

VBoxManage snapshot <UUID|虚拟机名称> list [[--details] | [--machinereadable]]

VBoxManage snapshot <UUID|虚拟机名称> showvminfo <快照名称>

描述

VBoxManage snapshot 命令管理快照。

Oracle VM VirtualBox 使用快照来捕获虚拟机 (VM) 的状态。您以后可以使用快照恢复到快照描述的状态。

快照是虚拟机设置的完整副本。如果在虚拟机运行时进行快照,快照还包括虚拟机的状态文件。

拍摄快照后,Oracle VM VirtualBox 会为与主机关联的每个普通硬盘创建一个差异硬盘。当您恢复快照时,Oracle VM VirtualBox 会使用这些差异文件快速重置虚拟机虚拟硬盘的内容。

对于每个VBoxManage snapshot 命令,您必须指定要拍摄快照的虚拟机的名称或通用唯一标识符 (UUID)。

通用命令操作数

uuid|vmname

指定虚拟机的 UUID 或名称。

拍摄虚拟机快照

VBoxManage snapshot <UUID|虚拟机名称> take <快照名称> [--description=描述] [--live] [--uniquename Number,Timestamp,Space,Force]

VBoxManage snapshot take 命令拍摄虚拟机当前状态的快照。您必须为快照提供一个名称,并且可以选择提供一个描述。新快照作为当前快照的子快照插入到快照树中,然后成为新的当前快照。

--description=description

指定快照的描述。

--live

指定在创建快照时虚拟机不停止。此操作称为实时快照。

--uniquename Number,Timestamp,Space,Force

待定。

snapshot-name

指定要创建的快照的名称。

删除快照

VBoxManage snapshot <UUID|虚拟机名称> delete <快照名称>

VBoxManage snapshot delete 命令删除指定的快照。

删除操作可能需要一些时间才能完成。这是因为与快照关联的差异映像可能需要与其子差异映像合并。

snapshot-name

指定快照的 UUID 或名称。

恢复快照

VBoxManage snapshot <UUID|虚拟机名称> restore <快照名称>

VBoxManage snapshot restore 命令恢复指定的快照。此操作将虚拟机的设置和当前状态重置为快照的状态。恢复快照时虚拟机的状态将丢失。恢复后,指定的快照成为新的当前快照,后续快照将是该快照的子快照。

snapshot-name

指定快照的 UUID 或名称。

恢复当前快照

VBoxManage snapshot <UUID|虚拟机名称> restorecurrent

VBoxManage snapshot restorecurrent 命令恢复当前快照。当前快照是导出当前状态的快照。此命令等效于使用VBoxManage snapshot restore 命令并指定当前快照的名称或 UUID。

更改现有快照的名称或描述

VBoxManage snapshot <UUID|虚拟机名称> edit < 快照名称 | --current > [--description=描述] [--name=新名称]

VBoxManage snapshot edit 命令使您能够更改指定快照的名称或描述。

snapshot-name

指定要编辑的快照的 UUID 或名称。

此选项与 --current 选项互斥。

--current

指定您更新快照的当前版本。

此选项与特定快照名称或其 UUID 互斥。

--description=description

指定快照的新描述。

--name=new-name

指定快照的新名称。

列出快照

VBoxManage snapshot <UUID|虚拟机名称> list [[--details] | [--machinereadable]]

VBoxManage snapshot list 命令列出虚拟机的所有快照。

--details

指定输出显示有关快照的详细信息。

此选项与 --machinereadable 选项互斥。

--machinereadable

指定输出以机器可读格式显示。

此选项与 --details 选项互斥。

显示快照设置的信息

VBoxManage snapshot <UUID|虚拟机名称> showvminfo <快照名称>

VBoxManage snapshot showvminfo 命令使您能够查看属于现有快照的虚拟机设置。

snapshot-name

指定快照的 UUID 或名称。

示例

以下命令为 ol7u4 虚拟机创建快照。该快照名为 ol7u4-snap-001。该命令使用 --description 选项提供快照内容的描述。

$ VBoxManage snapshot ol7u4 take ol7u4-snap-001 \
--description="Oracle Linux 7.4"

以下命令列出 ol7u4 虚拟机的快照。

$ VBoxManage snapshot ol7u4 list

以下命令更改 ol7u4 虚拟机的 ol7u4-snap-001 快照的描述。

$ VBoxManage snapshot ol7u4 edit ol7u4-snap-001 \
--description="Oracle Linux 7.4 with UEK4 kernel"

以下命令显示 ol7u4 虚拟机的 ol7u1-snap-001 快照的虚拟机设置。

$ VBoxManage snapshot ol7u4 showvminfo ol7u4-snap-001
Name:            ol7u4
Groups:          /
Guest OS:        Oracle (64-bit)
UUID:            43349d78-2ab3-4cb8-978f-0e755cd98090
Config file:     C:\Users\user1\VirtualBox VMs\ol7u4\ol7u4.vbox
...
Snapshots:

   Name: ol7u4-snap-001 (UUID: 1cffc37d-5c37-4b86-b9c5-a0f157a55f43)
   Description: Oracle Linux 7.4 with UEK4 kernel

8.25. VBoxManage closemedium

从介质注册表中移除硬盘、DVD 或软盘映像。

概要

VBoxManage closemedium [ disk | dvd | floppy ] < UUID | 文件名 > [--delete]

描述

VBoxManage closemedium 命令将硬盘、DVD 或软盘映像从 Oracle VM VirtualBox 使用的已知介质列表中移除。然后该映像在虚拟介质管理器中不可选。

要使用此命令,镜像不得附加到任何虚拟机。

(可选)您可以请求删除镜像。

disk|dvd|floppy

指定介质类型。有效值为 disk(硬盘驱动器)、dvdfloppy

uuid|filename

指定介质或镜像的通用唯一标识符 (UUID) 或绝对路径名。

--delete

删除镜像文件。

示例

以下命令从注册表中删除名为 disk01.vdi 的磁盘映像文件。

$ VBoxManage closemedium disk01.vdi

以下命令从注册表中删除名为 disk01.vdi 的磁盘映像文件并删除该映像文件。

$ VBoxManage closemedium disk01.vdi --delete

8.26. VBoxManage storageattach

附加、移除和修改虚拟机使用的存储介质。

概要

VBoxManage storageattach < UUID | 虚拟机名称 > <--storagectl=名称> [--bandwidthgroup= name | none ] [--comment=文本] [--device=编号] [--discard= on | off ] [--encodedlun=LUN] [--forceunmount] [--hotpluggable= on | off ] [--initiator=启动器] [--intnet] [--lun=LUN] [--medium= none | emptydrive | additions | UUID | 文件名 | host:驱动器 | iscsi ] [--mtype= normal | writethrough | immutable | shareable | readonly | multiattach ] [--nonrotational= on | off ] [--passthrough= on | off ] [--passwordfile=文件] [--password=密码] [--port=端口号] [--server= 名称 | IP ] [--setparentuuid=UUID] [--setuuid=UUID] [--target=目标] [--tempeject= on | off ] [--tport=端口] [--type= dvddrive | fdd | hdd ] [--username=用户名]

描述

VBoxManage storageattach 命令使您能够管理通过使用VBoxManage storagectl 命令连接到存储控制器的存储介质。

UUID | 虚拟机名称

指定虚拟机的通用唯一标识符 (UUID) 或名称。

--storagectl=name

指定存储控制器的名称。使用VBoxManage showvminfo 命令列出附加到虚拟机的存储控制器。

--port=number

指定要修改的存储控制器的端口号。除非存储控制器只有一个端口,否则必须指定此选项。

--device=number

指定要修改的端口设备号。除非存储控制器每个端口只有一个设备,否则必须指定此选项。

--type=dvddrive | fdd | hdd

指定介质关联的驱动器类型。仅当可以使用 --medium 选项或通过早期介质附加命令提供的信息确定介质类型时,才可省略此选项。

--medium=none | emptydrive | additions | uuid | filename | host:drive | iscsi

指定以下值之一

从指定插槽中移除任何现有设备。

空驱动器

仅适用于虚拟 DVD 或软盘驱动器。

使设备插槽表现得像一个可移动驱动器,其中未插入介质。

附加项

仅适用于虚拟 DVD 驱动器。

将 VirtualBox 增强功能映像附加到指定的设备插槽。

uuid

指定要附加到指定设备插槽的存储介质的 UUID。该存储介质必须已为 Oracle VM VirtualBox 所知,例如附加到另一个虚拟机的存储介质。使用VBoxManage list 命令列出介质。

文件名

指定现有磁盘映像的完整路径,以附加到指定的设备插槽。磁盘映像可以是 ISO、RAW、VDI、VMDK 或其他格式。

host:drive

仅适用于虚拟 DVD 或软盘驱动器。

将指定的设备插槽连接到主机计算机上指定的 DVD 或软盘驱动器。

iSCSI

仅适用于虚拟硬盘。

指定 iSCSI 目标,您必须为其指定附加信息。请参阅第 5.10 节,“iSCSI 服务器”

对于可移动介质,例如软盘和 DVD,您可以在虚拟机运行时进行配置更改。设备或硬盘设备插槽的更改需要关闭虚拟机电源。

--mtype=normal | writethrough | immutable | shareable | readonly | multiattach

指定此介质在快照和写入操作方面的行为。请参阅第 5.4 节,“特殊映像写入模式”

--comment=text

指定要随介质存储的可选描述。

--setuuid=uuid

在将介质附加到虚拟机之前修改其 UUID。

这是一个专家选项。不适当的值可能会导致介质无法使用,或者如果另一个虚拟机已引用同一介质,则可能导致虚拟机配置损坏。

使用 --setuuid="" 选项会为映像分配一个新的随机 UUID,如果使用文件复制实用程序复制映像,这可以解决重复 UUID 错误。

--setparentuuid=uuid

在将介质附加到虚拟机之前修改其父 UUID。

这是一个专家选项。不适当的值可能会导致介质无法使用,或者如果另一个虚拟机已引用同一介质,则可能导致虚拟机配置损坏。

--passthrough=on | off

仅适用于虚拟 DVD 驱动器。

启用向 DVD 写入。此功能是实验性的,请参阅第 5.9 节,“CD/DVD 支持”

--tempeject=on | off

仅适用于虚拟 DVD 驱动器。

指定是否允许访客触发的临时介质弹出操作。设置为 on 时,您可以弹出介质。如果虚拟机断电并重新启动,访客触发的弹出操作的能力不会持久。因此,当您将此选项设置为 on 并且虚拟机重新启动时,最初配置的介质仍然在驱动器中。

--nonrotational=on | off

使您能够指定虚拟硬盘是非旋转的。某些访客操作系统(例如 Windows 7 或更高版本)将此类磁盘视为固态硬盘 (SSD),并且不会对其执行磁盘碎片整理。

--discard=on | off

指定是否为虚拟硬盘启用自动丢弃功能。设置为 on 时,VDI 映像会响应来自访客操作系统的trim 命令而收缩。

虚拟硬盘必须满足以下要求

  • 磁盘格式必须是 VDI。

  • 磁盘清除区域的大小必须至少为 1 MB。

  • 确保要修剪的空间至少是 1 MB 边界上 1 MB 的连续块。

考虑将碎片整理命令作为后台 cron 作业运行以节省空间。在 Windows 上,运行defrag.exe /D 命令。在 Linux 上,运行btrfs filesystem defrag 命令。

注意

当您配置访客操作系统发出trim 命令时,访客操作系统通常会将磁盘视为 SSD。

Ext4 支持 -o discard 挂载选项。Mac OS X 可能需要额外的设置。Windows 7、8 和 10 自动检测并支持 SSD。三星的 Linux exFAT 驱动程序支持trim 命令。

Microsoft 对 exFAT 的实现可能不支持此功能。

您可以使用其他方法发出 trim 命令。Linux fstrim 命令是 util-linux 包的一部分。早期的解决方案要求您使用zerofree 或类似命令将未使用的区域归零,然后压缩磁盘。您只能在虚拟机离线时执行这些步骤。

--bandwidthgroup=name

指定设备要使用的带宽组。请参阅第 5.8 节,“限制磁盘映像的带宽”

--forceunmount

仅适用于虚拟 DVD 或软盘驱动器。

强制卸载 DVD、CD 或软盘,或挂载新的 DVD、CD 或软盘,即使之前的可移动存储被访客锁定以进行读取。请参阅第 5.9 节,“CD/DVD 支持”

当您指定 --medium=iscsi 选项时,以下选项适用

--server=hostname | IP-address

指定 iSCSI 目标的主机名或 IP 地址。

--target=target

指定目标名称字符串,该字符串由 iSCSI 目标确定并用于标识存储资源。

--tport=port

指定目标上 iSCSI 服务的 TCP/IP 端口号。

--lun=LUN

指定目标资源的逻辑单元号 (LUN)。对于单个磁盘驱动器,该值为零。

--encodedlun=LUN

指定目标资源的十六进制编码。对于单个磁盘驱动器,该值为零。

--username=username

指定用于目标身份验证的用户名。

注意

除非您提供设置密码,否则用户名将以明文形式存储在 XML 机器配置文件中。

--password=password

指定用于目标身份验证的密码。

注意

除非您提供设置密码,否则此密码将以明文形式存储在 XML 机器配置文件中。当您首次指定设置密码时,目标身份验证密码将以加密形式存储。

--passwordfile=password-filename

指定包含目标身份验证密码的明文文件。

注意

使用权限和所有权设置以确保未经授权的用户无法读取此文件的内容。

--initiator=initiator

指定 iSCSI 发起程序。

Microsoft iSCSI 发起程序是一个系统,例如服务器,它连接到 IP 网络并启动请求并从 iSCSI 目标接收响应。iSCSI 发起程序中的 SAN 组件在很大程度上类似于光纤通道 SAN 组件,它们包括以下内容

  • iSCSI 驱动程序。 通过 IP 网络传输 iSCSI 命令块。此 iSCSI 驱动程序安装在 iSCSI 主机上,并包含在 Microsoft iSCSI 发起程序中。

  • 千兆以太网适配器。 连接到 iSCSI 目标。使用能够以每秒 1000 兆比特 (Mbps) 传输数据的以太网适配器。像标准 10/100 适配器一样,大多数千兆适配器使用预先存在的 5 类或 6E 类电缆。适配器上的每个端口都由唯一的 IP 地址标识。

  • iSCSI 目标。 是接收 iSCSI 命令的任何设备。该设备可以是存储设备等端节点,也可以是 IP 设备和光纤通道设备之间的网络桥接等中间设备。存储阵列控制器或网络桥接器上的每个端口都由一个或多个 IP 地址标识。

--intnet

指定是否连接到使用内部网络的 iSCSI 目标。此配置需要进一步设置。请参阅第 9.7.3 节,“使用内部网络访问 iSCSI 目标”

示例

以下命令将 o7.vdi 磁盘映像附加到 ol7 虚拟机上指定的 SATA 存储控制器。

$ storageattach ol7 --storagectl "SATA Controller" --port 0 --device 0 \
--type hdd --medium /VirtualBox/ol7/ol7.vdi

以下命令将 o7-r6-dvd.iso DVD 映像附加到 ol7 虚拟机上指定的 IDE 存储控制器。

$ VBoxManage storageattach ol7 --storagectl "IDE Controller" --port 0 --device 0 \
--type dvddrive --medium ol7-r6-dvd.iso

8.27.�VBoxManage storagectl

管理存储控制器。

概要

VBoxManage storagectl < UUID | 虚拟机名称 > <--name=控制器名称> [--add= floppy | ide | pcie | sas | sata | scsi | usb ] [--controller= BusLogic | I82078 | ICH6 | IntelAhci | LSILogic | LSILogicSAS | NVMe | PIIX3 | PIIX4 | USB | VirtIO ] [--bootable= on | off ] [--hostiocache= on | off ] [--portcount=计数] [--remove] [--rename=新控制器名称]

说明

VBoxManage storagectl 命令使您能够连接、修改和删除存储控制器。配置存储控制器后,可以使用 VBoxManage storageattach 命令将虚拟介质连接到控制器。

UUID | 虚拟机名称

指定虚拟机的通用唯一标识符 (UUID) 或名称。

--name=控制器名称

指定存储控制器的名称。

--add=系统总线类型

指定要连接存储控制器的系统总线类型。有效值为 floppyidepciesassatascsiusb

--controller=芯片组类型

指定要为指定的存储控制器仿真的芯片组类型。有效值为 BusLogicI82078ICH6IntelAHCILSILogicLSILogicSASNVMePIIX3PIIX4USB

默认值根据存储控制器的类型而异。

--portcount=计数

指定存储控制器支持的端口数量。有效值取决于存储控制器的类型。

--hostiocache=on|off

指定是否对此存储控制器所连接的所有磁盘映像使用主机 I/O 缓存。有效值为 onoff。请参阅第 5.7 节,“主机输入/输出缓存”

--bootable=on|off

指定此控制器是否可引导。有效值为 onoff

--rename=新控制器名称

为存储控制器指定一个新名称。

--remove

从虚拟机配置中删除存储控制器。

示例

以下命令创建名为 sata01 的 SATA 存储控制器并将其添加到 ol7 虚拟机。该存储控制器仿真 IntelAHCI 芯片组。

$ VBoxManage storagectl ol7 --name "sata01" --add sata --controller IntelAHCI

以下命令创建名为 ide01 的 IDE 存储控制器并将其添加到 ol7 虚拟机。

$ VBoxManage storagectl ol7 --name "ide01" --add ide

8.28.�VBoxManage bandwidthctl

管理带宽组。

概要

VBoxManage bandwidthctl < UUID | 虚拟机名称 > add <带宽组名称> <--limit=带宽限制[k|m|g|K|M|G]> <--type=disk|network>

VBoxManage bandwidthctl < UUID | 虚拟机名称 > list [--machinereadable]

VBoxManage bandwidthctl < UUID | 虚拟机名称 > remove <带宽组名称>

VBoxManage bandwidthctl < UUID | 虚拟机名称 > set <带宽组名称> <--limit=带宽限制[k|m|g|K|M|G]>

说明

VBoxManage bandwidthctl 命令使您能够管理虚拟机的带宽组。带宽组指定了虚拟机的磁盘或网络适配器的带宽限制。

请注意,网络带宽限制仅适用于虚拟机的出站流量。入站流量不受限制。

创建带宽组

VBoxManage bandwidthctl < UUID | 虚拟机名称 > add <带宽组名称> <--limit=带宽限制[k|m|g|K|M|G]> <--type=disk|network>

VBoxManage bandwidthctl add 命令为指定的虚拟机创建带宽组。您必须指定带宽组是用于磁盘还是用于网络,并指定带宽限制。

UUID | 虚拟机名称

指定虚拟机的通用唯一标识符 (UUID) 或名称。

带宽组名称

指定带宽组的名称。

--type=disk|network

指定带宽组的类型:disknetwork。有关详细信息,请参阅第 5.8 节,“限制磁盘映像的带宽”第 6.12 节,“限制网络输入/输出的带宽”

--limit=带宽限制[k|m|g|K|M|G]

指定带宽组的带宽限制。默认单位是兆字节每秒。您可以在虚拟机运行时修改此值。

您可以通过在带宽限制后附加以下单位说明符之一来更改单位

  • k – 千比特每秒

  • m – 兆比特每秒

  • g – 吉比特每秒

  • K – 千字节每秒

  • M – 兆字节每秒

  • G – 吉字节每秒

列出带宽组

VBoxManage bandwidthctl < UUID | 虚拟机名称 > list [--machinereadable]

VBoxManage bandwidthctl list 命令列出为指定虚拟机定义的所有带宽组。使用 --machinereadable 选项以机器可读格式生成输出,该格式使用名称-值对。

UUID | 虚拟机名称

指定虚拟机的 UUID 或名称。

--machinereadable

以名称-值对的形式输出有关带宽组的信息。

删除带宽组

VBoxManage bandwidthctl < UUID | 虚拟机名称 > remove <带宽组名称>

VBoxManage bandwidthctl remove 命令删除带宽组。

注意

要成功移除带宽组,请确保运行中的虚拟机中没有任何磁盘或适配器引用它。

UUID | 虚拟机名称

指定虚拟机的 UUID 或名称。

带宽组名称

指定带宽组的名称。

修改带宽组的带宽限制

VBoxManage bandwidthctl < UUID | 虚拟机名称 > set <带宽组名称> <--limit=带宽限制[k|m|g|K|M|G]>

VBoxManage bandwidthctl set 命令修改带宽组的带宽限制。

UUID | 虚拟机名称

指定虚拟机的 UUID 或名称。

带宽组名称

指定带宽组的名称。

--limit=带宽限制[k|m|g|K|M|G]

指定带宽组的带宽限制。默认单位是兆字节每秒。您可以在虚拟机运行时修改此值。

您可以通过在带宽限制后附加以下单位说明符之一来更改单位

  • k – 千比特每秒

  • m – 兆比特每秒

  • g – 吉比特每秒

  • K – 千字节每秒

  • M – 兆字节每秒

  • G – 吉字节每秒

示例

以下示例展示了如何使用 VBoxManage bandwidthctl 命令创建名为 Limit 的带宽组并将其限制设置为 20 Mbps。然后使用 VBoxManage modifyvm 命令将此带宽组分配给 vm1 虚拟机的第一和第二个适配器。

$ VBoxManage bandwidthctl "vm1" add Limit --type network --limit 20m
$ VBoxManage modifyvm "vm1" --nicbandwidthgroup1 Limit
$ VBoxManage modifyvm "vm1" --nicbandwidthgroup2 Limit

您可以在虚拟机运行时动态修改带宽组的限制。以下示例展示了如何将 Limit 带宽组的限制从 20 Mbps 修改为 100 kbps

$ VBoxManage bandwidthctl "vm1" set Limit --limit 100k

以下命令通过指定零 (0) 限制,禁用 Limit 带宽组中所有适配器的整形功能

$ VBoxManage bandwidthctl "vm1" set Limit --limit 0

8.29.�VBoxManage showmediuminfo

显示介质信息。

概要

VBoxManage showmediuminfo [ disk | dvd | floppy ] < UUID | 文件名 >

说明

VBoxManage showmediuminfo 命令显示介质的以下信息

  • 大小

  • 磁盘大小

  • 类型

  • 被虚拟机使用

必须通过介质的 UUID(如果已注册)或其文件名指定介质。可以使用 VBoxManage list hddsVBoxManage list dvdsVBoxManage list floppies 命令列出已注册的映像,具体取决于情况。

为了向后兼容,您还可以使用 showvdiinfo 命令获取介质信息。

disk | dvd | floppy

指定介质类型。有效值为 disk(硬盘驱动器)、dvdfloppy

UUID | 文件名

指定介质或镜像的通用唯一标识符 (UUID) 或绝对路径名。

如果介质已注册,您可以指定 UUID。您还可以使用 VBoxManage list hddsVBoxManage list dvdsVBoxManage list floppies 命令列出已注册的映像。

示例

以下命令显示 disk01.vdi 磁盘映像的信息

$ VBoxManage showmediuminfo disk01.vdi

以下命令显示 floppy01.img 软盘映像的信息。

$ VBoxManage showmediuminfo floppy floppy01.img

8.30.�VBoxManage createmedium

创建新介质。

概要

VBoxManage createmedium [ 磁盘 | DVD | 软盘 ] <--filename=文件名> [ --size=兆字节 | --sizebyte=字节 ] [--diffparent= UUID | 文件名 ] [--format= VDI | VMDK | VHD ] [--variant Standard,Fixed,Split2G,Stream,ESX,Formatted,RawDisk] --property 名称=... --property-file 名称=/path/to/file/with/value...

说明

VBoxManage createmedium 命令创建新介质,例如磁盘映像文件。

注意

为了与早期版本的 Oracle VM VirtualBox 兼容,您可以使用 createvdicreatehd 命令代替 createmedium 命令。

disk | dvd | floppy

指定介质类型。默认值为 disk

--filename=文件名

指定主机文件系统上文件的绝对路径名。

--size=兆字节

以兆字节为单位指定镜像容量。

--sizebyte=字节

以字节为单位指定镜像容量。

--diffparent=UUID | 文件名

指定主机文件系统上差异镜像父文件的通用唯一标识符 (UUID) 或绝对路径名。

使用此文件在虚拟机之间共享基础盒磁盘镜像。

--format=VDI | VMDK | VHD

指定输出文件的文件格式。有效格式为 VDIVMDKVHD。默认格式为 VDI

--variant=Standard,Fixed,Split2G,Stream,ESX,Formatted,RawDisk

指定目标介质的文件格式变体,这是一个逗号分隔的变体列表。以下是有效值

  • Standard 是默认的磁盘映像类型,其文件大小是动态分配的。

  • Fixed 使用固定文件大小的磁盘映像。

  • Split2G 表示磁盘映像被拆分为 2GB 段。此值仅对 VMDK 磁盘映像有效。

  • Stream 优化磁盘映像以供下载。此值仅对 VMDK 磁盘映像有效。

  • ESX 用于某些 VMWare 产品。此值仅对 VMDK 磁盘映像有效。

  • Formatted 自动格式化介质。此值仅对软盘映像有效。

  • RawDisk 用于创建 VMDK 映像,该映像使用其原始接口直接访问主机上的硬盘。此值仅对 VMDK 磁盘映像有效。有关原始磁盘访问的详细信息,请参阅第 9.7 节,“高级存储配置”

请注意,并非所有变体组合都有效。在列表中指定不兼容的变体值将产生错误消息。

--property 名称=

key=value 形式指定任何所需的文件格式相关参数。可选。

--property-file 名称 =/path/to/file/with/value

key=file/with/value 形式指定任何所需的文件格式相关参数。该值取自文件。可选。

示例

以下命令创建名为 disk01.vdi 的新磁盘映像文件。文件大小为 1024 兆字节。

$ VBoxManage createmedium --filename disk01.vdi --size 1024

以下命令创建名为 floppy01.vdi 的新软盘映像文件。文件大小为 1 兆字节。

$ VBoxManage createmedium floppy --filename floppy01.img --size 1

以下命令创建 Linux 主机上整个物理磁盘的原始磁盘镜像。

$ VBoxManage createmedium disk --filename=/path/to/rawdisk.vmdk --variant=RawDisk --format=VMDK --property RawDrive=/dev/sda

8.31.�VBoxManage modifymedium

更改现有磁盘映像的特性。

概要

VBoxManage modifymedium [ disk | dvd | floppy ] < UUID | 文件名 > [--autoreset=on | off] [--compact] [--description=描述] [--move=路径名] [--property=名称=[]] [--resize=兆字节 | --resizebyte=字节] [--setlocation=路径名] [--type=normal | writethrough | immutable | shareable | readonly | multiattach]

说明

VBoxManage modifymedium 命令使您能够更改现有磁盘映像的特性。

注意

为了与早期版本的 Oracle VM VirtualBox 兼容,您可以使用 modifyvdimodifyhd 命令。

disk | dvd | floppy

指定映像的介质类型。

文件名

指定主机文件系统上磁盘映像的通用唯一标识符 (UUID) 或路径名。只有当介质已注册时才能指定 UUID。使用 VBoxManage list hdds 命令列出已注册的映像。您可以指定介质的绝对或相对路径。

--autoreset=on | off

指定是否在每次虚拟机启动时自动重置不可变硬盘。此选项仅适用于不可变硬盘,默认值为 on。请参阅第 5.4 节,“特殊映像写入模式”

--compact

通过删除仅包含零的块来压缩磁盘映像。此选项会缩小动态分配的映像,并减小映像的物理大小,而不会影响虚拟磁盘的逻辑大小。

您可以将此选项用于基本映像和作为快照一部分创建的差异映像。

注意

在压缩映像之前,您必须使用合适的软件工具将客户机系统中的可用空间归零。例如:

  • Windows 访客机。 运行 sdelete -z 命令。

  • Linux 访客机。 使用 zerofree 工具,它支持 ext2ext3 文件系统。

  • Mac OS X 访客机。 使用 diskutil secureErase freespace 0 / 命令。

请注意,您只能使用此选项压缩 VDI 映像。要压缩非 VID 映像,您可以将空闲块归零,然后将磁盘克隆到任何其他动态分配的格式。

--description=description

指定介质的文本描述。

--move=路径名

指定主机系统上介质的相对或绝对路径。使用此选项可将介质重新定位到主机系统上的不同位置。

--property=名称=

为介质指定属性名称和值。

--resize=大小

指定现有映像的新容量,以 MB 为单位。您只能使用此选项来扩展映像的容量。不能缩小映像的容量。

请注意,您只能调整使用 VDI 和 VHD 格式的动态分配磁盘映像的大小。此选项调整虚拟磁盘的逻辑大小,对物理大小影响很小。

例如,如果您的动态分配的 10 GB 磁盘已满,您可以使用 --resize 15360 选项将现有磁盘的容量增加到 15 GB (15,360 MB)。此操作使您无需创建新映像并从虚拟机内部复制所有数据。

请注意,使用此选项只会更改驱动器的容量。因此,您可能需要在客户机中后续使用分区管理工具来调整主分区以填充驱动器。

--resizebyte=大小

指定现有映像的新容量,以字节为单位。此选项类似于 --resize 选项,但您指定的大小是字节而不是兆字节。

--setlocation=路径名

指定介质移动后在主机系统上的新位置。路径名可以是相对于当前目录的,也可以是相对于根目录的绝对路径。

请注意,VBoxManage modifymedium 命令不会对您指定的路径名执行任何有效性检查。请确保路径名有效。

--type

指定现有映像的新模式类型。有效值为 normalimmutablewritethroughmulti-attachshareablereadonly。有关这些模式类型的说明,请参阅第 5.4 节,“特殊映像写入模式”

示例

以下命令修改名为 disk01.vdi 的磁盘映像文件的描述。

$ VBoxManage modifymedium disk disk01.vdi --description "Oracle Linux 7 image"

以下命令修改名为 disk01.vdi 的磁盘映像文件的写入模式。

$ VBoxManage modifymedium disk disk01.vdi --type writethrough

8.32.�VBoxManage clonemedium

创建介质的克隆。

概要

VBoxManage clonemedium < UUID | 源介质 > < UUID | 目标介质 > [ disk | dvd | floppy ] [--existing] [--format= VDI | VMDK | VHD | RAW | 其他 ] [--variant=Standard,Fixed,Split2G,Stream,ESX]

说明

VBoxManage clonemedium 命令使您能够克隆现有介质(虚拟磁盘、DVD 或软盘),通常是映像文件。原始映像和克隆映像之间只有通用唯一标识符 (UUID) 不同。

您可以使用虚拟介质管理器将克隆的映像传输到另一个主机系统或将其重新导入 Oracle VM VirtualBox。请参阅第 5.3 节,“虚拟介质管理器”第 5.6 节,“克隆磁盘映像”

UUID | 源介质

指定要克隆的源介质的 UUID 或绝对/相对文件名。只有当介质已注册时才能指定介质的 UUID。使用 VBoxManage list hdds 命令列出已注册的映像。

UUID | 目标介质

指定目标(克隆)介质的 UUID 或绝对/相对文件名。只有当目标介质已注册时才能指定其 UUID。使用 VBoxManage list hdds 命令列出已注册的映像。

disk | dvd | floppy

指定要克隆的介质类型。有效值为 diskdvdfloppy。默认值为 disk

--existing

通过覆盖现有目标介质来执行克隆操作。结果是只复制源介质中适合现有目标介质的部分。

如果目标介质小于源介质,则仅复制源介质中与目标介质大小相同的部分。

如果目标介质大于源介质,则目标介质的其余部分保持不变。

--format

指定目标介质的文件格式,如果它与源介质的格式不同。有效值为 VDIVMDKVHDRAW其他

--variant=Standard,Fixed,Split2G,Stream,ESX

指定目标介质的文件格式变体,这是一个逗号分隔的变体列表。以下是有效值

  • Standard 是默认的磁盘映像类型,其文件大小是动态分配的。

  • Fixed 使用固定文件大小的磁盘映像。

  • Split2G 表示磁盘映像被拆分为 2GB 段。此值仅对 VMDK 有效。

  • Stream 优化磁盘映像以供下载。此值仅对 VMDK 有效。

  • ESX 用于某些 VMWare 产品。此值仅对 VMDK 有效。

请注意,并非所有变体组合都有效。在列表中指定不兼容的变体值将产生错误消息。

注意

为了与早期版本的 Oracle VM VirtualBox 兼容,您可以使用 clonevdiclonehd 命令代替 clonemedium 命令。

示例

以下命令创建 disk01.vdi 磁盘映像文件的克隆。该克隆名为 disk02.vdi

$ VBoxManage clonemedium disk01.vdi disk02.vdi

以下命令创建 disk01.vdi 磁盘映像文件的克隆。该克隆采用 VMDK 格式,名为 disk02.vmdk

$ VBoxManage clonemedium disk01.vdi disk02.vmdk --format VMDK

8.33.�VBoxManage mediumproperty

管理介质属性。

概要

VBoxManage mediumproperty [ disk | dvd | floppy ] set < UUID | 文件名 > <属性名称> <属性值>

VBoxManage mediumproperty [ disk | dvd | floppy ] get < UUID | 文件名 > <属性名称>

VBoxManage mediumproperty [ disk | dvd | floppy ] delete < UUID | 文件名 > <属性名称>

说明

VBoxManage mediumproperty 命令使您能够设置、检索或删除介质属性。

设置介质属性

VBoxManage mediumproperty [ disk | dvd | floppy ] set < UUID | 文件名 > <属性名称> <属性值>

VBoxManage mediumproperty set 命令使您能够设置介质属性。

disk | dvd | floppy

指定介质类型。有效值为 disk(硬盘驱动器)、dvdfloppy

UUID | 文件名

指定介质或镜像的通用唯一标识符 (UUID) 或绝对路径名。

属性名称

指定属性的名称。

属性值

指定指定属性的值。

检索介质属性值

VBoxManage mediumproperty [ disk | dvd | floppy ] get < UUID | 文件名 > <属性名称>

VBoxManage mediumproperty get 命令使您能够检索介质属性的值。

disk | dvd | floppy

指定介质类型。有效值为 disk(硬盘驱动器)、dvdfloppy

UUID | 文件名

指定介质或镜像的通用唯一标识符 (UUID) 或绝对路径名。

属性名称

指定属性的名称。

删除介质属性

VBoxManage mediumproperty [ disk | dvd | floppy ] delete < UUID | 文件名 > <属性名称>

VBoxManage mediumproperty delete 命令使您能够删除介质属性。

disk | dvd | floppy

指定介质类型。有效值为 disk(硬盘驱动器)、dvdfloppy

UUID | 文件名

指定介质或镜像的通用唯一标识符 (UUID) 或绝对路径名。

属性名称

指定属性的名称。

示例

以下命令将名为 prop1 的属性设置为 val1,用于 ol7.vdi 磁盘映像。

$ VBoxManage mediumproperty disk set ol7.vdi prop1 val1

以下命令获取名为 prop1 的属性值,用于 ol7.vdi 磁盘映像。

$ VBoxManage mediumproperty disk get ol7.vdi prop1

8.34.�VBoxManage encryptmedium

管理 DEK 加密的介质或映像。

概要

VBoxManage encryptmedium < UUID | 文件名 > [--cipher=加密ID] [--newpassword=新密码] [--newpasswordid=密码ID] [--oldpassword=旧密码]

说明

VBoxManage encryptmedium 命令使您能够创建和管理 DEK 加密的介质或映像。您可以加密映像、解密映像以及更改映像的加密密码。请参阅第 9.29.2 节,“加密磁盘映像”

UUID | 文件名

指定要加密的介质或镜像的通用唯一标识符 (UUID) 或绝对路径名。

--newpassword=密码

指定新的加密密码。密码 是主机操作系统上密码文件的绝对路径名,或者是 -,这将提示您输入密码。

您必须将 --newpasswordid 选项与此 --newpassword 选项一起使用。

--oldpassword=密码

指定原始加密密码。密码 是主机操作系统上密码文件的绝对路径名,或者是 -,这将提示您输入原始密码。

此选项使您能够访问加密的介质或镜像以执行以下操作

  • 单独使用此选项解密加密的镜像。

  • 使用 --newpassword 选项更改加密映像的密码。

  • 使用 --cipher 选项更改映像的加密算法。

--cipher=算法 ID

指定用于加密的算法。有效值为 AES-XTS128-PLAIN64AES-XTS256-PLAIN64

此选项使您能够在介质或镜像上设置或更改加密。

--newpasswordid=密码 ID

指定一个新的密码标识符,用于在虚拟机启动期间提供多个密码时进行正确识别。

如果您在加密多个镜像时使用相同的密码和密码标识符,则在虚拟机启动期间只需提供一次密码。

示例

以下示例展示了如何使用 AES-XTS128-PLAIN64 算法加密 ol7u4-1.vdi 映像,指定密码标识符为 1001,并使用 $HOME/pwfile 密码文件

$ VBoxManage encryptmedium "$HOME/VirtualBox VMs/ol7u4/ol7u4-1.vdi" \
  --cipher="AES-XTS128-PLAIN64" --newpasswordid="1001" --newpassword=$HOME/pwfile

以下示例展示了如何解密名为 ol7u4-2.vdi 的加密映像

$ VBoxManage encryptmedium "$HOME/VirtualBox VMs/ol7u4/ol7u4-2.vdi" \
  --oldpassword=-
  Password: original-password

以下示例展示了如何更改名为 ol7u4-3.vdi 的加密映像的密码。该命令从 $HOME/pwfile.orig 文件读取原始密码,从 $HOME/pwfile 文件读取新密码,并分配密码标识符为 1001

$ VBoxManage encryptmedium "$HOME/VirtualBox VMs/ol7u4/ol7u4-3.vdi" \
  --oldpassword=$HOME/pwfile.orig --newpassword=$HOME/pwfile --newpasswordid="1001"

8.35.�VBoxManage checkmediumpwd

检查 DEK 加密的介质或磁盘映像上的加密密码。

概要

VBoxManage checkmediumpwd < UUID | 文件名 > <密码文件>

说明

VBoxManage checkmediumpwd 命令检查 DEK 加密的介质或磁盘映像上的当前加密密码。请参阅第 9.29.2 节,“加密磁盘映像”

命令响应指示指定的密码是否正确。

uuid|filename

指定介质或镜像的通用唯一标识符 (UUID) 或绝对路径名。

密码文件

指定要检查的密码。密码可以是主机操作系统上密码文件的绝对路径名,或者是破折号字符 (-) 以便在命令行上提示您输入密码。

示例

以下示例检查 ol7u4-1.vdi 磁盘映像的加密密码。密码包含在名为 pwfile 的文件中。

命令返回一条消息,指示指定的密码正确。

$ VBoxManage checkmediumpwd "$HOME/VirtualBox VMs/ol7u4/ol7u4-1.vdi" /home/user/pwfile
  The given password is correct

8.36.�VBoxManage convertfromraw

将原始磁盘映像转换为虚拟磁盘映像。

概要

VBoxManage convertfromraw <输入文件> <输出文件> [--format= VDI | VMDK | VHD ] [--uuid=UUID] [--variant=Standard,Fixed,Split2G,Stream,ESX]

VBoxManage convertfromraw stdin <输出文件> <字节> [--format= VDI | VMDK | VHD ] [--uuid=UUID] [--variant=Standard,Fixed,Split2G,Stream,ESX]

说明

VBoxManage convertfromraw 命令使您能够将原始磁盘映像转换为 Oracle VM VirtualBox 虚拟磁盘映像 (VDI)。

注意

为了与早期版本的 Oracle VM VirtualBox 兼容,您可以使用 VBoxManage convertdd 命令代替 VBoxManage convertfromraw 命令。

将原始磁盘文件转换为虚拟磁盘映像文件

VBoxManage convertfromraw <输入文件> <输出文件> [--format= VDI | VMDK | VHD ] [--uuid=UUID] [--variant=Standard,Fixed,Split2G,Stream,ESX]

VBoxManage convertfromraw 命令将指定的原始磁盘映像输入文件转换为 Oracle VM VirtualBox VDI 文件。

输入文件

指定要转换的原始磁盘镜像文件的名称。

输出文件

指定要写入 VDI 输出的文件名称。

--format=VDI | VMDK | VHD

指定要创建的磁盘映像的格式。有效值为 VDIVMDKVHD。默认格式为 VDI

--uuid=uuid

指定输出文件的通用唯一标识符 (UUID)。

--variant=Standard,Fixed,Split2G,Stream,ESX

指定输出文件的任何所需文件格式变体。这是一个逗号分隔的变体值列表。以下是有效值

  • Standard 是默认的磁盘映像类型,其文件大小是动态分配的。

  • Fixed 使用固定文件大小的磁盘映像。

  • Split2G 表示磁盘映像被拆分为 2GB 段。此值仅对 VMDK 有效。

  • Stream 优化磁盘映像以供下载。此值仅对 VMDK 有效。

  • ESX 用于某些 VMWare 产品。此值仅对 VMDK 有效。

请注意,并非所有变体组合都有效。在列表中指定不兼容的变体值将产生错误消息。

将标准输入中的原始数据转换为虚拟磁盘映像文件

VBoxManage convertfromraw stdin <输出文件> <字节> [--format= VDI | VMDK | VHD ] [--uuid=UUID] [--variant=Standard,Fixed,Split2G,Stream,ESX]

VBoxManage convertfromraw stdin 命令从标准输入读取磁盘映像的内容。请考虑在管道序列中使用此形式的命令。

输出文件

指定要写入磁盘镜像输出的文件名称。

字节

指定目标映像名称的容量。需要明确给出,因为通常管道不支持查询数据流的总大小。

--format=VDI | VMDK | VHD

指定要创建的磁盘映像的格式。有效值为 VDIVMDKVHD。默认格式为 VDI

--uuid=uuid

指定输出文件的 UUID。

--variant=Standard,Fixed,Split2G,Stream,ESX

指定输出文件的任何所需文件格式变体。这是一个逗号分隔的变体值列表。以下是有效值

  • Standard 是默认的磁盘映像类型,其文件大小是动态分配的。

  • Fixed 使用固定文件大小的磁盘映像。

  • Split2G 表示磁盘映像被拆分为 2GB 段。此值仅对 VMDK 有效。

  • Stream 优化磁盘映像以供下载。此值仅对 VMDK 有效。

  • ESX 用于某些 VMWare 产品。此值仅对 VMDK 有效。

请注意,并非所有变体组合都有效。在列表中指定不兼容的变体值将产生错误消息。

示例

以下命令转换原始磁盘映像输入文件 disk01.raw。输出文件是名为 disk02.vdi 的 VDI 磁盘映像。

$ VBoxManage convertfromraw disk01.raw disk02.vdi

以下命令转换原始磁盘映像输入文件 disk01.raw。输出文件是名为 disk02.vmdk 的 VMDK 磁盘映像。

$ VBoxManage convertfromraw disk01.raw disk02.vmdk --format VMDK

以下命令使用管道从磁盘 /dev/sda 读取,因此需要以字节为单位的精确磁盘大小作为附加参数,假设为 10737418240。输出文件是名为 disk.vdi 的 VDI 磁盘映像。

$ dd if=/dev/sda bs=512 | VBoxManage convertfromraw stdin disk.vdi 10737418240

8.37.�VBoxManage mediumio

介质内容访问。

概要

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] formatfat [--quick]

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] cat [--hex] [--offset=字节偏移量] [--size=字节] [--output=-|文件名]

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] stream [--format=镜像格式] [--variant=镜像变体] [--output=-|文件名]

说明

常用选项

mediumio 的所有子命令都在需要指定的介质上操作,可选地带有加密密码。以下常用选项可以放在子命令之前或之后

--disk=UUID|文件名

硬盘映像的 UUID 或文件名,例如 VDI、VMDK、VHD 等。

--dvd=UUID|文件名

DVD 映像的 UUID 或文件名,例如 ISO、DMG、CUE。

--floppy=UUID|文件名

软盘映像的 UUID 或文件名,例如 IMG。

--password-file=-|文件名

包含介质加密密码的文件名。如果指定了 -,则密码将从标准输入读取。

mediumio formatfat

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] formatfat [--quick]

使用 FAT 文件系统格式化软盘介质。这将擦除介质的内容。

--quick

快速格式化介质。

mediumio cat

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] cat [--hex] [--offset=字节偏移量] [--size=字节] [--output=-|文件名]

将介质内容转储到标准输出或指定文件。

--hex

以十六进制字节转储。

--offset

介质中开始的字节偏移量。

--size

要转储的字节数。

--output

输出文件名。通常 - 表示标准输出。

mediumio stream

VBoxManage mediumio < --disk=UUID|文件名 | --dvd=UUID|文件名 | --floppy=UUID|文件名 > [--password-file=-|文件名] stream [--format=镜像格式] [--variant=镜像变体] [--output=-|文件名]

将介质转换为可流式传输的格式并将其转储到给定输出。

--format

目标映像的格式。

--variant

目标的介质变体。

--output

输出文件名。通常 - 表示标准输出。

8.38.�VBoxManage setextradata

设置与虚拟机或配置关联的关键字值。

概要

VBoxManage setextradata < global | UUID | 虚拟机名称 > <关键词> []

说明

VBoxManage setextradata 命令使您能够设置与虚拟机或 Oracle VM VirtualBox 配置关联的关键字值。

全局

设置有关配置而不是虚拟机的信息。

uuid|vmname

指定虚拟机的通用唯一标识符 (UUID) 或名称。

关键字

指定要设置其值的关键字。

指定关键字值。不指定值将移除关键字。

示例

以下命令将 Fedora5 虚拟机的 installdate 关键字值设置为 2019.01.01

$ VBoxManage setextradata Fedora5 installdate 2019.01.01

以下命令取消设置 Fedora5 虚拟机的 installdate 关键字的值

$ VBoxManage setextradata Fedora5 installdate

8.39.�VBoxManage getextradata

查看与虚拟机或配置关联的关键字值。

概要

VBoxManage getextradata < global | UUID | 虚拟机名称 > <关键词> | [enumerate]

说明

VBoxManage getextradata 命令使您能够检索与虚拟机或 Oracle VM VirtualBox 配置关联的关键字数据。

全局

指定检索有关配置而非虚拟机的信息。

UUID | 虚拟机名称

指定虚拟机的通用唯一标识符 (UUID) 或名称。

枚举

显示指定虚拟机或配置的所有关键字值。

关键字

指定要检索其值的关键字。

示例

以下命令检索 Fedora5 VM 的 installdate 关键字值

$ VBoxManage getextradata Fedora5 installdate
VirtualBox Command Line Management Interface Version version-number
Copyright (C) 2005-2023 Oracle and/or its affiliates

Value: 2006.01.01

以下命令检索 OracleLinux7u4 VM 所有关键字的信息

$ VBoxManage getextradata OracleLinux7u4 enumerate
Key: GUI/LastCloseAction, Value: PowerOff
Key: GUI/LastGuestSizeHint, Value: 1048,696
Key: GUI/LastNormalWindowPosition, Value: 851,286,1048,738

以下命令检索配置中所有关键字的信息

$ VBoxManage getextradata global enumerate
Key: GUI/Details/Elements, Value: general,system,preview,display,storage,audio,network,usb,sharedFolders,description
Key: GUI/DetailsPageBoxes, Value: general,system,preview,display,storage,audio,network,usb,sharedFolders,description
Key: GUI/GroupDefinitions/, Value: m=43349dd8-2aa3-41b8-988f-0e255ce68090,m=9ebcd81e-5231-48ce-a27d-28218757f3fe,m=c690e8b1-93a0-4c95-9cd7-6437fff93251,m=f7c1e10d-3722-4891-887e-07b3c4104946
Key: GUI/HideDescriptionForWizards, Value: NewVM
Key: GUI/LastItemSelected, Value: m=ol7u4
Key: GUI/LastWindowPosition, Value: 951,510,960,520
Key: GUI/RecentFolderCD, Value: C:/Users/user1
Key: GUI/RecentListCD, Value: C:\Users\user1\V1.iso,C:\Users\user1\V2.iso,C:\Users\user1\V3.iso
Key: GUI/SplitterSizes, Value: 318,637
Key: GUI/SuppressMessages, Value: remindAboutMouseIntegration,remindAboutAutoCapture
Key: GUI/Toolbar/MachineTools/Order, Value: Details
Key: GUI/Tools/LastItemsSelected, Value: Welcome,Details
Key: GUI/UpdateCheckCount, Value: 71
Key: GUI/UpdateDate, Value: 1 d, 2019-04-10, stable, 5.2.22
Key: GUI/VirtualMediaManager/Details/Expanded, Value: true

8.40. VBoxManage setproperty

更改全局设置。

概要

VBoxManage setproperty <属性名称> <属性值>

描述

VBoxManage setproperty 命令使您能够更改影响整个 Oracle VM VirtualBox 安装的全局设置。其中一些设置与 VirtualBox 管理器中首选项对话框中的设置相对应。

以下属性可用

autostartdbpath

指定自动启动数据库的路径。有效值为 null(禁用自动启动数据库)或包含数据库的文件夹名称。请参阅第 9.21 节,“系统启动时启动虚拟机”

defaultfrontend

指定全局默认 VM 前端。有效值为 default(指定默认前端)或要使用的前端名称。

hwvirtexclusive

指定 Oracle VM VirtualBox 是否独占使用主机系统处理器的 Intel VT-x 或 AMD-V 硬件虚拟化扩展。请参阅第 10.3 节,“硬件虚拟化”

有效值如下:

  • on 使 Oracle VM VirtualBox 独占使用这些扩展。这是默认值。

  • off 与同时运行的其他管理程序共享这些扩展。请注意,禁用此设置会对性能产生负面影响。

language

指定用于翻译 API 消息的用户语言。有效值为 C(表示不翻译)或 llll_CC 形式的语言代码,其中 ll 是小写的 2 字母语言代码,CC 是大写的 2 字母国家代码。

logginglevel

指定 VBoxSVC 发布日志记录详细信息。请参阅https://virtualbox.ac.cn/wiki/VBoxLogging

loghistorycount

指定要保留的旋转 VM 日志的数量。

machinefolder

指定存储虚拟机 (VM) 定义的默认文件夹。有效值为 default(指定默认存储文件夹)或要使用的文件夹名称。请参阅第 10.1 节,“Oracle VM VirtualBox 文件的存储位置”

proxymode

配置 HTTP 代理服务器的模式。有效值如下

manual

使用 proxyurl 属性值手动配置 HTTP 代理服务器的 URL。

noproxy

不使用 HTTP 代理服务器。使用直接连接到 Internet。

system

自动检测主机网络的代理设置。这是默认值。

proxyurl

当您通过将 proxymode 属性设置为 manual 来指定手动代理时,指定 HTTP 代理服务器的 URL。

vrdeauthlibrary

指定为特定 VM 配置外部身份验证时要使用的库。有效值为 default(指定默认库)或要使用的库名称。请参阅第 7.1.5 节,“RDP 身份验证”

vrdeextpack

指定实现 VirtualBox 远程桌面扩展 (RDE) 的库。有效值为 null(禁用 RDE)或要使用的库名称。

websrvauthlibrary

指定 Web 服务用于对用户进行身份验证的库。有效值为 default(指定默认库)、null(禁用身份验证)或要使用的库名称。有关 Oracle VM VirtualBox Web 服务的信息,请参阅第 11 章,Oracle VM VirtualBox 编程接口

示例

以下命令配置 Oracle VM VirtualBox 以使用指定的 HTTP 代理服务器。

$ VBoxManage setproperty proxymode manual
$ VBoxManage setproperty proxyurl "http://myproxy.com:8080"

8.41. VBoxManage usbfilter

管理 USB 过滤器。

概要

VBoxManage usbfilter add <索引,0-N> <--target= < UUID | 虚拟机名称 | global >> <--name=字符串> <--action=ignore | hold> [--active=yes | no] [--vendorid=XXXX] [--productid=XXXX] [--revision=IIFF] [--manufacturer=字符串] [--product=字符串] [--port=十六进制] [--remote=yes | no] [--serialnumber=字符串] [--maskedinterfaces=XXXXXXXX]

VBoxManage usbfilter modify <索引,0-N> <--target= < UUID | 虚拟机名称 | global >> [--name=字符串] [--action=ignore | hold] [--active=yes | no] [--vendorid=XXXX | ""] [--productid=XXXX | ""] [--revision=IIFF | ""] [--manufacturer=字符串 | ""] [--product=字符串 | ""] [--port=十六进制] [--remote=yes | no] [--serialnumber=字符串 | ""] [--maskedinterfaces=XXXXXXXX]

VBoxManage usbfilter remove <索引,0-N> <--target= < UUID | 虚拟机名称 | global >>

描述

VBoxManage usbfilter 命令使您能够管理特定虚拟机 (VM) 的 USB 过滤器,或影响整个 Oracle VM VirtualBox 配置的全局 USB 过滤器。

全局过滤器在 VM 特定过滤器之前应用。这意味着您可以使用全局过滤器来防止设备被任何 VM 捕获。

全局过滤器按特定顺序应用。只应用第一个符合设备的过滤器。例如,第一个全局过滤器使特定的 Kingston 存储棒设备可用,而第二个过滤器忽略所有 Kingston 设备。应用这些过滤器的结果是,特定的 Kingston 存储棒可供任何具有适当过滤器的机器使用,但其他 Kingston 设备不可用。

通用操作数和选项

index,0-N

指定一个整数,表示过滤器在列表中的位置。零 (0) 表示列表中的第一个位置。如果指定位置已存在过滤器,则现有过滤器以及其后的任何现有过滤器都会向下移动列表。否则,新过滤器将附加到列表末尾。

--action=ignore | hold

指定是否允许 VM 访问符合过滤器描述的设备 (hold) 或拒绝其访问 (ignore)。此选项仅适用于全局过滤器。

--active=yes | no

指定 USB 过滤器是活动状态还是暂时禁用状态。有效值为 yes(激活过滤器)和 no(禁用过滤器)。默认值为 yes

--manufacturer=string

指定制造商 ID 过滤器作为字符串。默认值为空字符串 ("")。

--maskedinterfaces=XXXXXXXX

指定一个掩码接口过滤器,用于从客户机隐藏一个或多个 USB 接口。该值是一个位掩码,其中设置的位对应于要隐藏或屏蔽的 USB 接口。此功能仅在 Linux 主机系统上受支持。

--name=filter-name

指定过滤器的名称。

--port=hex

指定集线器端口号过滤器作为字符串。默认值为空字符串 ("")。

--product=string

指定产品 ID 过滤器作为字符串。默认值为空字符串 ("")。

--productid=XXXX

指定产品 ID 过滤器。精确匹配的字符串表示形式为 XXXX,其中 X 是一个十六进制数字,包括前导零。默认值为空字符串 ("")。

--remote=yes | no

指定一个远程过滤器,指示设备是物理连接到远程 VRDE 客户端还是本地主机系统。此选项仅适用于 VM 过滤器。默认值为空字符串 ("")。

--revision=IIFF

指定修订 ID 过滤器。精确匹配的字符串表示形式为 IIFFI 是修订版整数部分的十进制数字。F 是其小数部分的十进制数字,包括前导零和尾随零。默认值为空字符串 ("")。

要指定修订 ID 范围,请确保使用十六进制形式,以便修订版存储为 16 位打包 BCD 值。例如,int:0x0100-0x0199 表达式匹配从 1.0 到 1.99(包括两端)的任何修订版。

--serialnumber=string

指定序列号过滤器作为字符串。默认值为空字符串 ("")。

--target=uuid | vmname | global

指定过滤器所附加到的 VM。您可以指定通用唯一标识符 (UUID) 或 VM 的名称。要将过滤器描述应用于所有 VM,请指定 global

--vendorid=XXXX

指定供应商 ID 过滤器,它是四位十六进制数字的字符串表示。 X 是十六进制数字,包括前导零。默认值为空字符串 ("")。

添加 USB 过滤器或全局过滤器

VBoxManage usbfilter add <索引,0-N> <--target= < UUID | 虚拟机名称 | global >> <--name=字符串> <--action=ignore | hold> [--active=yes | no] [--vendorid=XXXX] [--productid=XXXX] [--revision=IIFF] [--manufacturer=字符串] [--product=字符串] [--port=十六进制] [--remote=yes | no] [--serialnumber=字符串] [--maskedinterfaces=XXXXXXXX]

使用 VBoxManage usbfilter add 命令创建新的 USB 过滤器。

此外,指定用于过滤的参数。您可以使用 VBoxManage list usbhost 命令查看连接到您系统的设备的参数。

修改 USB 过滤器或全局过滤器

VBoxManage usbfilter modify <索引,0-N> <--target= < UUID | 虚拟机名称 | global >> [--name=字符串] [--action=ignore | hold] [--active=yes | no] [--vendorid=XXXX | ""] [--productid=XXXX | ""] [--revision=IIFF | ""] [--manufacturer=字符串 | ""] [--product=字符串 | ""] [--port=十六进制] [--remote=yes | no] [--serialnumber=字符串 | ""] [--maskedinterfaces=XXXXXXXX]

使用 VBoxManage usbfilter modify 命令修改 USB 过滤器。您可以使用 VBoxManage list usbfilters 命令列出全局过滤器索引,并使用 VBoxManage showvminfo 命令列出特定机器的索引。

移除 USB 过滤器或全局过滤器

VBoxManage usbfilter remove <索引,0-N> <--target= < UUID | 虚拟机名称 | global >>

使用 VBoxManage usbfilter remove 命令移除 USB 过滤器条目。

示例

以下命令列出主机系统上可用的 USB 设备。

$ VBoxManage list usbhost

以下命令将名为 filter01 的 USB 过滤器添加到 ol7 VM。该过滤器指定一个 Kingston DataTraveler 存储棒,并放置在 VM 的 USB 过滤器列表中的第一个位置。

$ VBoxManage usbfilter add 0 --target ol7 --name filter01 --vendorid 0x0930 --productid 0x6545

以下命令移除 ol7 VM 列表中的第二个 USB 过滤器。

$ VBoxManage usbfilter remove 1 --target ol7

8.42. VBoxManage sharedfolder

添加和移除共享文件夹。

概要

VBoxManage sharedfolder add < UUID | 虚拟机名称 > <--name=名称> <--hostpath=主机路径> [--readonly] [--transient] [--automount] [--auto-mount-point=路径]

VBoxManage sharedfolder remove < UUID | 虚拟机名称 > <--name=名称> [--transient]

描述

共享文件夹使您能够在主机系统和客户机之间共享数据。要使用共享文件夹,您必须首先在客户机操作系统上安装 Oracle VM VirtualBox 增强功能软件。

共享文件夹与共享名称以及主机系统上文件夹或目录的完整路径名相关联。共享名称是主机操作系统命名空间中的唯一名称。

添加共享文件夹

VBoxManage sharedfolder add < UUID | 虚拟机名称 > <--name=名称> <--hostpath=主机路径> [--readonly] [--transient] [--automount] [--auto-mount-point=路径]

VBoxManage sharedfolder add 命令创建共享文件夹。您指定的文件夹位于主机计算机上。配置后,主机系统上文件夹的内容可以与客户机操作系统共享。

uuid|vmname

指定与主机系统共享文件夹的客户机 VM 的名称或 UUID。

--name=name

指定共享的名称,它是主机操作系统命名空间中的唯一名称。

--hostpath=hostpath

指定主机操作系统上要与客户机操作系统共享的文件夹或目录的绝对路径。

--readonly

指定共享对主机路径上的文件只有只读访问权限。

默认情况下,共享文件夹对主机路径上的文件具有读写访问权限。但在 Linux 发行版上,共享文件夹以 770 文件权限挂载,所有者为 root 用户和 vboxsf 组。使用此选项,文件权限变为 700。

--transient

指定共享是临时的,这意味着它可以在运行时添加和移除,并且在 VM 停止后不会持久存在。

--automount

指定共享自动挂载。

--auto-mount-point=path

指定共享的挂载点。这取决于客户机操作系统。

对于 Windows 和 OS/2 客户机,这必须是未使用的驱动器号。如果留空(或驱动器号已被占用),则使用最后一个未使用的驱动器号(即从 Z:A: 搜索)。

对于 Linux、Solaris 和其他 Unix 客户机,它必须是绝对路径,例如 /mnt/mysharedfolder。如果留空,默认位置是 /media/sf_sharename

移除共享文件夹

VBoxManage sharedfolder remove < UUID | 虚拟机名称 > <--name=名称> [--transient]

VBoxManage sharedfolder remove 命令移除共享文件夹。

uuid|vmname

指定与主机系统共享文件夹的客户机 VM 的名称或 UUID。

--name=name

指定要移除的共享的名称。

--transient

指定共享是临时的,这意味着它可以在运行时添加和移除,并且在 VM 停止后不会持久存在。

示例

以下命令为 ol7 VM 创建一个名为 o7share 的共享文件夹。VM 启动时,该共享会自动挂载。

$ VBoxManage sharedfolder add ol7 --name ol7share --hostpath "/home/user/ol7share" --automount

以下命令移除 ol7 VM 的名为 o7share 的共享文件夹。

$ VBoxManage sharedfolder remove ol7 --name ol7share

8.43. VBoxManage guestproperty

管理虚拟机客户机属性。

概要

VBoxManage guestproperty get < UUID | 虚拟机名称 > <属性名称> [--verbose]

VBoxManage guestproperty enumerate < UUID | 虚拟机名称 > [--no-timestamp] [--no-flags] [--relative] [--old-format] [模式...]

VBoxManage guestproperty set < UUID | 虚拟机名称 > <属性名称> [属性值 [--flags=标志]]

VBoxManage guestproperty unset < UUID | 虚拟机名称 > <属性名称>

VBoxManage guestproperty wait < UUID | 虚拟机名称 > <模式> [--timeout=毫秒] [--fail-on-timeout]

描述

VBoxManage guestproperty 命令使您能够设置或检索正在运行的虚拟机 (VM) 的属性。请参阅第 4.7 节,“客户机属性”。客户机属性是任意的名称-值字符串对,可以由客户机或主机写入和读取。因此,只要客户机正在运行并且已安装增强功能,这些属性就可以用作低容量字符串通信通道。此外,增强功能会自动设置和维护关键字以 /VirtualBox/ 开头的值。

通用命令操作数

uuid|vmname

指定虚拟机的通用唯一标识符 (UUID) 或名称。

列出虚拟机的所有属性

VBoxManage guestproperty enumerate < UUID | 虚拟机名称 > [--no-timestamp] [--no-flags] [--relative] [--old-format] [模式...]

VBoxManage guestproperty enumerate 命令列出指定 VM 的每个客户机属性和值。请注意,如果客户机服务未更新属性,例如因为 VM 未运行或未安装增强功能,则输出会受到限制。

--relative

显示相对于当前时间的 timestamp。

--no-timestamp

不显示最后更新的时间戳。

--no-flags

不显示标志。

--old-format

使用 VirtualBox 6.1 及更早版本的输出格式。

pattern

根据指定的模式过滤属性列表,该模式可以包含以下通配符。

* (星号)

表示任意数量的字符。例如,/VirtualBox* 模式匹配所有以 /VirtualBox 开头的属性。

? (问号)

表示单个任意字符。例如,fo? 模式同时匹配 foofor

| (管道)

指定多个替代模式。例如,s*|t* 模式匹配任何以 st 开头的属性。

检索虚拟机的属性值

VBoxManage guestproperty get < UUID | 虚拟机名称 > <属性名称> [--verbose]

VBoxManage guestproperty get 命令检索指定属性的值。如果找不到属性,例如因为客户机未运行,则命令会发出以下消息

No value set!
属性名称

指定属性的名称。

--verbose

提供属性值、时间戳和任何指定的值属性。

设置虚拟机的属性值

VBoxManage guestproperty set < UUID | 虚拟机名称 > <属性名称> [属性值 [--flags=标志]]

VBoxManage guestproperty set 命令使您能够通过指定属性及其值来设置客户机属性。如果省略该值,则删除该属性。

属性名称

指定属性的名称。

属性值

指定属性的值。如果未指定值,则删除任何现有值。

--flags=flags

指定值的其他属性。以下属性可以指定为逗号分隔列表。

TRANSIENT

当 VM 退出时,删除 VM 数据中的值。

TRANSRESET

当 VM 重新启动或退出时,删除该值。

RDONLYGUEST

指定该值只能由主机更改,并且客户机可以读取该值。

RDONLYHOST

指定该值只能由客户机更改,并且主机可以读取该值。

READONLY

指定该值不能更改。

等待属性值被创建、删除或更改

VBoxManage guestproperty wait < UUID | 虚拟机名称 > <模式> [--timeout=毫秒] [--fail-on-timeout]

VBoxManage guestproperty wait 命令等待由模式字符串描述的特定值发生更改、被删除或被创建。

patterns

指定一个与您要等待的属性匹配的模式。有关模式通配符的信息,请参阅 --patterns 选项的描述。

--timeoutmsec

指定等待的微秒数。

--fail-on-timeout

指定如果达到超时,命令将失败。

取消设置虚拟机属性值

VBoxManage guestproperty unset < UUID | 虚拟机名称 > <属性名称>

VBoxManage guestproperty unset 命令取消设置客户机属性的值。

此子命令的替代形式是 delete

属性名称

指定属性的名称。

示例

以下命令列出 win8 VM 的客户机属性及其值。

$ VBoxManage guestproperty enumerate win8

以下命令为 win8 VM 创建一个名为 region 的客户机属性。该属性的值设置为 west

$ VBoxManage guestproperty set win8 region west

8.44. VBoxManage guestcontrol

从主机系统控制虚拟机。

概要

VBoxManage guestcontrol < UUID | 虚拟机名称 > run [--arg0=参数0] [--domain=域名] [--dos2unix] [--exe=文件名] [--ignore-orphaned-processes] [ --no-wait-stderr | --wait-stderr ] [ --no-wait-stdout | --wait-stdout ] [ --passwordfile=密码文件 | --password=密码 ] [--profile] [--putenv=变量名=[]] [--quiet] [--timeout=毫秒] [--unix2dos] [--unquoted-args] [--username=用户名] [--verbose] <-- [参数...]>

VBoxManage guestcontrol < UUID | 虚拟机名称 > start [--arg0=参数0] [--domain=域名] [--exe=文件名] [--ignore-orphaned-processes] [ --passwordfile=密码文件 | --password=密码 ] [--profile] [--putenv=变量名=[]] [--quiet] [--timeout=毫秒] [--unquoted-args] [--username=用户名] [--verbose] <-- [参数...]>

VBoxManage guestcontrol < UUID | 虚拟机名称 > copyfrom [--dereference] [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--no-replace] [--recursive] [--target-directory=主机目标目录] [--update] [--username=用户名] [--verbose] <访客源0> 访客源1 [...] <主机目标>

VBoxManage guestcontrol < UUID | 虚拟机名称 > copyto [--dereference] [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--no-replace] [--recursive] [--target-directory=访客目标目录] [--update] [--username=用户名] [--verbose] <主机源0> 主机源1 [...]

VBoxManage guestcontrol < UUID | 虚拟机名称 > mkdir [--domain=域名] [--mode=模式] [--parents] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol < UUID | 虚拟机名称 > rmdir [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--recursive] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol < UUID | 虚拟机名称 > rm [--domain=域名] [--force] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol < UUID | 虚拟机名称 > mv [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <...> <目标目录>

VBoxManage guestcontrol < UUID | 虚拟机名称 > mktemp [--directory] [--domain=域名] [--mode=模式] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--secure] [--tmpdir=目录名] [--username=用户名] [--verbose] <模板名>

VBoxManage guestcontrol < UUID | 虚拟机名称 > stat [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <文件名>

VBoxManage guestcontrol < UUID | 虚拟机名称 > list < all | files | processes | sessions > [--quiet] [--verbose]

VBoxManage guestcontrol < UUID | 虚拟机名称 > closeprocess [ --session-id=ID | --session-name=名称或模式 ] [--quiet] [--verbose] <PID...>

VBoxManage guestcontrol < UUID | 虚拟机名称 > closesession [ --all | --session-id=ID | --session-name=名称或模式 ] [--quiet] [--verbose]

VBoxManage guestcontrol < UUID | 虚拟机名称 > updatega [--quiet] [--verbose] [--source=访客增强功能.ISO] [--wait-start] [-- [参数...]]

VBoxManage guestcontrol < UUID | 虚拟机名称 > watch [--quiet] [--verbose]

描述

VBoxManage guestcontrol 命令使您能够从主机系统控制客户机 (VM)。请参阅第 4.9 节,“客户机应用程序控制”

通用选项和操作数

以下选项可由任何 VBoxManage guestcontrol 子命令使用

uuid|vmname

指定虚拟机的通用唯一标识符 (UUID) 或名称。

--quiet

指定命令产生更安静的输出。

此选项的简写形式是 -q

--verbose

指定命令产生更详细的输出。

此选项的简写形式是 -v

一些 VBoxManage guestcontrol 子命令要求您提供客户机凭据进行身份验证。这些子命令是:copyfromcopytomkdirmktempmvrmdirrmrunstartstat

虽然您无法执行匿名执行,但用户帐户密码是可选的,并取决于客户机的操作系统安全策略。如果用户帐户没有关联的密码,请指定空密码。在 Windows 等操作系统上,您可能需要调整安全策略以允许使用空密码的用户帐户。此外,全局域规则可能适用,因此无法更改。

以下选项用于在客户机虚拟机上进行身份验证

--domain=domainname

指定 Windows 客户机虚拟机的用户域。

--password=password

指定指定用户的密码。如果您未在命令行上指定密码或密码文件为空,则指定用户需要空密码。

--passwordfile=filename

指定客户机操作系统上包含指定用户密码的文件的绝对路径。如果密码文件为空或您未在命令行上指定密码,则指定用户需要空密码。

--username=username

指定客户机操作系统上运行进程的现有用户。如果未指定,则主机用户运行进程。

客户机进程限制

默认情况下,您可以同时运行最多五个客户机进程。如果启动新客户机进程并超出此限制,则会丢弃最旧的未运行客户机进程以运行新进程。您无法从已丢弃的客户机进程中检索输出。如果所有五个客户机进程都处于活动和运行状态,则尝试启动新客户机进程会失败。

您可以通过两种方式修改客户机进程执行限制

  • 使用 VBoxManage setproperty 命令更新 /VirtualBox/GuestAdd/VBoxService/--control-procs-max-kept 客户机属性值。

  • 使用 VBoxService 命令并指定 --control-procs-max-kept=value 选项。

更改限制后,必须重新启动客户机操作系统。

通过指定值 0,您可以提供无限数量的客户机进程,但此操作不建议。

在客户机上运行命令

VBoxManage guestcontrol < UUID | 虚拟机名称 > run [--arg0=参数0] [--domain=域名] [--dos2unix] [--exe=文件名] [--ignore-orphaned-processes] [ --no-wait-stderr | --wait-stderr ] [ --no-wait-stdout | --wait-stdout ] [ --passwordfile=密码文件 | --password=密码 ] [--profile] [--putenv=变量名=[]] [--quiet] [--timeout=毫秒] [--unix2dos] [--unquoted-args] [--username=用户名] [--verbose] <-- [参数...]>

VBoxManage guestcontrol vmname run 命令使您能够在客户机 VM 上执行程序。标准输入、标准输出和标准错误将从 VM 重定向到主机系统,直到程序完成。

注意

Windows 操作系统对图形应用程序施加了某些限制。请参阅第 14 章,已知限制

--exe=path-to-executable

指定要在客户机 VM 上运行的可执行程序的绝对路径。例如:C:\Windows\System32\calc.exe

--timeout=msec

指定程序可以运行的最长时间(以毫秒为单位)。程序运行时,VBoxManage 接收其输出。

如果您未指定超时值,VBoxManage 将无限期等待进程结束或发生错误。

--putenv=NAME=[value]

在客户机虚拟机环境中设置、修改和取消设置环境变量。

当您创建客户机进程时,它将以默认的标准客户机操作系统环境运行。使用此选项修改该默认环境中的环境变量。

使用 --putenv=NAME=[value] 选项设置或修改由 NAME 指定的环境变量。

使用 --putenv=NAME=[value] 选项取消设置由 NAME 指定的环境变量。

确保包含空格的任何环境变量名称或值都用引号括起来。

为要修改的每个环境变量指定一个 --putenv 选项。

此选项的缩写形式是 -E

--unquoted-args

禁用传递给程序的参数的转义双引号。例如,\"fred\"

--ignore-orphaned-processes

忽略孤儿进程。尚未实现。

--profile

使用 shell 配置文件指定要使用的环境。尚未实现。

--no-wait-stdout

不等待客户机进程结束或接收其退出代码和任何失败解释。

--wait-stdout

等待客户机进程结束以接收其退出代码和任何失败解释。VBoxManage 命令在进程运行期间接收客户机进程的标准输出。

--no-wait-stderr

不等待客户机进程结束以接收其退出代码、错误消息和标志。

--wait-stderr

等待客户机进程结束以接收其退出代码、错误消息和标志。VBoxManage 命令在进程运行期间接收客户机进程的标准错误。

--dos2unix

将 DOS 或 Windows 客户机输出转换为 UNIX 或 Linux 输出。此转换将 CR + LF 行尾更改为 LF。尚未实现。

--unix2dos

将 UNIX 或 Linux 客户机输出转换为 DOS 或 Windows 输出。此转换将 LF 行尾更改为 CR + LF。

--[argument...]

指定程序名称和要传递给程序的任何参数。

确保包含空格的任何命令参数都用引号括起来。

在客户机上启动命令

VBoxManage guestcontrol < UUID | 虚拟机名称 > start [--arg0=参数0] [--domain=域名] [--exe=文件名] [--ignore-orphaned-processes] [ --passwordfile=密码文件 | --password=密码 ] [--profile] [--putenv=变量名=[]] [--quiet] [--timeout=毫秒] [--unquoted-args] [--username=用户名] [--verbose] <-- [参数...]>

VBoxManage guestcontrol vmname start 命令使您能够执行客户机程序直到其完成。

注意

Windows 操作系统对图形应用程序施加了某些限制。请参阅第 14 章,已知限制

从客户机复制文件到主机。

VBoxManage guestcontrol < UUID | 虚拟机名称 > copyfrom [--dereference] [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--no-replace] [--recursive] [--target-directory=主机目标目录] [--update] [--username=用户名] [--verbose] <访客源0> 访客源1 [...] <主机目标>

VBoxManage guestcontrol vmname copyfrom 命令使您能够将文件从客户机 VM 复制到主机系统。

--dereference

启用在客户机文件系统上跟踪符号链接。

--no-replace

仅当文件在主机上尚不存在时才复制。

此选项的简写形式是 -n

--recursive

递归地将文件和目录从指定的客户机目录复制到主机。

此选项的简写形式是 -R

--target-directory=host-dst-dir

指定主机系统上目标目录的绝对路径。例如,C:\Temp

--update

仅当客户机文件比主机上的文件新时才复制。

此选项的简写形式是 -u

guest-source0 [guest-source1 [...]]

指定要从客户机 VM 复制的一个或多个文件的绝对路径。例如,C:\Windows\System32\calc.exe。您可以使用通配符指定多个文件。例如,C:\Windows\System*\*.dll

从主机复制文件到客户机。

VBoxManage guestcontrol < UUID | 虚拟机名称 > copyto [--dereference] [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--no-replace] [--recursive] [--target-directory=访客目标目录] [--update] [--username=用户名] [--verbose] <主机源0> 主机源1 [...]

VBoxManage guestcontrol vmname copyto 命令使您能够将文件从主机系统复制到客户机 VM。

--dereference

启用在主机系统上跟踪符号链接。

--no-replace

仅当文件在客户机上尚不存在时才复制。

此选项的简写形式是 -n

--recursive

递归地将文件和目录从指定的主机目录复制到客户机。

此选项的简写形式是 -R

--target-directory=guest-dst-dir

指定客户机上目标目录的绝对路径。例如,/home/myuser/fromhost

--update

仅当主机文件比客户机上的文件新时才复制。

此选项的简写形式是 -u

host-source0 [host-source1 [...]]

指定要从主机系统复制的文件的绝对路径。例如,C:\Windows\System32\calc.exe。您可以使用通配符指定多个文件。例如,C:\Windows\System*\*.dll

在客户机上创建目录。

VBoxManage guestcontrol < UUID | 虚拟机名称 > mkdir [--domain=域名] [--mode=模式] [--parents] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol vmname mkdir 命令使您能够在客户机 VM 上创建一个或多个目录。

此子命令的替代形式是 mdcreatedircreatedirectory

--parents

创建指定目录的任何缺失的父目录。

例如,如果您尝试创建 D:\Foo\Bar 目录而 D:\Foo 目录不存在,则使用 --parents 会创建缺少的 D:\Foo 目录。但是,如果您尝试创建 D:\Foo\Bar 并且未指定 --parents 选项,则该命令将失败。

--mode=mode

指定要用于指定目录的权限模式。如果指定 --parents 选项,则该模式也将用于关联的父目录。 mode 是一个四位八进制模式,例如 0755

guest-dir [guest-dir...]

指定要在客户机 VM 上创建的一个或多个目录的绝对路径。例如,D:\Foo\Bar

如果客户机 VM 上所有关联的父目录都不存在,则必须指定 --parents 选项。

您必须在客户机虚拟机上拥有足够的权限才能创建指定的目录及其父目录。

从客户机移除目录。

VBoxManage guestcontrol < UUID | 虚拟机名称 > rmdir [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--recursive] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol vmname rmdir 命令使您能够从客户机 VM 删除指定的目录。

此子命令的替代形式是 removedirremovedirectory

--recursive

递归地从客户机虚拟机中删除指定的目录。

此选项的简写形式是 -R

guest-dir [guest-dir...]

指定要从客户机 VM 移除的一个或多个目录的绝对路径。您可以使用通配符指定目录名称。例如,D:\Foo\*Bar

您必须在客户机虚拟机上拥有足够的权限才能删除指定的目录及其父目录。

从客户机移除文件。

VBoxManage guestcontrol < UUID | 虚拟机名称 > rm [--domain=域名] [--force] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <访客目录...>

VBoxManage guestcontrol vmname rm 命令使您能够从客户机 VM 删除指定的文件。

此子命令的替代形式是 removefile

--force(强制)

强制执行操作并覆盖任何确认请求。

此选项的简写形式是 -f

guest-file [guest-file...]

指定要从客户机 VM 移除的一个或多个文件的绝对路径。您可以使用通配符指定文件名。例如,D:\Foo\Bar\text*.txt

您必须在客户机虚拟机上拥有足够的权限才能删除指定的文件。

在客户机上重命名文件或目录

VBoxManage guestcontrol < UUID | 虚拟机名称 > mv [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <...> <目标目录>

VBoxManage guestcontrol vmname mv 命令使您能够在客户机 VM 上重命名文件和目录。

此子命令的替代形式是 moverenrename

guest-source [guest-source...]

指定要在客户机 VM 上移动或重命名的一个文件或单个目录的绝对路径。您可以使用通配符指定文件名。

您必须在客户机 VM 上拥有足够的权限才能访问指定的文件或目录。

dest

指定重命名文件或目录的绝对路径,或文件移动到的目标目录。如果只移动一个文件,dest 可以是文件或目录,否则 dest 必须是目录。

您必须在客户机 VM 上拥有足够的权限才能访问目标文件或目录。

在客户机上创建临时文件或目录

VBoxManage guestcontrol < UUID | 虚拟机名称 > mktemp [--directory] [--domain=域名] [--mode=模式] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--secure] [--tmpdir=目录名] [--username=用户名] [--verbose] <模板名>

VBoxManage guestcontrol vmname mktemp 命令使您能够在客户机 VM 上创建临时文件或临时目录。您可以使用此命令来帮助随后将文件从主机系统复制到客户机 VM。默认情况下,此命令在客户机 VM 的平台特定 temp 目录中创建文件或目录。

此子命令的替代形式是 createtempcreatetemporary

--directory

创建由 template 操作数指定的临时目录。

--secure

通过将权限模式设置为 0755 来强制执行安全文件和目录创建。任何无法安全执行的操作都将失败。

--mode=mode

指定要用于指定目录的权限模式。 mode 是一个四位八进制模式,例如 0755

--tmpdir=directory

指定要在客户机 VM 上创建指定文件或目录的目录的绝对路径。如果未指定,directory 是平台特定的 temp 目录。

template

指定临时文件的模板文件名,不带目录路径。模板文件名必须包含至少一个连续的三个 X 字符序列,或者必须以 X 结尾。

显示客户机上的文件或文件系统状态

VBoxManage guestcontrol < UUID | 虚拟机名称 > stat [--domain=域名] [ --passwordfile=密码文件 | --password=密码 ] [--quiet] [--username=用户名] [--verbose] <文件名>

VBoxManage guestcontrol vmname stat 命令使您能够显示客户机 VM 上的文件或文件系统状态。

file [file ...]

指定客户机 VM 上文件或文件系统的绝对路径。例如,/home/foo/a.out

您必须在客户机 VM 上拥有足够的权限才能访问指定的文件或文件系统。

列出客户机虚拟机的配置和状态信息

VBoxManage guestcontrol < UUID | 虚拟机名称 > list < all | files | processes | sessions > [--quiet] [--verbose]

VBoxManage guestcontrol vmname list 命令使您能够列出客户机控制配置和状态信息。例如,输出显示打开的客户机会话、客户机进程和文件。

all|sessions|processes|files

指示要显示的信息类型。all 显示所有可用数据,sessions 显示客户机会话,processes 显示进程,files 显示文件。

终止客户机会话中的进程

VBoxManage guestcontrol < UUID | 虚拟机名称 > closeprocess [ --session-id=ID | --session-name=名称或模式 ] [--quiet] [--verbose] <PID...>

VBoxManage guestcontrol vmname closeprocess 命令使您能够终止在客户机会话中运行的客户机进程。通过使用进程标识符 (PID) 和会话 ID 或名称指定进程和会话。

--session-id=ID

指定客户机会话的 ID。

--session-name=name|pattern

指定客户机会话的名称。使用包含通配符的模式指定多个会话。

PID [PID ...]

指定要终止的客户机进程的 PID 列表。

关闭客户机会话

VBoxManage guestcontrol < UUID | 虚拟机名称 > closesession [ --all | --session-id=ID | --session-name=名称或模式 ] [--quiet] [--verbose]

VBoxManage guestcontrol vmname closesession 命令使您能够关闭客户机会话。通过会话 ID 或名称指定客户机会话。

--session-id=ID

指定客户机会话的 ID。

--session-name=name|pattern

指定客户机会话的名称。使用包含通配符的模式指定多个会话。

--all

关闭所有客户机。会话。

在客户机上更新增强功能软件

VBoxManage guestcontrol < UUID | 虚拟机名称 > updatega [--quiet] [--verbose] [--source=访客增强功能.ISO] [--wait-start] [-- [参数...]]

VBoxManage guestcontrol vmname updatega 命令使您能够更新指定客户机 VM 中安装的增强功能软件。

此子命令的替代形式是 updateadditionsupdateguestadditions

--source=new-iso-path

指定客户机 VM 上增强功能更新 .ISO 文件的绝对路径。

--reboot

Guest Additions 成功更新后自动重启客户机。

--timeout=ms

设置等待 Guest Additions 整体更新完成的超时时间(毫秒)。默认情况下不使用超时。

--verify

验证 Guest Additions 是否在成功安装后成功更新。客户机重启是强制性的。

--wait-ready

等待当前 Guest Additions 准备好处理 Guest Additions 更新。

--wait-start

在客户机 VM 上启动 VBoxManage 更新过程,然后等待增强功能更新开始,然后终止 VBoxManage 进程。

默认情况下,VBoxManage 命令会等待增强功能更新完成,然后终止。当正在运行的 VBoxManage 进程影响安装程序和客户机操作系统之间的交互时,请使用此选项。

-- 参数 [参数 ...]

指定要传递给增强功能更新程序的可选命令行参数。您可以使用 -- 选项来传递相应的更新程序参数,以便安装尚未安装的功能。

确保包含空格的任何命令参数都用引号括起来。

等待客户机运行级别

VBoxManage guestcontrol vmname waitrunlevel 命令使您能够等待客户机运行级别达到。

--timeout=ms

设置等待达到运行级别的超时时间(毫秒)。默认情况下不使用超时。

系统|用户空间|桌面

指定要等待的运行级别。

显示当前客户机控制活动

VBoxManage guestcontrol < UUID | 虚拟机名称 > watch [--quiet] [--verbose]

VBoxManage guestcontrol vmname watch 命令使您能够显示当前客户机控制活动。

示例

以下 VBoxManage guestcontrol run 命令在 My OL VM Oracle Linux 虚拟机上以 user1 用户身份执行 ls -l /usr 命令。

$ VBoxManage --nologo guestcontrol "My OL VM" run --exe "/bin/ls" \
--username user1 --passwordfile pw.txt --wait-stdout -- -l /usr

--exe 选项指定要在客户机虚拟机中运行的命令的绝对路径,即 /bin/ls。使用 -- 选项将其后的任何参数传递给 ls 命令。

使用 --username 选项指定用户名 user1,并使用 --passwordfile 选项指定一个包含 user1 用户密码的文件名,即 pw.txt

--wait-stdout 选项等待 ls 客户机进程完成,然后再提供退出代码和命令输出。--nologo 选项抑制徽标信息的输出。

以下 VBoxManage guestcontrol run 命令在 My Win VM Windows 虚拟机上以 user1 用户身份执行 ipconfig 命令。标准输入、标准输出和标准错误将从虚拟机重定向到主机系统,直到程序完成。

$ VBoxManage --nologo guestcontrol "My Win VM" run \
--exe "c:\\windows\\system32\\ipconfig.exe" \
--username user1 --passwordfile pw.txt --wait-stdout

--exe 指定要在客户机虚拟机中运行的命令的绝对路径,即 c:\windows\system32\ipconfig.exe。此示例中所示的双反斜杠仅在 UNIX 主机系统上需要。

使用 --username 选项指定用户名 user1,并使用 --passwordfile 选项指定一个包含 user1 用户密码的文件名,即 pw.txt

--wait-stdout 选项等待 ls 客户机进程完成,然后再提供退出代码和命令输出。--nologo 选项用于抑制徽标信息的输出。

以下 VBoxManage guestcontrol start 命令在 My OL VM Oracle Linux 虚拟机上执行 ls -l /usr 命令,直到程序完成。

$ VBoxManage --nologo guestcontrol "My Win VM" start \
--exe "c:\\windows\\system32\\ipconfig.exe" \
--username user1 --passwordfile pw.txt

以下 VBoxManage guestcontrol run 命令在 My OL VM Oracle Linux 虚拟机上以 user1 用户身份执行 /usr/bin/busybox -l /usr 命令,明确使用 ls 作为参数 0。

$ VBoxManage --nologo guestcontrol "My OL VM" run --exe "/usr/bin/busybox" \
--username user1 --passwordfile pw.txt --wait-stdout --arg0 ls -- -l /usr

--exe 选项指定要在客户机虚拟机中运行的命令的绝对路径,即 /usr/bin/busybox。使用 -- 选项将其后的任何参数传递给 busybox 命令。

使用 --username 选项指定用户名 user1,并使用 --passwordfile 选项指定一个包含 user1 用户密码的文件名,即 pw.txt

--wait-stdout 选项等待 ls 客户机进程完成,然后再提供退出代码和命令输出。--nologo 选项抑制徽标信息的输出。

--arg0 选项明确指定要用于执行命令的参数 0。

注意

如果未设置此选项,参数 0 将取自 --exe 的值;或者,如果也未设置 --exe,则取自 -- 之后传递的第一个值。

使用 --verbose 查看传递给客户机的有效命令行。

参数 0 的默认行为是使用 --exe 的值,或者,如果未设置,则使用 -- 之后传递的第一个值。

8.45. VBoxManage debugvm

内省和客户机调试。

概要

VBoxManage debugvm <UUID|虚拟机名称> dumpvmcore [--filename=名称]

VBoxManage debugvm <UUID|虚拟机名称> info <项目> [参数...]

VBoxManage debugvm <UUID|虚拟机名称> injectnmi

VBoxManage debugvm <UUID|虚拟机名称> log [[--release] | [--debug]] [组设置...]

VBoxManage debugvm <UUID|虚拟机名称> logdest [[--release] | [--debug]] [目的地...]

VBoxManage debugvm <UUID|虚拟机名称> logflags [[--release] | [--debug]] [标志...]

VBoxManage debugvm <UUID|虚拟机名称> osdetect

VBoxManage debugvm <UUID|虚拟机名称> osinfo

VBoxManage debugvm <UUID|虚拟机名称> osdmesg [--lines=行数]

VBoxManage debugvm <UUID|虚拟机名称> getregisters [--cpu=ID] [寄存器集.寄存器名...]

VBoxManage debugvm <UUID|虚拟机名称> setregisters [--cpu=ID] [寄存器集.寄存器名=...]

VBoxManage debugvm <UUID|虚拟机名称> show [[--human-readable] | [--sh-export] | [--sh-eval] | [--cmd-set]] [设置项...]

VBoxManage debugvm <UUID|虚拟机名称> stack [--cpu=ID]

VBoxManage debugvm <UUID|虚拟机名称> statistics [--reset] [--descriptions] [--pattern=模式]

VBoxManage debugvm <UUID|虚拟机名称> guestsample [--filename=文件名] [--sample-interval-us=采样间隔微秒] [--sample-time-us=采样时间微秒]

描述

"debugvm" 命令适用于希望深入研究虚拟机执行精确细节的专家。与 第 12.1.4 节,“内置虚拟机调试器” 中描述的虚拟机调试器一样,这些命令仅在您非常熟悉 PC 架构的细节以及如何调试软件时才有用。

常用选项

debugvm 的所有子命令都在运行中的虚拟机上操作

uuid|vmname

虚拟机的 UUID 或名称(区分大小写)。

debugvm dumpvmcore

VBoxManage debugvm <UUID|虚拟机名称> dumpvmcore [--filename=名称]

创建指定虚拟机的系统转储文件。该文件将采用标准的 ELF 核心格式(带自定义节);参见 第 12.1.5 节,“虚拟机核心格式”

这对应于调试器中的 writecore 命令。

--filename=文件名

输出文件的名称。

debugvm info

VBoxManage debugvm <UUID|虚拟机名称> info <项目> [参数...]

显示与 VMM、设备仿真和相关驱动程序有关的信息项。

这对应于调试器中的 info 命令。

要显示的信息项的名称。特殊名称 help 将列出所有可用的信息项以及有关可选参数的提示。

参数

信息项处理程序的可选参数字符串。大多数信息项不接受任何额外参数。未识别的参数通常会被忽略。

debugvm injectnmi

VBoxManage debugvm <UUID|虚拟机名称> injectnmi

导致将不可屏蔽中断 (NMI) 注入客户机。这可能对某些调试场景有用。具体发生什么取决于客户机操作系统,但 NMI 可能会使整个客户机操作系统崩溃。除非您知道自己在做什么,否则请勿使用。

debugvm log

VBoxManage debugvm <UUID|虚拟机名称> log [[--release] | [--debug]] [组设置...]

更改虚拟机进程的调试 (--debug) 或发布 (--release) 日志记录器的组设置。

group-settings 通常是 em.e.f.lhm=~0-em.f 形式的字符串。组匹配支持基本通配符。all 组是所有组的别名。

请记住,组设置是作为对当前设置的修改而应用的。

这对应于调试器中的 log 命令。

debugvm logdest

VBoxManage debugvm <UUID|虚拟机名称> logdest [[--release] | [--debug]] [目的地...]

更改虚拟机进程的调试 (--debug) 或发布 (--release) 日志记录器的目标设置。有关目标格式的详细信息,最佳来源是 src/VBox/Runtime/common/log/log.cpp。

destinations 是一个或多个助记符,可选地以“no”为前缀以禁用它们。其中一些在“:”或“=”分隔符后接受值。多个助记符可以用空格分隔,也可以作为单独的参数在命令行中给出。

可用目标列表

file[=文件], nofile

指定日志文件。如果未给出文件名,将根据当前 UTC 时间和虚拟机进程名称生成一个,并将其放置在虚拟机进程的当前目录中。请注意,如果日志文件已打开,此操作目前将无效。

dir=目录, nodir

指定日志文件的输出目录。请注意,如果日志文件已打开,此操作目前将无效。

history=计数, nohistory

非零值启用日志历史记录,该值指定要保留多少个旧日志文件。

histsize=字节

日志文件在历史化之前的最大大小。默认值为无限。

histtime=

日志文件在历史化之前的最大存在时间(以秒为单位)。默认值为无限。

ringbuffer, noringbuffer

仅将日志记录到日志缓冲区,直到发生显式刷新(例如,通过断言)。这速度快且节省磁盘空间。

stdout, nostdout

将日志内容写入标准输出。

stdout, nostdout

将日志内容写入标准错误。

debugger, nodebugger

如果主机操作系统支持,将日志内容写入调试器。

com, nocom

将日志记录写入 COM 端口。这仅适用于原始模式和环 0 日志记录。

user, nouser

对虚拟机进程没有意义的自定义目标。

这对应于调试器中的 logdest 命令。

debugvm logflags

VBoxManage debugvm <UUID|虚拟机名称> logflags [[--release] | [--debug]] [标志...]

更改虚拟机进程的调试 (--debug) 或发布 (--release) 日志记录器上的标志。请注意,这些修改是应用于现有更改的,而不是替换它们。

flags 是一系列标志助记符,可选地以“no”、“!”、“~”或“-”为前缀以否定其含义。“+”前缀可用于撤消先前的否定或用作分隔符,尽管最好使用空格或单独的参数。

日志标志助记符列表,及其适用的相反形式(星号表示默认值)

enabled* (已启用), disabled (已禁用)

启用或禁用日志记录。

buffered (缓冲), unbuffered* (未缓冲)

在日志输出到达目标之前启用缓冲。

writethrough(/writethru)

是否以直写缓冲设置打开目标文件。

flush

在每个日志语句后启用输出文件(到磁盘)的刷新。

lockcnts

在每行日志前加上当前线程的锁定计数。

cpuid

在每行日志前加上当前 CPU 的 ID。

pid

在每行日志前加上当前进程 ID。

flagno

为每行日志添加与日志语句对应的数字标志前缀。

flag

在每行日志前加上与日志语句对应的标志助记符。

groupno

在每行日志前加上生成该日志语句的日志组号。

group

在每行日志前加上生成该日志语句的日志组名称。

tid

在每行日志前加上当前线程标识符。

thread

在每行日志前加上当前线程名称。

time

在每行日志前加上当前 UTC 实时时间。

timeprog

在每行日志前加上程序启动以来的当前单调时间。

msprog

在每行日志前加上程序启动以来的当前单调时间戳值(毫秒)。

ts

在每行日志前加上当前单调时间戳值(纳秒)。

tsc

在每行日志前加上当前 CPU 时间戳计数器 (TSC) 值。

rel (相对), abs* (绝对)

选择 tstsc 前缀是显示为相对于上一行日志的时间还是绝对时间。

hex* (十六进制), dec (十进制)

选择 tstsc 前缀是格式化为十六进制还是十进制。

custom

自定义日志前缀,默认对虚拟机进程没有意义。

usecrlf, uself*

以 DOS 样式 (CRLF) 或仅 UNIX 样式 (LF) 行尾输出。

overwrite* (覆盖), append (追加)

覆盖目标文件或追加到目标文件。

这对应于调试器中的 logflags 命令。

debugvm osdetect

VBoxManage debugvm <UUID|虚拟机名称> osdetect

使 VMM 的调试器功能(重新)检测客户机操作系统 (OS)。这将首先加载所有调试器插件。

这对应于调试器中的 detect 命令。

debugvm osinfo

VBoxManage debugvm <UUID|虚拟机名称> osinfo

显示 VMM 的调试器功能之前检测到的客户机操作系统 (OS) 的信息。

debugvm osdmesg

VBoxManage debugvm <UUID|虚拟机名称> osdmesg [--lines=行数]

如果检测到并支持,显示客户机操作系统内核日志。

--lines=

要显示的日志行数,从末尾开始计数。默认为无限。

debugvm getregisters

VBoxManage debugvm <UUID|虚拟机名称> getregisters [--cpu=ID] [寄存器集.寄存器名...]

检索客户机 CPU 和仿真设备的寄存器值。

reg-set.reg-name

一个或多个寄存器,每个寄存器具有以下形式之一

  1. register-set.register-name.sub-field

  2. register-set.register-name

  3. cpu-register-name.sub-field

  4. cpu-register-name

  5. all

all 形式将导致显示所有寄存器(无子字段)。寄存器名称不区分大小写。

--cpu=ID

仅指定 CPU 寄存器时(第三种和第四种形式)选择 CPU 寄存器集。默认为 0。

debugvm setregisters

VBoxManage debugvm <UUID|虚拟机名称> setregisters [--cpu=ID] [寄存器集.寄存器名=...]

更改客户机 CPU 和仿真设备的寄存器值。

reg-set.reg-name=value

一个或多个寄存器赋值,每个赋值具有以下形式之一

  1. register-set.register-name.sub-field=value

  2. register-set.register-name=value

  3. cpu-register-name.sub-field=value

  4. cpu-register-name=value

值格式应与 getregisters 显示的样式相同,但八进制和十进制均可用于代替十六进制。

--cpu=ID

仅指定 CPU 寄存器时(第三种和第四种形式)选择 CPU 寄存器集。默认为 0。

debugvm show

VBoxManage debugvm <UUID|虚拟机名称> show [[--human-readable] | [--sh-export] | [--sh-eval] | [--cmd-set]] [设置项...]

显示虚拟机的日志记录设置。

--human-readable

选择人类可读的输出。

--sh-export

选择 Bourne shell 风格的 export 命令作为输出格式。

--sh-eval

选择 Bourne shell 风格的 eval 命令输入作为输出格式。

--cmd-set

选择 DOS 风格的 SET 命令作为输出格式。

设置项

要显示的内容。以下一项或多项

  • logdbg-settings - 调试日志设置。

  • logrel-settings - 发布日志设置。

  • log-settings - 调试和发布日志设置的别名。

debugvm stack

VBoxManage debugvm <UUID|虚拟机名称> stack [--cpu=ID]

尽我们所能解开客户机 CPU 堆栈。建议首先运行 osdetect 命令,因为这可以提供符号和可能的回溯信息。

--cpu=ID

选择单个客户机 CPU 以显示其堆栈。默认为所有 CPU。

debugvm statistics

VBoxManage debugvm <UUID|虚拟机名称> statistics [--reset] [--descriptions] [--pattern=模式]

显示或重置 VMM 统计信息。

检索客户机 CPU 和仿真设备的寄存器值。

--pattern=模式

用于选择统计信息的 DOS/NT 样式通配符模式。可以使用 '|' (管道) 字符作为分隔符来指定多个模式。

--reset

选择重置模式而不是显示模式。

debugvm guestsample

VBoxManage debugvm <UUID|虚拟机名称> guestsample [--filename=文件名] [--sample-interval-us=采样间隔微秒] [--sample-time-us=采样时间微秒]

创建客户机活动的示例报告。

检索要转储报告的文件名。

--filename=文件名

要转储示例报告的文件名。

--sample-interval-us=间隔

客户机样本之间的间隔(微秒)。

--sample-time-us=时间

采集客户机样本的微秒数。

8.46. VBoxManage metrics

监视系统资源使用情况。

概要

VBoxManage metrics collect [--detach] [--list] [--period=] [--samples=计数] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics disable [--list] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics enable [--list] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics list [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics query [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics setup [--list] [--period ] [--samples 计数] [ * | host | 虚拟机名称 [指标列表] ]

描述

VBoxManage metrics 命令使您能够监视主机系统和虚拟机 (VM) 的系统资源使用情况。例如,您可以在指定的采样期间监视特定的度量指标,例如 CPU 在用户模式下执行所花费的时间百分比 (CPU/Load/User)。

运行时,VBoxSVC 进程在内部收集并保存指定的度量指标数据。VBoxSVC 进程一直运行,直到您关闭所有虚拟机和前端后不久。随时使用 VBoxManage metrics query 命令检索数据。

默认情况下,除非您运行 VBoxManage metrics setup 命令指定以秒为单位的采样间隔以及要保存的度量指标数量,否则不会收集度量指标。

请注意,您只能为已启动的虚拟机启用度量指标收集。虚拟机关闭时,将丢弃该虚拟机的收集数据和收集设置。

度量指标

主机和虚拟机具有不同的关联度量指标集,您可以通过运行 VBoxManage metrics list 命令来查看这些指标。

每个指标都表示为一个由类别和指标组成的字符串。可选地,指标字符串可以包含以下任何一项:子指标、子子指标和聚合。指标字符串的格式如下:

category/metric[/submetric[/sub-submetric]][:aggregate]
  • category 是资源类型,例如 CPURAMFSNet

  • metric 是与资源类别关联的测量类型。例如,LoadMHz 度量指标与 CPU 资源类别关联。

  • submetric 是与度量指标关联的可选测量类型。例如,UserKernelIdle 子度量指标与 Load 度量指标关联。

  • sub-submetric 是与子度量指标关联的可选测量类型。例如,RxTx 子子度量指标与 Net 资源类别的 Rate 子度量指标关联。关联的度量指标是网络接口。

  • aggregate 是为资源类别提供最小、最大和平均测量的可选功能。例如,RAM/Usage/Free:min 度量指标表示在主机系统上所有保存的数据中找到的最小可用内存量。

默认情况下,VBoxManage metrics 命令对主机系统和所有虚拟机操作,并报告所有度量指标。您可以选择将这些命令限制为仅在主机系统或特定虚拟机上操作,并报告一个或多个度量指标的列表。

常用选项

* | host | 虚拟机名称

指定要操作的组件。默认情况下,此命令对主机系统和所有正在运行的 VM 进行操作。

如果您指定 host,则 VBoxManage metrics 命令仅在主机系统上操作。如果您指定星号 (*),该命令将对所有虚拟机操作。如果您指定虚拟机的名称,则 VBoxManage metrics 命令将对该虚拟机操作。

度量指标列表

指定一个或多个指标的逗号分隔列表。

度量指标的形式必须包含度量指标字符串中由斜杠分隔的 categorymetric 部分。

请注意,VBoxManage metrics enableVBoxManage metrics disable 命令要求您将度量指标指定为参数。度量指标必须仅包含资源类别和度量指标部分,例如 CPU/LoadRAM/Usage

收集数据度量指标

VBoxManage metrics collect [--detach] [--list] [--period=] [--samples=计数] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics collect 命令定期收集并输出数据,直到您按 Ctrl+C 停止该进程。

--detach

禁用度量指标数据收集,因此不输出数据。使用此选项与运行 VBoxManage metrics setup 命令相同。

--list

显示哪些指标与指定筛选器匹配。

--period=

指定收集指标数据样本之间的等待秒数。默认值为 1。

--samples=计数

指定要保存的度量指标数据样本数。要查看保存的数据,请使用 VBoxManage metrics query 命令。默认值为 1。

禁用度量指标数据收集

VBoxManage metrics disable [--list] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics disable 命令暂停数据收集。此操作不影响数据收集属性或已收集的数据。请注意,在度量指标列表中指定子度量指标不会禁用其基础度量指标。

请注意,VBoxManage metrics disable 命令要求您将度量指标指定为参数。度量指标必须仅包含资源类别和度量指标部分,例如 CPU/LoadRAM/Usage

--list

显示命令是否按预期成功。

启用度量指标数据收集

VBoxManage metrics enable [--list] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics enable 命令在使用 VBoxManage metrics disable 命令暂停数据收集后恢复数据收集。请注意,在度量指标列表中指定子度量指标不会启用其基础度量指标。

VBoxManage metrics setup 命令不同,VBoxManage metrics enable 命令不会丢弃指定对象和度量指标集的先前收集的样本。

请注意,VBoxManage metrics enable 命令要求您将度量指标指定为参数。度量指标必须仅包含资源类别和度量指标部分,例如 CPU/LoadRAM/Usage

--list

显示命令是否按预期成功。

列出度量指标值

VBoxManage metrics list [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics list 命令显示当前可用的度量指标。请注意,只有当虚拟机正在运行时,才会显示特定于虚拟机的度量指标。

列出已保存的度量指标数据

VBoxManage metrics query [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics query 命令检索并显示已保存的度量指标数据。

请注意,VBoxManage metrics query 命令不会删除或刷新已保存的数据,但较旧的样本会随着时间被较新的样本替换。

配置度量指标收集属性

VBoxManage metrics setup [--list] [--period ] [--samples 计数] [ * | host | 虚拟机名称 [指标列表] ]

VBoxManage metrics setup 命令配置度量指标收集属性。

请注意,此命令将丢弃指定对象和度量指标集的任何先前收集的样本。要启用或禁用度量指标收集而不丢弃数据,请分别使用 VBoxManage metrics enable 命令或 VBoxManage metrics disable 命令。

--list

显示由于命令执行而修改了哪些指标。

--period=

指定收集指标数据样本之间的等待秒数。默认值为 1。

--samples=计数

指定要保存的度量指标数据样本数。要查看保存的数据,请使用 VBoxManage metrics query 命令。默认值为 1。

示例

以下示例命令每秒启用主机处理器和内存使用度量指标的收集。--samples 选项保存最新的五个样本。

$ VBoxManage metrics setup --period 1 --samples 5 host CPU/Load,RAM/Usage

以下命令列出主机系统和 VM 可用的指标:

$ VBoxManage metrics list

请注意,主机系统和 VM 具有不同的指标集。

以下示例演示了如何查询有关 test 虚拟机在用户和内核模式下花费的 CPU 时间的度量指标数据

$ VBoxManage metrics query test CPU/Load/User,CPU/Load/Kernel

8.47. VBoxManage natnetwork

创建、修改和管理 NAT 网络。

概要

VBoxManage natnetwork add [ --disable | --enable ] <--netname=名称> <--network=网络> [--dhcp=on|off] [--ipv6=on|off] [--loopback-4=规则] [--loopback-6=规则] [--port-forward-4=规则] [--port-forward-6=规则]

VBoxManage natnetwork list [过滤模式]

VBoxManage natnetwork modify [--dhcp=on|off] [ --disable | --enable ] <--netname=名称> <--network=网络> [--ipv6=on|off] [--loopback-4=规则] [--loopback-6=规则] [--port-forward-4=规则] [--port-forward-6=规则]

VBoxManage natnetwork remove <--netname=名称>

VBoxManage natnetwork start <--netname=名称>

VBoxManage natnetwork stop <--netname=名称>

描述

VBoxManage natnetwork 命令使您能够创建、修改和管理 NAT 网络。

NAT 网络使用网络地址转换 (NAT) 服务。该服务将系统分组到一个网络中,并防止外部系统直接访问网络中的系统。该服务还使网络中的系统能够通过 IPv4 和 IPv6 上的 TCP 和 UDP 相互通信以及与外部系统通信。

NAT 服务附加到内部网络。虚拟机要使用 NAT 服务,必须将虚拟机附加到内部网络。创建 NAT 服务时指定内部网络的名称。请注意,如果内部网络不存在,则会创建该网络。

添加 NAT 网络服务

VBoxManage natnetwork add [ --disable | --enable ] <--netname=名称> <--network=网络> [--dhcp=on|off] [--ipv6=on|off] [--loopback-4=规则] [--loopback-6=规则] [--port-forward-4=规则] [--port-forward-6=规则]

VBoxManage natnetwork add 命令创建新的内部网络接口,并添加 NAT 网络服务。您必须先使用此命令,然后才能将虚拟机附加到 NAT 网络。

--disable

禁用 NAT 网络服务。

--enable

启用 NAT 网络服务。

--netname=名称

指定主机操作系统上新的内部网络接口的名称。

--network

指定 NAT 服务接口的静态或 DHCP 网络地址和掩码。默认情况下,此值指定静态网络地址。

--dhcp

启用或禁用您使用 --netname 选项指定的 DHCP 服务器。

--ipv6

启用或禁用 IPv6。默认情况下,IPv6 已禁用,IPv4 已启用。

--loopback-4=规则

使用指定规则启用 IPv4 回环接口。

--loopback-6=规则

使用指定规则启用 IPv6 回环接口。

--port-forward-4=规则

使用 rule 指定的规则启用 IPv4 端口转发。

--port-forward-6=规则

使用 rule 指定的规则启用 IPv6 端口转发。

移除 NAT 网络服务

VBoxManage natnetwork remove <--netname=名称>

VBoxManage natnetwork remove 命令移除指定的 NAT 网络服务。

--netname=名称

指定要移除的 NAT 网络服务的名称。

启动 NAT 网络服务

VBoxManage natnetwork start <--netname=名称>

VBoxManage natnetwork start 命令启动 NAT 网络服务和任何关联的 DHCP 服务器。

--netname=名称

指定要启动的 NAT 网络服务的名称。

停止 NAT 网络服务

VBoxManage natnetwork stop <--netname=名称>

VBoxManage natnetwork stop 命令停止 NAT 网络服务和任何关联的 DHCP 服务器。

--netname=名称

指定要停止的 NAT 网络服务的名称。

列出所有 NAT 网络服务

VBoxManage natnetwork list [过滤模式]

VBoxManage natnetwork list 命令列出所有 NAT 网络服务。您可以使用模式来显示 NAT 网络服务的子集。

过滤模式

指定可选的过滤模式。

修改 NAT 网络服务的设置

VBoxManage natnetwork modify [--dhcp=on|off] [ --disable | --enable ] <--netname=名称> <--network=网络> [--ipv6=on|off] [--loopback-4=规则] [--loopback-6=规则] [--port-forward-4=规则] [--port-forward-6=规则]

VBoxManage natnetwork modify 命令修改现有内部网络接口的设置。

--disable

禁用 NAT 网络服务。

--enable

启用 NAT 网络服务。

--netname=名称

指定主机操作系统上新的内部网络接口的名称。

--network

指定 NAT 服务接口的静态或 DHCP 网络地址和掩码。默认情况下,此值指定静态网络地址。

--dhcp

启用或禁用您使用 --netname 选项指定的 DHCP 服务器。

--ipv6

启用或禁用 IPv6。默认情况下,IPv6 已禁用,IPv4 已启用。

--loopback-4=规则

使用指定规则启用 IPv4 回环接口。

--loopback-6=规则

使用指定规则启用 IPv6 回环接口。

--port-forward-4=规则

使用 rule 指定的规则启用 IPv4 端口转发。

--port-forward-6=规则

使用 rule 指定的规则启用 IPv6 端口转发。

示例

以下命令演示了如何为 natnet1 内部网络创建 NAT 网络,该网络使用 192.168.15.0/24 网络地址和 NAT 服务接口的掩码。在此静态配置中,网关默认分配 192.168.15.1 IP 地址。请注意,此 IP 地址是您使用 --network 选项指定的网络地址之后的下一个地址。

$ VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable

以下命令演示了如何在创建后将 DHCP 服务器添加到 natnet1 NAT 网络

$ VBoxManage natnetwork modify --netname natnet1 --dhcp on

8.48. VBoxManage hostonlyif

管理仅主机网络接口。

概要

VBoxManage hostonlyif ipconfig <接口名> [ --dhcp | --ip=IPv4地址 [--netmask=IPv4子网掩码] | --ipv6=IPv6地址 [--netmasklengthv6=长度] ]

VBoxManage hostonlyif create

VBoxManage hostonlyif remove <接口名>

描述

VBoxManage hostonlyif 命令使您能够更改仅主机网络接口的 IP 配置。有关仅主机网络的说明,请参见 第 6.7 节,“仅主机网络”。每个仅主机网络接口由名称标识,可以使用内部 DHCP 服务器或手动 IP 配置(包括 IPv4 和 IPv6)。

配置仅主机接口

VBoxManage hostonlyif ipconfig <接口名> [ --dhcp | --ip=IPv4地址 [--netmask=IPv4子网掩码] | --ipv6=IPv6地址 [--netmasklengthv6=长度] ]

VBoxManage hostonlyif ipconfig 命令配置仅主机接口。

ifname

指定网络接口的名称。名称形式为 vboxnetN,其中 N 是接口实例。

--dhcp

对网络接口使用 DHCP。

您不能将此选项与 --ip--ipv6--netmask--netmasklengthv6 选项一起使用。

--ip=IPv4地址

指定网络接口的 IPv4 IP 地址。

您不能将此选项与 --dhcp--ipv6--netmasklengthv6 选项一起使用。

--netmask=IPv4网络掩码

指定网络接口的 IPv4 网络掩码。默认值为 255.255.255.0

您只能将此选项与 --ip 选项一起使用。

--ipv6=IPv6地址

指定网络接口的 IPv6 IP 地址。

您不能将此选项与 --dhcp--ip--netmask 选项一起使用。

--netmasklengthv6=长度

指定 IPv6 网络接口的长度。默认值为 64

您只能将此选项与 --ipv6 选项一起使用。

在主机系统上创建网络接口

VBoxManage hostonlyif create

VBoxManage hostonlyif create 命令在主机操作系统 (OS) 上创建新的仅主机网络接口。网络接口名称的形式为 vboxnetN,其中 N 是接口实例。在将虚拟机 (VM) 附加到仅主机网络之前,必须运行此命令。

从主机系统移除网络接口

VBoxManage hostonlyif remove <接口名>

VBoxManage hostonlyif remove 命令从主机操作系统中移除指定的仅主机网络接口。

ifname

指定网络接口的名称。名称形式为 vboxnetN,其中 N 是接口实例。

示例

以下命令创建一个新的仅主机网络接口。

$ VBoxManage hostonlyif create
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interface 'vboxnet2' was successfully created

以下命令为 vboxnet2 仅主机网络接口配置 IPv4 地址。

$ VBoxManage hostonlyif ipconfig vboxnet2 --ip 10.0.2.18

8.49. VBoxManage hostonlynet

仅主机网络管理。

概要

VBoxManage hostonlynet add <--name=网络名称> [--id=网络ID] <--netmask=掩码> <--lower-ip=起始IP地址> <--upper-ip=结束IP地址> [ --enable | --disable ]

VBoxManage hostonlynet modify < --name=netname | --id=netid > [--lower-ip=address] [--upper-ip=address] [--netmask=mask] [ --enable | --disable ]

VBoxManage hostonlynet remove < --name=netname | --id=netid >

描述

hostonlynet 命令使您能够控制仅主机网络。

常用选项

hostonlynet 的所有子命令都在可通过其名称或 UUID 标识的仅主机网络上操作

--name=网络名称

仅主机网络名称。您在 VBoxManage list hostonlynets 的输出中将其视为 VBoxNetworkName。

--id=网络ID

仅主机网络 UUID。如果添加新网络时未指定,将自动生成一个。

hostonlynet add

VBoxManage hostonlynet add <--name=网络名称> [--id=网络ID] <--netmask=掩码> <--lower-ip=起始IP地址> <--upper-ip=结束IP地址> [ --enable | --disable ]

添加一个新的仅主机网络。

配置仅主机网络的选项

--netmask=掩码

网络掩码。通常为 255.255.255.0。

--lower-ip=地址, --upper-ip=地址

用于通过 DHCP 分发的 IP 地址范围。上限是包含性的,而下限不是,因此上限地址将分发给客户端,而下限地址将由主机本身使用。

--enable, --disable

是否启用或禁用仅主机网络。如果未指定,网络将以启用状态创建。

hostonlynet modify

VBoxManage hostonlynet modify < --name=netname | --id=netid > [--lower-ip=address] [--upper-ip=address] [--netmask=mask] [ --enable | --disable ]

这将修改现有仅主机网络配置。它接受与 add 命令相同的选项。

hostonlynet remove

VBoxManage hostonlynet remove < --name=netname | --id=netid >

删除指定的仅主机网络。

8.50. VBoxManage dhcpserver

DHCP 服务器管理。

概要

VBoxManage dhcpserver add < --network=netname | --interface=ifname > <--server-ip=address> <--netmask=mask> <--lower-ip=address> <--upper-ip=address> < --enable | --disable >
[[--global] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds]...]
[<--group=name> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--incl-mac=address...] | [--excl-mac=address...] | [--incl-mac-wild=pattern...] | [--excl-mac-wild=pattern...] | [--incl-vendor=string...] | [--excl-vendor=string...] | [--incl-vendor-wild=pattern...] | [--excl-vendor-wild=pattern...] | [--incl-user=string...] | [--excl-user=string...] | [--incl-user-wild=pattern...] | [--excl-user-wild=pattern...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds]...]
[<--vm=name|uuid> | [--nic=1-N] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address]...]
[<--mac-address=address> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address]...]

VBoxManage dhcpserver modify < --network=netname | --interface=ifname > [--server-ip=address] [--lower-ip=address] [--upper-ip=address] [--netmask=mask] [ --enable | --disable ]
[[--global] | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--remove-config]...]
[<--group=name> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--del-mac=address...] | [--incl-mac=address...] | [--excl-mac=address...] | [--del-mac-wild=pattern...] | [--incl-mac-wild=pattern...] | [--excl-mac-wild=pattern...] | [--del-vendor=string...] | [--incl-vendor=string...] | [--excl-vendor=string...] | [--del-vendor-wild=pattern...] | [--incl-vendor-wild=pattern...] | [--excl-vendor-wild=pattern...] | [--del-user=string...] | [--incl-user=string...] | [--excl-user=string...] | [--del-user-wild=pattern...] | [--incl-user-wild=pattern...] | [--excl-user-wild=pattern...] | [--zap-conditions] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--remove-config]...]
[<--vm=name|uuid> | [--nic=1-N] | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address] | [--remove-config]...]
[<--mac-address=address> | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address] | [--remove-config]...]

VBoxManage dhcpserver remove < --network=netname | --interface=ifname >

VBoxManage dhcpserver start < --network=netname | --interface=ifname >

VBoxManage dhcpserver restart < --network=netname | --interface=ifname >

VBoxManage dhcpserver stop < --network=netname | --interface=ifname >

VBoxManage dhcpserver findlease < --network=netname | --interface=ifname > <--mac-address=mac>

描述

dhcpserver 命令使您能够控制 VirtualBox 内置的 DHCP 服务器。在使用内部网络或仅主机网络时,您可能会发现这很有用。理论上,您也可以为桥接网络启用它,但这可能会与物理网络中的其他 DHCP 服务器发生冲突。

常用选项

dhcpserver 的所有子命令都在可通过其名称标识的内部网络上操作,或者在仅主机情况下通过仅主机接口名称标识的网络上操作。

--network=网络名称

内部网络名称。这与您在配置虚拟机进行内部网络连接时用作 VBoxManage modifyvm --intnet 选项的值相同。或者您在 VBoxManage list intnetsVBoxManage list natnetsVBoxManage list hostonlyifs 的输出中将其视为 VBoxNetworkName。

--interface=接口名称

仅主机接口名称。这与您在配置虚拟机使用仅主机网络时用作 VBoxManage modifyvm --host-only-adapter 选项的值相同。该值也可以在 VBoxManage list hostonlyifs 的“名称”行中找到。

dhcpserver add

VBoxManage dhcpserver add < --network=netname | --interface=ifname > <--server-ip=address> <--netmask=mask> <--lower-ip=address> <--upper-ip=address> < --enable | --disable >
[[--global] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds]...]
[<--group=name> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--incl-mac=address...] | [--excl-mac=address...] | [--incl-mac-wild=pattern...] | [--excl-mac-wild=pattern...] | [--incl-vendor=string...] | [--excl-vendor=string...] | [--incl-vendor-wild=pattern...] | [--excl-vendor-wild=pattern...] | [--incl-user=string...] | [--excl-user=string...] | [--incl-user-wild=pattern...] | [--excl-user-wild=pattern...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds]...]
[<--vm=name|uuid> | [--nic=1-N] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address]...]
[<--mac-address=address> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address]...]

向网络或仅主机接口添加新的 DHCP 服务器。

配置 DHCP 服务器核心的选项

--server-ip=地址

DHCP 服务器应使用的 IP 地址。

--lower-ip=地址, --upper-ip=地址

DHCP 服务器要管理的 IP 地址范围。这不应包括 DHCP 服务器本身的地址,但它必须与 DHCP 服务器在同一网络中。边界是包含的,因此下限和上限地址都将分发给客户端。

--netmask=掩码

网络掩码。通常为 255.255.255.0。

--enable, --disable

是否启用或禁用 DHCP 服务器。如果未指定,服务器将以禁用状态创建,并且不分发任何 IP 地址。

选择范围的选项

--global

将配置范围设置为全局。任何后续的 --set-opt 选项都将应用于所有 DHCP 客户端。

--vm=虚拟机名称|UUID

将配置范围设置为指定虚拟机的第一个网卡。任何后续的 --set-opt 选项将仅适用于该接口,而不适用于其他任何地方。

--nic=1-N

将配置范围设置为 --vm 中指定的虚拟机除第一个之外的网卡。

--mac-address=地址

将配置范围设置为指定的 MAC 地址。

--group=名称

将配置范围设置为指定的组。

配置当前选定范围的选项

--set-opt=dhcp选项号 值

添加指定的 DHCP 选项号 (0-255) 和值。值格式是选项特定的(通常是人类可读的),并将由 API 和 DHCP 服务器验证。

--set-opt-hex=dhcp选项号 十六进制字符串

添加指定的 DHCP 选项号 (0-255) 和值。选项值指定为原始的十六进制字节序列,可选地以冒号分隔。API 或 DHCP 服务器不对这些执行任何验证,它们将按指定传递给客户端。

--force-opt=dhcp选项号

强制将指定的 DHCP 选项号 (0-255) 发送给客户端,无论其是否请求(前提是该选项在某个级别配置了值)。

--suppress-opt=dhcp选项号

当存在于此配置范围或更高级别配置范围时,阻止将指定的 DHCP 选项号 (0-255) 发送给客户端。

--min-lease-time=

设置当前范围的最小租用时间(以秒为单位)。零表示从更高级别的选项获取值或使用默认值。

--default-lease-time=

设置当前范围的默认租约时间,以秒为单位。零表示从更高的选项级别获取值或使用默认值。

--max-lease-time=seconds

设置当前范围的最大租约时间(秒)。零表示从更高级别的选项获取值或使用默认值。

--fixed-address=address

--vm--mac-address 配置范围的固定地址分配。任何空的 address 会将其变回动态地址分配。

配置组成员条件的选项(排除优先于包含)

--incl-mac=address

将指定的 MAC 地址包含在组中。

--excl-mac=address

将指定的 MAC 地址从组中排除。

--incl-mac-wild=pattern

将指定的 MAC 地址模式包含在组中。

--excl-mac-wild=pattern

将指定的 MAC 地址模式从组中排除。

--incl-vendor=string

将指定的供应商类 ID 包含在组中。

--excl-vendor=string

将指定的供应商类 ID 从组中排除。

--incl-vendor-wild=pattern

将指定的供应商类 ID 模式包含在组中。

--excl-vendor-wild=pattern

将指定的供应商类 ID 模式从组中排除。

--incl-user=string

将指定的用户类 ID 包含在组中。

--excl-user=string

将指定的用户类 ID 从组中排除。

--incl-user-wild=pattern

将指定的用户类 ID 模式包含在组中。

--excl-user-wild=pattern

将指定的用户类 ID 模式从组中排除。

dhcpserver modify

VBoxManage dhcpserver modify < --network=netname | --interface=ifname > [--server-ip=address] [--lower-ip=address] [--upper-ip=address] [--netmask=mask] [ --enable | --disable ]
[[--global] | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--remove-config]...]
[<--group=name> | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--del-mac=address...] | [--incl-mac=address...] | [--excl-mac=address...] | [--del-mac-wild=pattern...] | [--incl-mac-wild=pattern...] | [--excl-mac-wild=pattern...] | [--del-vendor=string...] | [--incl-vendor=string...] | [--excl-vendor=string...] | [--del-vendor-wild=pattern...] | [--incl-vendor-wild=pattern...] | [--excl-vendor-wild=pattern...] | [--del-user=string...] | [--incl-user=string...] | [--excl-user=string...] | [--del-user-wild=pattern...] | [--incl-user-wild=pattern...] | [--excl-user-wild=pattern...] | [--zap-conditions] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--remove-config]...]
[<--vm=name|uuid> | [--nic=1-N] | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address] | [--remove-config]...]
[<--mac-address=address> | [--del-opt=dhcp-opt-no...] | [--set-opt=dhcp-opt-no value...] | [--set-opt-hex=dhcp-opt-no hexstring...] | [--force-opt=dhcp-opt-no...] | [--unforce-opt=dhcp-opt-no...] | [--supress-opt=dhcp-opt-no...] | [--unsupress-opt=dhcp-opt-no...] | [--min-lease-time=seconds] | [--default-lease-time=seconds] | [--max-lease-time=seconds] | [--fixed-address=address] | [--remove-config]...]

这会修改现有的 DHCP 服务器配置。它接受与 add 命令相同的选项,并在范围配置中增加了以下内容:

--del-opt=dhcp-opt-no

--set-opt 对应,这将导致指定的 DHCP 选项号(0-255)从服务器设置中删除。与 --set-opt 类似,删除范围由 --global--vm--mac-address--group 选项控制。

--unforce-opt=dhcp-opt-no

从强制选项列表中删除指定的 DHCP 选项号(0-255)(即 --force-opt 的反向操作)。与 --set-opt 类似,删除范围由 --global--vm--mac-address--group 选项控制。

--unsuppress-opt=dhcp-opt-no

从抑制选项列表中删除指定的 DHCP 选项号(0-255)(即 --suppress-opt 的反向操作)。与 --set-opt 类似,删除范围由 --global--vm--mac-address--group 选项控制。

--remove-config

删除当前作用域的配置。--global 范围不可删除。使用此选项后,配置范围将更改为 --global

以及新增的这些组成员条件选项

--del-mac=address

从组条件中删除指定的 MAC 地址。

--del-mac-wild=pattern

从组条件中删除指定的 MAC 地址模式。

--del-vendor=string

从组条件中删除指定的供应商类 ID。

--del-vendor-wild=pattern

从组条件中删除指定的供应商类 ID 模式。

--del-user=string

从组条件中删除指定的用户类 ID。

--del-user-wild=pattern

从组条件中删除指定的用户类 ID 模式。

--zap-conditions

删除所有组条件。

dhcpserver 移除

VBoxManage dhcpserver remove < --network=netname | --interface=ifname >

删除指定的 DHCP 服务器。

dhcpserver 启动

VBoxManage dhcpserver start < --network=netname | --interface=ifname >

启动指定的 DHCP 服务器。

dhcpserver 重启

VBoxManage dhcpserver restart < --network=netname | --interface=ifname >

重新启动指定的 DHCP 服务器。DHCP 服务器必须正在运行。

dhcpserver 停止

VBoxManage dhcpserver stop < --network=netname | --interface=ifname >

停止指定的 DHCP 服务器。

dhcpserver 查找租约

VBoxManage dhcpserver findlease < --network=netname | --interface=ifname > <--mac-address=mac>

执行租约数据库查找。这主要用于获取正在运行的虚拟机的 IP 地址。

--mac-address=mac

要在租约数据库中查找的 MAC 地址。

常见 DHCP 选项

1 - 子网掩码

IPv4 子网掩码。默认情况下设置为 --netmask 选项的值。

2 - 时间偏移

UTC 偏移量,以秒为单位(32 位十进制值)。

3 - 路由器

以空格分隔的 IPv4 路由器地址列表。

4 - 时间服务器

以空格分隔的 IPv4 时间服务器 (RFC 868) 地址列表。

5 - 名称服务器

以空格分隔的 IPv4 名称服务器 (IEN 116) 地址列表。

6 - 域名服务器

以空格分隔的 IPv4 DNS 地址列表。

7 - 日志服务器

以空格分隔的 IPv4 日志服务器地址列表。

8 - Cookie 服务器

以空格分隔的 IPv4 Cookie 服务器 (RFC 865) 地址列表。

9 - LPR 服务器

以空格分隔的 IPv4 行式打印机服务器 (RFC 1179) 地址列表。

10 - Impress 服务器

以空格分隔的 IPv4 imagen impress 服务器地址列表。

11 - 资源位置服务器

以空格分隔的 IPv4 资源位置 (RFC 887) 地址列表。

12 - 主机名

客户端名称。有关字符限制,请参阅 RFC 1035。

13 - 引导文件大小

构成引导文件的 512 字节块的数量(16 位十进制值)。

14 - Merit 转储文件

客户端核心文件。

15 - 域名

客户端的域名。

16 - 交换服务器

客户端应使用的交换服务器的 IPv4 地址。

17 - 根路径

客户端应使用的根磁盘路径。

18 - 扩展路径

包含附加 DHCP 选项 (RFC2123) 的文件路径。

19 - IP 转发

客户端是否应启用 IP 转发(布尔值)。

20 - OptNonLocalSourceRouting

客户端是否应转发非本地数据报(布尔值)

21 - 策略过滤器

控制非本地源路由的 IPv4 地址和掩码对列表。

22 - 最大数据报重组大小

客户端应重组的最大数据报大小(16 位十进制值)。

23 - 默认 IP TTL

对传出 (IP) 数据报的默认生存时间(8 位十进制值)。

24 - 路径 MTU 老化超时

RFC1191 路径 MTU 发现超时值,以秒为单位(32 位十进制值)。

25 - 路径 MTU 高原表

RFC1191 路径 MTU 发现大小表,按升序排序(16 位十进制值列表)。

26 - 接口 MTU

接口的 MTU 大小(16 位十进制值)。

27 - 所有子网都是本地的

指示所有子网的 MTU 大小是否相同(布尔值)。

28 - 广播地址

客户端使用的广播地址 (RFC1122)(IPv4 地址)。

29 - 执行掩码发现

是否通过 ICMP 执行子网掩码发现(布尔值)。

30 - 掩码提供者

是否通过 ICMP 响应子网掩码请求(布尔值)。

31 - 执行路由器发现

是否执行路由器发现 (RFC1256)(布尔值)。

32 - 路由器请求地址

发送路由器请求的位置 (RFC1256)(IPv4 地址)。

33 - 静态路由

网络和路由器地址对列表。

34 - 尾部封装

是否协商使用 ARP 尾部 (RTF893)(布尔值)。

35 - ARP 缓存超时

ARP 缓存条目的超时时间(秒)(32 位十进制值)。

36 - 以太网封装

是使用 IEEE 802.3 (RTF1042) 还是 v2 (RFC894) 以太网封装(布尔值)。

37 - TCP 默认 TTL

TCP 发送的默认生存时间(非零 8 位十进制值)。

38 - TCP Keepalive 间隔

TCP keepalive 消息之间的接口(秒)(32 位十进制值)。

39 - TCP Keepalive 垃圾数据

TCP keepalive 消息中是否包含一个字节的垃圾数据以实现向后兼容(布尔值)。

40 - NIS 域

NIS (Sun 网络信息服务) 域名(字符串)。

41 - NIS 服务器

以空格分隔的 IPv4 NIS 服务器地址列表。

42 - NTP 服务器

以空格分隔的 IPv4 NTP (RFC1035) 服务器地址列表。

43 - 供应商特定信息

供应商特定信息。只能使用 --set-opt-hex 访问。

44 - NetBIOS 名称服务器

以空格分隔的 IPv4 NetBIOS 名称服务器 (NBNS) 地址列表 (RFC1001,RFC1002)。

45 - NetBIOS 数据报服务器

以空格分隔的 IPv4 NetBIOS 数据报分发服务器 (NBDD) 地址列表 (RFC1001,RFC1002)。

46 - NetBIOS 节点类型

NetBIOS 节点类型 (RFC1001,RFC1002):1=B 节点,2=P 节点,4=M 节点,8=H 节点(8 位十进制值)。

47 - NetBIOS 范围

NetBIOS 范围 (RFC1001,RFC1002)。只能使用 --set-opt-hex 访问。

48 - X Windows 字体服务器

以空格分隔的 IPv4 X Windows 字体服务器地址列表。

49 - X Windows 显示管理器

以空格分隔的 IPv4 X Windows 显示管理器地址列表。

62 - NetWare IP 域名

Netware IP 域名 (RFC2242)(字符串)。

63 - NetWare IP 信息

Netware IP 信息 (RFC2242)。只能使用 --set-opt-hex 访问。

64 - NIS+ 域

NIS+ 域名(字符串)。

65 - NIS+ 服务器

以空格分隔的 IPv4 NIS+ 服务器地址列表。

66 - TFTP 服务器名称

TFTP 服务器名称(字符串)。

67 - 引导文件名

引导文件名(字符串)。

68 - 移动 IP 家乡代理

以空格分隔的 IPv4 移动 IP 代理地址列表。

69 - SMTP 服务器

以空格分隔的 IPv4 简单邮件传输协议 (SMPT) 服务器地址列表。

70 - POP3 服务器

以空格分隔的 IPv4 邮局协议 3 (POP3) 服务器地址列表。

71 - NNTP 服务器

以空格分隔的 IPv4 网络新闻传输协议 (NTTP) 服务器地址列表。

72 - WWW 服务器

以空格分隔的默认 IPv4 万维网 (WWW) 服务器地址列表。

73 - Finger 服务器

以空格分隔的默认 IPv4 Finger 服务器地址列表。

74 - IRC 服务器

以空格分隔的默认 IPv4 互联网中继聊天 (IRC) 服务器地址列表。

75 - StreetTalk 服务器

以空格分隔的 IPv4 StreetTalk 服务器地址列表。

76 - STDA 服务器

以空格分隔的 IPv4 StreetTalk 目录辅助 (STDA) 服务器地址列表。

78 - SLP 目录代理

一个或多个服务位置协议 (SLP) 目录代理的地址,以及指示其使用是否强制的标志。只能通过 --set-opt-hex 访问。

79 - SLP 服务范围

服务位置协议 (SLP) 的服务范围列表,以及使用该列表是否强制。只能通过 --set-opt-hex 访问。

119 - 域搜索

域搜索列表,编码请参阅 RFC3397 和 RFC1035 中的第 4.1.4 节。只能使用 --set-opt-hex 访问。

8.51. VBoxManage usbdevsource

添加和移除 USB 设备源。

概要

VBoxManage usbdevsource add <source-name> <--backend=backend> <--address=address>

VBoxManage usbdevsource remove <source-name>

描述

VBoxManage usbdevsource 命令添加 USB 设备源,并使其可供宿主机上的来宾系统使用。您也可以使用此命令移除 USB 设备源。

添加 USB 设备源

VBoxManage usbdevsource add <source-name> <--backend=backend> <--address=address>

VBoxManage usbdevsource add 命令添加 USB 设备源,该设备源可供宿主机上的所有来宾系统使用。

源名称

指定 USB 设备源的唯一名称。

--address=address

指定 USB 后端的地址。

--backend=backend

指定要使用的 USB 代理服务后端。

目前只支持 USBIP,用于使用 USB/IP 协议指定远程服务器。

移除 USB 设备

VBoxManage usbdevsource remove <source-name>

VBoxManage usbdevsource remove 命令移除 USB 设备。

源名称

指定要移除的 USB 设备源的名称。

示例

以下命令添加一个名为 hostusb01 的 USB 设备服务器。

$ VBoxManage usbdevsource add hostusb01 --backend USBIP --address 10.0.1.16

8.52. VBoxManage extpack

扩展包管理。

概要

VBoxManage extpack install [--replace] [--accept-license=sha256] <tarball>

VBoxManage extpack uninstall [--force] <name>

VBoxManage extpack cleanup

描述

extpack install

VBoxManage extpack install [--replace] [--accept-license=sha256] <tarball>

在系统上安装新的扩展包。如果已安装相同扩展包的旧版本,此命令将失败。可以使用 --replace 选项在安装新包之前卸载任何旧包。

--replace

卸载现有扩展包版本。

--accept-license=sha256

接受具有给定 SHA-256 散列值的许可文本。

在手动安装时,VBoxManage 将显示 SHA-256 值。当然,可以通过查看扩展包内部并对许可文件使用 sha256sum 或类似工具来计算哈希值。

tarball

包含要安装的扩展包的文件。

extpack uninstall

VBoxManage extpack uninstall [--force] <name>

从系统卸载扩展包。即使系统上不存在指定的扩展包,此子命令也会成功。您可以使用 VBoxManage list extpacks 命令显示当前已安装的扩展包名称。

--force(强制)

覆盖大多数拒绝卸载扩展包的情况

名称

要卸载的扩展包的名称。

extpack cleanup

VBoxManage extpack cleanup

用于删除在之前安装或卸载命令失败时可能遗留的临时文件和目录。

示例

如何列出扩展包

$ VBoxManage list extpacks
Extension Packs: 1
Pack no. 0:   Oracle VM VirtualBox Extension Pack
Version:      4.1.12
Revision:     77218
Edition:
Description:  USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support.
VRDE Module:  VBoxVRDP
Usable:       true
Why unusable:

如何删除扩展包

$ VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Successfully uninstalled "Oracle VM VirtualBox Extension Pack".

8.53. VBoxManage updatecheck

检查 VirtualBox 是否有新版本可用。

概要

VBoxManage updatecheck perform [--machine-readable]

VBoxManage updatecheck list [--machine-readable]

VBoxManage updatecheck modify [ --disable | --enable ] [--channel=stable | withbetas | all] [--frequency=days]

描述

updatecheck 子命令用于检查 VirtualBox 是否有新版本可用。updatecheck 的两个子命令选项用于修改或查看与检查 VirtualBox 新版本相关的设置。

updatecheck perform

VBoxManage updatecheck perform [--machine-readable]

检查 VirtualBox 是否有新版本可用。

--machine-readable

机器可读输出。

updatecheck list

VBoxManage updatecheck list [--machine-readable]

显示用于指定何时检查 VirtualBox 新版本的当前设置。

--machine-readable

机器可读输出。

updatecheck modify

VBoxManage updatecheck modify [ --disable | --enable ] [--channel=stable | withbetas | all] [--frequency=days]

修改用于指定何时检查 VirtualBox 新版本的设置。

--enable

启用更新检查服务。

--disable

禁用更新检查服务。

--channel=stable | withbetas | all

首选发布类型,用于确定 VirtualBox 是否有新版本可用。默认值为 'stable'。

稳定版

检查 VirtualBox 的新稳定版本(同一主版本中的维护和次要版本)。

all

检查 VirtualBox 的新稳定版本(同一主版本中的维护和次要版本)和主要版本。

withbetas

检查 VirtualBox 的新稳定版本(同一主版本中的维护和次要版本)、主要版本和 Beta 版本。

--frequency=days

指定检查 VirtualBox 新版本的频率(天数)。

--proxy-mode=system | manual | none

指定要使用的代理模式。

--proxy-url=<address>

指定要使用的代理地址。设置为空字符串以清除代理地址。

8.54. VBoxManage modifynvram

列出并修改虚拟机的 NVRAM 内容。

概要

VBoxManage modifynvram <uuid|vmname> inituefivarstore

VBoxManage modifynvram <uuid|vmname> enrollmssignatures

VBoxManage modifynvram <uuid|vmname> enrollorclpk

VBoxManage modifynvram <uuid|vmname> enrollpk [--platform-key=filename] [--owner-uuid=uuid]

VBoxManage modifynvram <uuid|vmname> enrollmok [--mok=filename] [--owner-uuid=uuid]

VBoxManage modifynvram <uuid|vmname> listvars

VBoxManage modifynvram <uuid|vmname> queryvar [--name=name] [--filename=filename]

VBoxManage modifynvram <uuid|vmname> deletevar [--name=name] [--owner-uuid=uuid]

VBoxManage modifynvram <uuid|vmname> changevar [--name=name] [--filename=filename]

描述

"modifynvram" 命令适用于想要检查和修改虚拟机 UEFI 变量存储的专家。此处的任何错误都可能导致虚拟机进入非工作状态。

常用选项

modifynvram 的所有子命令都作用于正在运行的虚拟机

uuid|vmname

虚拟机的 UUID 或名称(区分大小写)。

modifynvram inituefivarstore

VBoxManage modifynvram <uuid|vmname> inituefivarstore

将 UEFI 变量存储初始化为默认状态。任何先前存在的变量存储都将被删除。请务必谨慎使用!

modifynvram enrollmssignatures

VBoxManage modifynvram <uuid|vmname> enrollmssignatures

注册 UEFI 安全启动所需的默认 Microsoft KEK 和 DB 签名。

modifynvram enrollorclpk

VBoxManage modifynvram <uuid|vmname> enrollorclpk

注册 Oracle 提供的 UEFI 安全启动所需的默认平台密钥。

modifynvram enrollpk

VBoxManage modifynvram <uuid|vmname> enrollpk [--platform-key=filename] [--owner-uuid=uuid]

注册用户提供的 UEFI 安全启动所需的自定义平台密钥。以下命令使用 openssl 生成新的平台密钥:

$ openssl req -new -x509 -newkey rsa:2048 -keyout PK.key -out PK.crt
$ openssl x509 -in PK.crt -out PK.cer -outform DER
--platform-key=filename

作为 DER 编码的 X.509 签名提供的平台密钥。

--owner-uuid=uuid

标识平台密钥所有者的 UUID。

modifynvram listvars

VBoxManage modifynvram <uuid|vmname> listvars

列出虚拟机存储中的所有 UEFI 变量及其拥有者 UUID。

modifynvram queryvar

VBoxManage modifynvram <uuid|vmname> queryvar [--name=name] [--filename=filename]

查询由其名称标识的给定 UEFI 变量的内容。

--name=name

要查询的 UEFI 变量名称。

--filename=文件名

成功后变量内容的存储位置。这是可选的,如果省略,内容将作为十六进制转储输出到终端。

modifynvram deletevar

VBoxManage modifynvram <uuid|vmname> deletevar [--name=name] [--owner-uuid=uuid]

删除由其名称和所有者 UUID 标识的给定变量。

--name=name

要删除的 UEFI 变量名称。

--owner-uuid=uuid

标识要删除的变量所有者的 UUID。

modifynvram changevar

VBoxManage modifynvram <uuid|vmname> changevar [--name=name] [--filename=filename]

将 UEFI 变量内容更改为给定文件中的内容。

--name=name

要更改其数据的 UEFI 变量名称。

--filename=文件名

要从中读取数据的文件。

8.55. vboximg-mount

FUSE 挂载适用于 macOS 和 Linux 宿主机的虚拟磁盘镜像。

概要

vboximg-mount < -? | -h | --help >

vboximg-mount <--image=image-UUID> [--guest-filesystem] [-o=FUSE-option[,FUSE-option]] [--root] [--rw] <mountpoint>

vboximg-mount <--list> [--image=image-UUID] [--guest-filesystem] [--verbose] [--vm=vm-UUID] [--wide]

描述

vboximg-mount 命令使您能够让 Oracle VM VirtualBox 磁盘镜像在 macOS 或 Linux 宿主机操作系统 (OS) 上可供特权或非特权访问。您可以从其可用的快照历史记录中挂载磁盘的任何版本。使用此命令可以挂载、查看并可选地修改 Oracle VM VirtualBox 虚拟磁盘镜像的内容,您还可以使用此命令查看有关已注册虚拟机 (VM) 的信息。

此命令使用用户空间文件系统 (FUSE) 技术,提供对 Oracle VM VirtualBox 虚拟磁盘镜像的原始访问。

当您使用 --image 选项指定基础镜像标识符时,只会挂载基础镜像。任何相关快照都将被忽略。另外,如果您使用 --image 选项指定快照,FUSE 挂载的虚拟磁盘状态将从隐含的快照链中合成,包括基础镜像。

vboximg-mount 命令包括对 VM 磁盘镜像内部文件系统的实验性只读访问。此功能使您无需启动 VM 即可从 VM 磁盘镜像中提取某些文件,并且无需在宿主机上安装第三方文件系统驱动程序。Oracle VM VirtualBox 支持 FAT、NTFS、ext2ext3ext4 文件系统。

虚拟磁盘作为设备节点暴露在基于 FUSE 的文件系统中,该文件系统覆盖指定的挂载点。

FUSE 文件系统包含一个包含多个文件的目录。该文件系统还可以包含一个目录,其中包含一个具有与虚拟磁盘基础镜像相同基本名称的符号链接(参见 basename(1) 手册页),并指向虚拟磁盘基础镜像的位置。该目录可以是以下类型:

  • vhdd 提供对原始磁盘镜像数据的访问,作为扁平镜像

  • volID 提供对指定磁盘镜像上单个卷的访问

  • fsID 提供对受支持文件系统的访问,无需宿主机文件系统驱动程序

一般命令选项

vboximg-mount < -? | -h | --help >

使用以下选项获取关于 vboximg-mount 命令及其选项的信息。

--help, --h, 或--?

显示使用信息。

挂载 Oracle VM VirtualBox 磁盘镜像

vboximg-mount <--image=image-UUID> [--guest-filesystem] [-o=FUSE-option[,FUSE-option]] [--root] [--rw] <mountpoint>

使用 vboximg-mount 命令在 macOS 或 Linux 宿主机系统上挂载 Oracle VM VirtualBox 虚拟磁盘镜像。挂载后,您可以查看磁盘镜像的内容或修改磁盘镜像的内容。

您可以使用 vboximg-mount 命令,将基于 FUSE 的访问限制到虚拟磁盘的子部分。

--image=disk-image

指定 Oracle VM VirtualBox 磁盘镜像的全局唯一标识符 (UUID)、名称或路径。

--image 选项的缩写形式是 -i

--guest-filesystem

启用对来宾文件系统的实验性只读支持。当您指定此选项时,所有已知文件系统都可供访问。

--guest-filesystem 选项的缩写形式是 -g

-o=FUSE-option[,FUSE-option...]

指定 FUSE 挂载选项。

vboximg-mount 命令允许您使用 mount.fuse(8) 手册页中描述的 FUSE 挂载选项。

--root

覆盖限制文件访问文件系统所有者的安全措施,同时授予 root 用户文件访问权限。

-o allow_root 选项相同。请参阅 -o 选项的描述。

此选项与 -o allow_other 选项不兼容。

--rw

将指定镜像挂载为读写模式,如果要修改其内容,则需要此模式。默认情况下,镜像以只读模式挂载。

挂载点

指定用于挂载 Oracle VM VirtualBox 磁盘镜像的目录路径名。

查看 Oracle VM VirtualBox 磁盘镜像信息

vboximg-mount <--list> [--image=image-UUID] [--guest-filesystem] [--verbose] [--vm=vm-UUID] [--wide]

使用 vboximg-mount 命令查看有关已注册 VM 或 Oracle VM VirtualBox 虚拟磁盘镜像的信息。

--image=disk-image

指定 Oracle VM VirtualBox 磁盘镜像的 UUID、名称或路径。

--image 选项的缩写形式是 -i

--guest-filesystem

启用对来宾文件系统的实验性只读支持。当您指定此选项时,所有已知文件系统都可供访问。

--guest-filesystem 选项的缩写形式是 -g

--list

显示与已注册 VM 相关联的磁盘信息。如果您指定磁盘镜像,此选项将显示指定镜像的分区信息。

当您指定 --verbose 选项时,输出将包含有关 VM 和媒体的详细信息,包括快照镜像和文件路径。

--list 选项的缩写形式是 -l

--verbose

显示或记录详细信息。

--verbose 选项的缩写形式是 -v

--vm=vm-UUID

输出有关与指定 UUID 关联的 VM 的信息。

--wide

以宽格式输出信息。此输出包括正在运行的 VM 的锁定状态信息。对于未运行的 VM,状态为 created

宽格式输出在 VM 列中使用树状结构,以显示 VM 基础镜像与其快照之间的关系。

示例

以下示例展示了如何在宿主机操作系统 (OS) 上挂载虚拟磁盘镜像。

$ mkdir fuse_mount_point
$ vboximg-mount --image=b490e578-08be-4f7d-98e9-4c0ef0952377 fuse_mount_point
$ ls fuse_mount_point
ubu.vdi[32256:2053029880]   vhdd
$ sudo mount fuse_mount_point/vhdd /mnt

mkdir 命令在宿主机 OS 上创建一个名为 fuse_mount_point 的挂载点。然后使用 vboximg-mount 命令将指定的磁盘镜像挂载到 fuse_mount_point 挂载点。该挂载包括磁盘镜像的所有快照。

ls 命令显示 fuse_mount_point 的内容。然后使用 mount 命令将 FUSE 挂载的设备节点 vhdd 挂载到 /mnt 挂载点。vhdd 设备节点代表虚拟磁盘镜像。

以下示例展示了当 b490e578-08be-4f7d-98e9-4c0ef0952377 磁盘镜像挂载到 fuse_mount_point 挂载点时,如何使其已知文件系统可访问

$ vboximg-mount --image=b490e578-08be-4f7d-98e9-4c0ef0952377 \
--guest-filesystem fuse_mount_point

以下命令输出关于所有已注册 VM 及其快照的详细信息

$ vboximg-mount --list --verbose

以下命令显示宽格式列表输出的摘录。

$ vboximg-mount --list --wide

VM  Image                 Size Type State   UUID (hierarchy)
------------------------------------------  ------------------------------------
Proxy                                       0833f5bc-6304-42e1-b799-cdc81c576c60
 |
 +- Proxy.vdi             4.8G VDI  rlock   d5f84afb-0794-4952-ab71-6bbcbee07737
 |  +- <snapshot>        12.3G VDI  rlock     dffc67aa-3023-477f-8033-b27e3daf4f54
 |  +- <snapshot>         8.8G VDI  rlock       3b2755bd-5f2a-4171-98fe-647d510b6274
 |  +- <snapshot>        14.6G VDI  rlock         e2ccdb5f-49e8-4123-8623-c61f363cc5cf
 |  +- <snapshot>         7.4G VDI  wlock           3c1e6794-9091-4be3-9e80-11aba40c2649

------------------------------------------  ------------------------------------
Oracle Linux 7                              5365ab5f-470d-44c0-9863-dad532ee5905
 |
 +- Oracle Linux 7.vdi     7.0G VDI created 96d2e92e-0d4e-46ab-a0f1-008fdbf997e7
 | +- <snapshot>          15.9G VDI created   f9cc866a-9166-42e9-a503-bbfe9b7312e8
 |
 +- kernel.vdi            11.1G VDI created 79a370bd-0c4f-480a-30bb-10cdea68423f

输出显示 Proxy VM 正在运行 Proxy.vdi 虚拟磁盘镜像的第四个快照。运行状态由 State 列中的 wlock 值指示。

Oracle Linux 7 VM 未运行。它有两个镜像:Oracle Linux 7.vdikernel.vdiOracle Linux 7.vdi 镜像有一个快照。

以下命令显示关于具有指定 UUID 的 VM 的信息

$ vboximg-mount --list --vm=b1d5563b-2a5b-4013-89f1-26c81d6bbfa0
-----------------------------------------------------------------
VM:   ubu
UUID: b1d5563b-2a5b-4013-89f1-26c81d6bbfa0

  Image:   ubu.vdi
  UUID:    b490e578-08be-4f7d-98e9-4c0ef0952377

       Snapshot: 35afe1e0-0a51-44f3-a228-caf172f3306f
       Size:     12.1G

       Snapshot: 874279c1-4425-4282-ada8-a9c07c00bbf9
       Size:     13.6G

  Image:   kernel.vdi
  UUID:    79a370bd-6eb7-4dbf-8bc6-d29118f127e0