Mike Slinn

VirtualBox

Published 2024-06-11. Last modified 2024-09-21.
Time to read: 6 minutes.

This page is part of the posts collection, categorized under Ableton, Ubuntu.

This article describes how I set up Ubuntu Desktop 24.04 in a VirtualBox VM.

Mini-Series

This article can be read standalone; however, is part of a mini-series that discusses how to increase the storage capacity and performance of the Ableton Push 3 Standalone (P3S). If you own a P3S, or are thinking of purchasing one, you might want to first read my review.

The articles in this mini-series are:

  1. Ableton Push 3 NVMe Replacement
  2. Thermal Control
  3. VirtualBox
  4. Clonezilla
  5. Supersizing a Partition and Its File System

VirtualBox

VirtualBox allows you to run another operating system within your computer’s operating system. VirtualBox is available for Windows, Macintosh, Linux and other OSes. It can virtualize Windows, Linux, macOS, Solaris, and the BSD UNIX work-alikes.

I often use an Ubuntu Desktop instance in a VirtualBox VM. It is my default Ubuntu instance for general-purpose work.

Terminology

Host
This is the OS of the physical computer on which Oracle VM VirtualBox was installed.
Guest
This is the OS of the physical computer on which Oracle VM VirtualBox was installed.
Virtual machine (VM)
This is the special environment that VirtualBox creates for your guest OS while it is running. In other words, you run your guest OS in a VM.

Installation

I installed VirtualBox and the VirtualBox Extension Pack according to these in­struc­tions.

I then installed Ubuntu Desktop 24.04 as a guest in a new VirtualBox VM. The steps are:

  1. Download the Ubuntu Desktop 24.04 ISO file.
  2. Open VirtualBox and click on the New button to create a new virtual machine.
  3. Name your virtual machine and select Linux as the type and Ubuntu (64-bit) as the version.
  4. Allocate at least 2 GB of RAM to the virtual machine; 4 GB is better.
  5. Choose Create a virtual hard disk now and click Create.
  6. Select VDI (VirtualBox Disk Image) as the hard disk file type.
  7. Choose Dynamically allocated for the storage type.
  8. Allocate at least 20 GB of storage space for the virtual machine.
  9. Click on the Start button to launch the virtual machine .
  10. In the Select start - up disk window , click on the folder icon and browse for the Ubuntu 24.04 ISO file you downloaded.
  11. Click Start to begin the installation process.
  12. Follow the on - screen instructions to complete the installation.

VirtualBox Guest Additions

A third item needs to be installed in the guest OS, the VirtualBox Guest Additions. It is included in the VirtualBox download and provides:

  • Seamless mouse support
  • Shared folders
  • Better video support
  • Seamless windows
  • Generic host/guest communication channels
  • Time synchronization
  • Shared clipboard
  • Automated logins

For Windows, the VirtualBox Guest Additions are installed at %ProgramFiles%\Oracle\VirtualBox\VBoxGuest­Additions.iso. From a Linux guest, this file appears at /mnt/c/Program Files/Oracle/VirtualBox/VBoxGuestAdditions.iso.

For Mac OS X hosts, this file is provided in the VirtualBox application bundle.

I found that after upgrading VirtualBox, for every VM, I had to select Devices / Upgrade Guest Additions... before the Guest Additions would work properly.

Installation

Before installing the VirtualBox Guest Additions in a guest Linux instance, you should install gcc, make and perl. Launch the virtual machine containing the guest Ubuntu image and enter the following at a shell prompt:

Shell
$ sudo apt install build-essential gcc make perl dkms

Now reboot the guest Ubuntu instance.

Each time a VirtualBox Ubuntu instance boots, the VirtualBox Guest Additions CD-ROM image should automount at a path similar to /media/$USER/VBox_GAs_7.x.yy/. For the version that was current when this page was last updated, the full path was /media/$USER/VBox_GAs_7.0.20/.

Shell
$ ls /media/$USER/VBox_GAs_*
AUTORUN.INF  runasroot.sh                       VBoxSolarisAdditions.pkg
autorun.sh   TRANS.TBL                          VBoxWindowsAdditions-amd64.exe
cert         VBoxDarwinAdditions.pkg            VBoxWindowsAdditions.exe
NT3x         VBoxDarwinAdditionsUninstall.tool  VBoxWindowsAdditions-x86.exe
OS2          VBoxLinuxAdditions.run             windows11-bypass.reg 

To install the VirtualBox Guest Additions in the guest Ubuntu instance, run VBoxLinuxAdditions.run, and then reboot, as follows:

Shell
$ sudo /media/$USER/VBox_GAs_7.0.18/VBoxLinuxAdditions.run
Verifying archive integrity...  100%   MD5 checksums are OK. All good.
Uncompressing VirtualBox 7.0.18 Guest Additions for Linux  100%
VirtualBox Guest Additions installer
Removing installed version 7.0.18 of VirtualBox Guest Additions...
update-initramfs: Generating /boot/initrd.img-6.8.0-35-generic
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Setting up modules
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel
modules.  This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup 
VirtualBox Guest Additions: or
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Building the modules for kernel 6.8.0-35-generic.
update-initramfs: Generating /boot/initrd.img-6.8.0-35-generic 

Add your userid to the vboxsf group by typing:

Shell
$ sudo usermod -G vboxsf -a myusername

Logout and login again, or reboot the machine, to complete the process.

Shell
$ sudo reboot

Additional Information

Guest Additions are designed to be installed inside a virtual machine after the guest operating system has been installed. They consist of device drivers and system applications that optimize the guest operating system for better performance and usability.

Wikibooks provides additional detail:

Here we install the Guest Additions.

  • Go to the host operating system. At the top of the VM window, choose Devices >> "Insert Guest Additions CD image...". Then, VirtualBox simulates inserting a CD into the simulated optical drive of the VM.
  • If you need to eject this, you can either restart the VM or click on Devices >> optical drives >> eject.

If you didn’t add a Windows shared folder into the "configuration" menu of the VirtualBox graphical interface, you can do it in Command Prompt with a command similar to:

Windows Command Prompt or PowerShell
VBoxManage sharedfolder add "VMName" --name "SharedName" --hostpath "C:\Users\Public\Documents\SharedFolderPath"

Linux Guest

The Guest Additions CD should be read from the guest OS like this:

Shell
$ sudo mkdir /media/cdrom
$ sudo mount /dev/cdrom /media/cdrom mount: /media/cdrom: WARNING: source write-protected, mounted read-only.
$ cd /media/cdrom
$ sudo ./VBoxLinuxAdditions.run Verifying archive integrity... 100% MD5 checksums are OK. All good. Uncompressing VirtualBox 7.0.20 Guest Additions for Linux 100% VirtualBox Guest Additions installer Removing installed version 7.0.20 of VirtualBox Guest Additions... update-initramfs: Generating /boot/initrd.img-6.8.0-41-generic Copying additional installer modules ... Installing additional modules ... VirtualBox Guest Additions: Starting. VirtualBox Guest Additions: Setting up modules VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules. This may take a while. VirtualBox Guest Additions: To build modules for other installed kernels, run VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup VirtualBox Guest Additions: or VirtualBox Guest Additions: /sbin/rcvboxadd quicksetup all VirtualBox Guest Additions: Building the modules for kernel 6.8.0-41-generic. update-initramfs: Generating /boot/initrd.img-6.8.0-41-generic

The Wikibooks documentation above continues on with the steps to manually share host directories the the guest OS. I prefer to use the Devices / Shared Folders / Shared Folders Settings... menu, also accessible from the status bar. Add the path to the shared directory and enable the Auto-mount and Make permanent options.

I mapped all the Windows host drives to mount points that I created under /mnt:

If you prefer to type rather than to use a GUI, here are the remaining instructions from the previous quote. Note that the mount type is vboxsf.

Then, just mount the Windows folder from Linux:

Shell
$ mkdir /mnt/vboxshare
$ sudo mount -t vboxsf SharedName /mnt/vboxshare

That's it, you can browse your Windows files:

Shell
$ ls ~/vboxshare

Another options is to specify ownership and automatically mount the shared drives in the VirtualBox client Ubuntu VM. To do that, add the following to /etc/rc.local before the exit 0 line as follows:

/etc/rc.local fragment
mount -t vboxsf -o uid=1000,gid=1000 vbox_folder /home/my_user_id/directory/path

VBoxManage

VBoxManage is a host command-line program that manages VirtualBox guests. You can view the help message on a Windows host from the command line or PowerShell like this:

Windows Cmd or PowerShell
C:\Users\Mike Slinn> "%ProgramFiles%\Oracle\VirtualBox\VBoxManage"
Oracle VM VirtualBox Command Line Management Interface Version 7.0.20
Copyright (C) 2005-2024 Oracle and/or its affiliates
Usage - Oracle VM VirtualBox command-line interface:
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] eax ebx ecx edx] [--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 snapshot <uuid|vmname>
VBoxManage snapshot <uuid|vmname> take <snapshot-name> [--description=description] [--live] [--uniquename Number,Timestamp,Space,Force]
VBoxManage snapshot <uuid|vmname> delete <snapshot-name>
VBoxManage snapshot <uuid|vmname> restore <snapshot-name>
VBoxManage snapshot <uuid|vmname> restorecurrent
VBoxManage snapshot <uuid|vmname> edit <snapshot-name | --current> [--description=description] [--name=new-name]
VBoxManage snapshot <uuid|vmname> list [--details | --machinereadable]
VBoxManage snapshot <uuid|vmname> showvminfo <snapshot-name>

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 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 | vmname> screenshotpng <filename> [display]
VBoxManage controlvm <uuid | vmname> recording <on | off>
VBoxManage controlvm <uuid | vmname> recording screens <all | none | screen-ID[,screen-ID...]>
VBoxManage controlvm <uuid | vmname> recording filename <filename>
VBoxManage controlvm <uuid | vmname> recording videores <widthxheight>
VBoxManage controlvm <uuid | vmname> recording videorate <rate>
VBoxManage controlvm <uuid | vmname> recording videofps <fps>
VBoxManage controlvm <uuid | vmname> recording maxtime <sec>
VBoxManage controlvm <uuid | vmname> recording maxfilesize <MB>
VBoxManage controlvm <uuid | vmname> setcredentials <username> --passwordfile= <filename | password> <domain-name> --allowlocallogon= <yes | no>
VBoxManage controlvm <uuid | vmname> teleport <--host=host-name> <--port=port-name> [--maxdowntime=msec] [--passwordfile=filename | --password=password]
VBoxManage controlvm <uuid | vmname> plugcpu <ID>
VBoxManage controlvm <uuid | vmname> unplugcpu <ID>
VBoxManage controlvm <uuid | vmname> cpuexecutioncap <num>
VBoxManage controlvm <uuid | vmname> vm-process-priority <default | flat | low | normal | high>
VBoxManage controlvm <uuid | vmname> webcam attach [pathname [settings] ]
VBoxManage controlvm <uuid | vmname> webcam detach [pathname]
VBoxManage controlvm <uuid | vmname> webcam list
VBoxManage controlvm <uuid | vmname> addencpassword <ID> <password-file | -> [--removeonsuspend= yes | no ]
VBoxManage controlvm <uuid | vmname> removeencpassword <ID>
VBoxManage controlvm <uuid | vmname> removeallencpasswords
VBoxManage controlvm <uuid | vmname> changeuartmodeN disconnected | server pipe-name | client pipe-name | tcpserver port | tcpclient hostname:port | file filename | device-name
VBoxManage controlvm <uuid | vmname> autostart-enabledN on | off
VBoxManage controlvm <uuid | vmname> autostart-delayseconds

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 mediumio <--disk=uuid|filename | --dvd=uuid|filename | --floppy=uuid|filename> [--password-file=-|filename] formatfat [--quick]
VBoxManage mediumio <--disk=uuid|filename | --dvd=uuid|filename | --floppy=uuid|filename> [--password-file=-|filename] cat [--hex] [--offset=byte-offset] [--size=bytes] [--output=-|filename]
VBoxManage mediumio <--disk=uuid|filename | --dvd=uuid|filename | --floppy=uuid|filename> [--password-file=-|filename] stream [--format=image-format] [--variant=image-variant] [--output=-|filename]

VBoxManage sharedfolder add <uuid | vmname> <--name=name> <--hostpath=hostpath> [--readonly] [--transient] [--automount] [--auto-mount-point=path]
VBoxManage sharedfolder remove <uuid | vmname> <--name=name> [--transient]

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 debugvm <uuid|vmname> dumpvmcore [--filename=name]
VBoxManage debugvm <uuid|vmname> info <item> [args...]
VBoxManage debugvm <uuid|vmname> injectnmi
VBoxManage debugvm <uuid|vmname> log [--release | --debug] [group-settings...]
VBoxManage debugvm <uuid|vmname> logdest [--release | --debug] [destinations...]
VBoxManage debugvm <uuid|vmname> logflags [--release | --debug] [flags...]
VBoxManage debugvm <uuid|vmname> osdetect
VBoxManage debugvm <uuid|vmname> osinfo
VBoxManage debugvm <uuid|vmname> osdmesg [--lines=lines]
VBoxManage debugvm <uuid|vmname> getregisters [--cpu=id] [reg-set.reg-name...]
VBoxManage debugvm <uuid|vmname> setregisters [--cpu=id] [reg-set.reg-name=value...]
VBoxManage debugvm <uuid|vmname> show [--human-readable | --sh-export | --sh-eval | --cmd-set] [settings-item...]
VBoxManage debugvm <uuid|vmname> stack [--cpu=id]
VBoxManage debugvm <uuid|vmname> statistics [--reset] [--descriptions] [--pattern=pattern]
VBoxManage debugvm <uuid|vmname> guestsample [--filename=filename] [--sample-interval-us=interval] [--sample-time-us=time]

VBoxManage extpack install [--replace] [--accept-license=sha256] <tarball>
VBoxManage extpack uninstall [--force] <name>
VBoxManage extpack cleanup

VBoxManage unattended detect <--iso=install-iso> [--machine-readable]
VBoxManage unattended install <uuid|vmname> <--iso=install-iso> [--user=login] [--password=password] [--password-file=file] [--full-user-name=name] [--key=product-key] [--install-additions] [--no-install-additions] [--additions-iso=add-iso] [--install-txs] [--no-install-txs] [--validation-kit-iso=testing-iso] [--locale=ll_CC] [--country=CC] [--time-zone=tz] [--hostname=fqdn] [--package-selection-adjustment=keyword] [--dry-run] [--auxiliary-base-path=path] [--image-index=number] [--script-template=file] [--post-install-template=file] [--post-install-command=command] [--extra-install-kernel-parameters=params] [--language=lang] [--start-vm=session-type]

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 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 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 hostonlynet add <--name=netname> [--id=netid] <--netmask=mask> <--lower-ip=address> <--upper-ip=address> [--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 updatecheck perform [--machine-readable]
VBoxManage updatecheck list [--machine-readable]
VBoxManage updatecheck modify [--disable | --enable] [--channel=stable | withbetas | all] [--frequency=days]

VBoxManage discardstate <uuid | vmname>

VBoxManage adoptstate <uuid | vmname> <state-filename>

VBoxManage closemedium [disk | dvd | floppy] <uuid | filename> [--delete]

VBoxManage storageattach <uuid | vmname> <--storagectl=name> [--bandwidthgroup= name | none ] [--comment=text] [--device=number] [--discard= on | off ] [--encodedlun=lun] [--forceunmount] [--hotpluggable= on | off ] [--initiator=initiator] [--intnet] [--lun=lun] [--medium= none | emptydrive | additions | uuid | filename | host:drive | iscsi ] [--mtype= normal | writethrough | immutable | shareable | readonly | multiattach ] [--nonrotational= on | off ] [--passthrough= on | off ] [--passwordfile=file] [--password=password] [--port=number] [--server= name | ip ] [--setparentuuid=uuid] [--setuuid=uuid] [--target=target] [--tempeject= on | off ] [--tport=port] [--type= dvddrive | fdd | hdd ] [--username=username]

VBoxManage storagectl <uuid | vmname> <--name=controller-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=count] [--remove] [--rename=new-controller-name]

VBoxManage bandwidthctl <uuid | vmname> add <bandwidth-group-name> <--limit=bandwidth-limit[k|m|g|K|M|G]> <--type=disk|network>
VBoxManage bandwidthctl <uuid | vmname> list [--machinereadable]
VBoxManage bandwidthctl <uuid | vmname> remove <bandwidth-group-name>
VBoxManage bandwidthctl <uuid | vmname> set <bandwidth-group-name> <--limit=bandwidth-limit[k|m|g|K|M|G]>

VBoxManage showmediuminfo [disk | dvd | floppy] <uuid | filename>

VBoxManage createmedium [disk | dvd | floppy] <--filename=filename> [--size=megabytes | --sizebyte=bytes] [--diffparent= UUID | filename ] [--format= VDI | VMDK | VHD ] [--variant Standard,Fixed,Split2G,Stream,ESX,Formatted,RawDisk] --property name=value... --property-file name=/path/to/file/with/value...

VBoxManage modifymedium [disk | dvd | floppy] <uuid | filename> [--autoreset=on | off] [--compact] [--description=description] [--move=pathname] [--property=name=[value]] [--resize=megabytes | --resizebyte=bytes] [--setlocation=pathname] [--type=normal | writethrough | immutable | shareable | readonly | multiattach]

VBoxManage clonemedium <uuid | source-medium> <uuid | target-medium> [disk | dvd | floppy] [--existing] [--format= VDI | VMDK | VHD | RAW | other ] [--variant=Standard,Fixed,Split2G,Stream,ESX]

VBoxManage mediumproperty [disk | dvd | floppy] set <uuid | filename> <property-name> <property-value>
VBoxManage mediumproperty [disk | dvd | floppy] get <uuid | filename> <property-name>
VBoxManage mediumproperty [disk | dvd | floppy] delete <uuid | filename> <property-name>

VBoxManage encryptmedium <uuid | filename> [--cipher=cipher-ID] [--newpassword=password] [--newpasswordid=password-ID] [--oldpassword=password]

VBoxManage checkmediumpwd <uuid | filename> <password-file>

VBoxManage convertfromraw <inputfile> <outputfile> [--format= VDI | VMDK | VHD ] [--uuid=uuid] [--variant=Standard,Fixed,Split2G,Stream,ESX]
VBoxManage convertfromraw stdin <outputfile> <bytes> [--format= VDI | VMDK | VHD ] [--uuid=uuid] [--variant=Standard,Fixed,Split2G,Stream,ESX]

VBoxManage setextradata <global | uuid | vmname> <keyword> [value]

VBoxManage getextradata <global | uuid | vmname> keyword | enumerate

VBoxManage setproperty <property-name> <property-value>

VBoxManage usbfilter add <index,0-N> <--target= <uuid | vmname | global> > <--name=string> <--action=ignore | hold> [--active=yes | no] [--vendorid=XXXX] [--productid=XXXX] [--revision=IIFF] [--manufacturer=string] [--product=string] [--port=hex] [--remote=yes | no] [--serialnumber=string] [--maskedinterfaces=XXXXXXXX]
VBoxManage usbfilter modify <index,0-N> <--target= <uuid | vmname | global> > [--name=string] [--action=ignore | hold] [--active=yes | no] [--vendorid=XXXX | ""] [--productid=XXXX | ""] [--revision=IIFF | ""] [--manufacturer=string | ""] [--product=string | ""] [--port=hex] [--remote=yes | no] [--serialnumber=string | ""] [--maskedinterfaces=XXXXXXXX]
VBoxManage usbfilter remove <index,0-N> <--target= <uuid | vmname | global> >

VBoxManage guestproperty get <uuid | vmname> <property-name> [--verbose]
VBoxManage guestproperty enumerate <uuid | vmname> [--no-timestamp] [--no-flags] [--relative] [--old-format] [patterns...]
VBoxManage guestproperty set <uuid | vmname> <property-name> [property-value [--flags=flags] ]
VBoxManage guestproperty unset <uuid | vmname> <property-name>
VBoxManage guestproperty wait <uuid | vmname> <patterns> [--timeout=msec] [--fail-on-timeout]

VBoxManage guestcontrol <uuid | vmname> run [--arg0=argument 0] [--domain=domainname] [--dos2unix] [--exe=filename] [--ignore-orphaned-processes] [--no-wait-stderr | --wait-stderr] [--no-wait-stdout | --wait-stdout] [--passwordfile=password-file | --password=password] [--profile] [--putenv=var-name=[value]] [--quiet] [--timeout=msec] [--unix2dos] [--unquoted-args] [--username=username] [--verbose] <-- [argument...] >
VBoxManage guestcontrol <uuid | vmname> start [--arg0=argument 0] [--domain=domainname] [--exe=filename] [--ignore-orphaned-processes] [--passwordfile=password-file | --password=password] [--profile] [--putenv=var-name=[value]] [--quiet] [--timeout=msec] [--unquoted-args] [--username=username] [--verbose] <-- [argument...] >
VBoxManage guestcontrol <uuid | vmname> copyfrom [--dereference] [--domain=domainname] [--passwordfile=password-file | --password=password] [--quiet] [--no-replace] [--recursive] [--target-directory=host-destination-dir] [--update] [--username=username] [--verbose] <guest-source0> guest-source1 [...] <host-destination>
VBoxManage guestcontrol <uuid | vmname> copyto [--dereference] [--domain=domainname] [--passwordfile=password-file | --password=password] [--quiet] [--no-replace] [--recursive] [--target-directory=guest-destination-dir] [--update] [--username=username] [--verbose] <host-source0> host-source1 [...]
VBoxManage guestcontrol <uuid | vmname> mkdir [--domain=domainname] [--mode=mode] [--parents] [--passwordfile=password-file | --password=password] [--quiet] [--username=username] [--verbose] <guest-directory...>
VBoxManage guestcontrol <uuid | vmname> rmdir [--domain=domainname] [--passwordfile=password-file | --password=password] [--quiet] [--recursive] [--username=username] [--verbose] <guest-directory...>
VBoxManage guestcontrol <uuid | vmname> rm [--domain=domainname] [--force] [--passwordfile=password-file | --password=password] [--quiet] [--username=username] [--verbose] <guest-directory...>
VBoxManage guestcontrol <uuid | vmname> mv [--domain=domainname] [--passwordfile=password-file | --password=password] [--quiet] [--username=username] [--verbose] <source...> <destination-directory>
VBoxManage guestcontrol <uuid | vmname> mktemp [--directory] [--domain=domainname] [--mode=mode] [--passwordfile=password-file | --password=password] [--quiet] [--secure] [--tmpdir=directory-name] [--username=username] [--verbose] <template-name>
VBoxManage guestcontrol <uuid | vmname> stat [--domain=domainname] [--passwordfile=password-file | --password=password] [--quiet] [--username=username] [--verbose] <filename>
VBoxManage guestcontrol <uuid | vmname> list <all | files | processes | sessions> [--quiet] [--verbose]
VBoxManage guestcontrol <uuid | vmname> closeprocess [--session-id=ID | --session-name=name-or-pattern] [--quiet] [--verbose] <PID...>
VBoxManage guestcontrol <uuid | vmname> closesession [--all | --session-id=ID | --session-name=name-or-pattern] [--quiet] [--verbose]
VBoxManage guestcontrol <uuid | vmname> updatega [--quiet] [--verbose] [--source=guest-additions.ISO] [--wait-start] [-- [argument...] ]
VBoxManage guestcontrol <uuid | vmname> watch [--quiet] [--verbose]

VBoxManage metrics collect [--detach] [--list] [--period=seconds] [--samples=count] [* | host | vmname metric-list]
VBoxManage metrics disable [--list] [* | host | vmname metric-list]
VBoxManage metrics enable [--list] [* | host | vmname metric-list]
VBoxManage metrics list [* | host | vmname metric-list]
VBoxManage metrics query [* | host | vmname metric-list]
VBoxManage metrics setup [--list] [--period seconds] [--samples count] [* | host | vmname metric-list]

VBoxManage natnetwork add [--disable | --enable] <--netname=name> <--network=network> [--dhcp=on|off] [--ipv6=on|off] [--loopback-4=rule] [--loopback-6=rule] [--port-forward-4=rule] [--port-forward-6=rule]
VBoxManage natnetwork list [filter-pattern]
VBoxManage natnetwork modify [--dhcp=on|off] [--disable | --enable] <--netname=name> <--network=network> [--ipv6=on|off] [--loopback-4=rule] [--loopback-6=rule] [--port-forward-4=rule] [--port-forward-6=rule]
VBoxManage natnetwork remove <--netname=name>
VBoxManage natnetwork start <--netname=name>
VBoxManage natnetwork stop <--netname=name>

VBoxManage hostonlyif ipconfig <ifname> [--dhcp | --ip=IPv4-address --netmask=IPv4-netmask | --ipv6=IPv6-address --netmasklengthv6=length]
VBoxManage hostonlyif create
VBoxManage hostonlyif remove <ifname>

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

However, VBoxManage.exe might not be on the Windows PATH. You can attempt to add the path to the Windows PATH, by typing:

Cmd or PowerShell Administrator
$ setx /M PATH "%PATH%;%PROGRAMFILES%\Oracle\VirtualBox"
WARNING: The data being saved is truncated to 1024 characters.
SUCCESS: Specified value was saved

The new value of PATH will not be visible or usable until you open a new Cmd or PowerShell console. However, note the above warning. Windows carries limitations from decades back that have never been addressed. The above means that the PATH cannot be made longer.

One solution is to invoke VBoxManage.exe from WSL, like this:

Shell
$ '/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe'

To make this more convenient, define an alias in ~/.bash_aliases:

~/.bash_aliases entry
alias vboxmanage="'/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe'"

Load the aliases like this:

Shell
$ source ~/.bash_aliases

Now you can run VBoxManage.exe from WSL:

Shell
$ vboxmanage

Scaled mode is often a nice way to see a virtual desktop on a large monitor, but it might remove the menu and status bar.

Pressing Right Control+C fixes that problem by toggling scaled mode. Note that you must release the Right Control key before using it again.

When a device is attached to a VM, the device becomes available to the VM. If a device is busy before the VM starts, or is busy while being attached to the VM, then the VM cannot use it until the host process lets go of the device.

After clicking on the add device filter icon above, hovering over a device shows its status (captured or busy)
After clicking on the add device filter icon above, hovering over a device shows its status (captured or busy)

Each device has a name (which you can edit), a vendor ID, a product ID, a serial number, and a port. You can see the information when a device is viewed by double-clicking on it.

Serial numbers are often reused, so this field has limited use. For a given vendor ID/product ID combination, there must be a unique port assignment, or the device will not interact as desired with the VM.

All of the attached devices must be in a captured state before they can be used; one way to obtain a visual indication that the attached devices are in the desired state is to click on or hover over the USB icon at the bottom of the VM window.

Again, hovering over a device as shown above will show its status.

I experienced problems connecting devices when changing NVMe drives in Sabrent enclosures, and when changing SATA drives in Voyager S3 caddies. The following solved that problem:

  1. Eject media attached to the host OS. For Windows, this can be done by right-clicking on the USB icon in the system tray.
  2. Relax the Virtualbox filter, as shown:
    Instantiate device filters with names that suggest a relaxed filter
    Instantiate device filters with names that suggest a relaxed filter
    Each relaxed filter only specifies the vendor ID
    Each relaxed filter only specifies the vendor ID

Now connecting two Sabrent devices will always work. You can sort out the drives in the client OS; I used gparted on my Ubuntu client OS.

Disabling The Host Screen Saver

This is not very important, just a minor annoyance.

You are supposed to be able to disable the host’s screen saver while VirtualBox runs. The VirtualBox menu selection to do that is File / Preferences / Display:

This setting has no effect
This setting has no effect

Unfortunately, the above setting does not do anything for my Windows 10 host.

Instead, I must temporarily disable the Windows screen saver, which can be activated by pressing Windows+I, selecting System / Power & Sleep, then setting Screen / When plugged in, turn off after to Never.

Disabling the Windows screen saver
Disabling the Windows screen saver
* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.