How to Boot a USB Flash Drive in VirtualBox

How to Boot a USB flash drive in VirtualBox. In this segment you will learn how to successfully boot a portable operating system from a USB flash drive or removable external hard drive while still running from within a Windows, Linux, or Mac OS X environment using vbox.

VirtualBox Boot from USB

By default, VirtualBox (vbox) does not provide direct support for booting from USB devices. However, this task can be achieved by creating and mapping a virtual hard disk file (.vmdk) to the USB drive. Effectively allowing you to create a mapped VirtualBox bootable USB.

This method essentially tricks the virtual machine into thinking that the .vmdk file is a USB drive, allowing you to boot from it. It's important to note that this process doesn't directly boot from the physical USB drive; instead, it uses a virtual representation of the USB drive.

The following sections cover booting from a USB flash drive in VirtualBox on Windows, Mac OS, and Linux hosts. This process involves configuring the virtual machine to boot from a USB device. We will also go through the steps necessary to get persistence working for those running their VM from Windows.

Note: I am not sure if you'll need to have "vbox USB passthrough" for VirtualBox installed and enabled. If this proves to be the case, I'll revisit this post to append information on how to do this.


Boot from a USB Flash Drive in VirtualBox (Windows)

  1. Download VirtualBox and run the installer (Installing to the default path).
  2. You'll need to use the command line to perform steps 3-6,
    To open a command prompt;
    (1.) From the Windows '⌕ Type here to search' box, type cmd.exe
    (2.) Then click Run as administrator
    open command prompt as admin
  3. At the command prompt, type diskmgmt.msc and press Enter to open the Windows Disk Management Tool. Then, identify your USB Disk #
    Diskmgmt.msc
  4. Now, back at the command line, type
    cd %programfiles%\oracle\virtualbox
  5. Replacing # with your USB Disk number from step 3, type
    VBoxManage internalcommands createrawvmdk -filename "%USERPROFILE%"\.VirtualBox\usb.vmdk -rawdisk \\.\PhysicalDrive#
  6. To start VirtualBox as Admin, type the following from the open command line:
    start virtualbox
  7. From the menu, navigate to Machine -> New, and then proceed to Create a New Virtual Machine.
    Creating a New Virtual Machine
  8. When prompted for a Virtual Hard Disk;
    (1.) Tick use existing hard disk.
    (2.) Then, browse to your %USERPROFILE%\.VirtualBox folder, and select the usb.vmdk file.
    (3.) Press Finish to complete the creation of the USB Virtual Machine.
    Select an Existing Virtual Hard Disk File usb.vmdk
  9. Once you have finished creating your New Virtual Machine, click Start
    Start VirtualBox

If all goes well, you should now be booting your USB flash drive from VirtualBox within Windows.

Getting Persistence to work in VirtualBox (Windows)

At first the USB flash drive might not work exactly like it does when booted natively. Things like Ubuntu's casper persistent feature won't work. Some distributions might not even boot, or will boot with errors.

This is because the volumes on the device are mounted by Windows, preventing VirtualBox from gaining full access. In order to fix these issues, you can use a tool called LockDismount. Then simply run the tool (using the following steps), prior to starting the Virtual Machine that is tied to your USB.

  1. Download LockDismount tool.
  2. Launch the exe right before starting your VirtualBox VM
  3. Select your USB drive from the drop list and Press Lock it!
    (optionally you can check Force Dismount)

LockDismount
Now your flash drive should be able to boot in VirtualBox exactly as it does when booted natively on a physical machine.


VirtualBox Boot from USB (Linux)

The following process to boot a USB flash drive in VirtualBox was performed from a running Ubuntu Operating environment. This method should also work for Debian and other Ubuntu Linux based Operating systems.

  1. Open a Terminal Ctrl+Alt+T, and then type the following and press Enter;
    sudo apt install virtualbox
  2. Next, type
    sudo fdisk -l

    (note which device is your USB drive I.E. /dev/sdx)
    Use fdisk -l to locate usb device - virtualbox bootable usb

  3. Replacing x with your actual device letter found from step 2, type
    sudo vboxmanage internalcommands createrawvmdk -filename ~/usb.vmdk -rawdisk /dev/sdx </span>
  4. From the open terminal, type the following to start the program.
    sudo virtualbox
  5. Now navigate to Machine -> New and proceed create a New Virtual Machine.
    Create a New Virtual Machine
  6. When prompted for a Virtual Hard Disk, tick use existing hard disk, then browse to your Home directory and select usb.vmdk.
    Select an Existing Virtual Hard Disk File usb.vmdk
  7. Once you've finished creating your New Virtual Machine, click Start.
    Start the VirtualBox Bootable USB

If all went smoothly, you should now be able to boot a USB flash drive from VirtualBox on the Linux Host.


Booting from USB Drives in VirtualBox (Mac OS X)

    1. Download and install VirtualBox for OS X Hosts via the .dmg file.
    2. Open a Terminal, type the following and then press Enter
      diskutil list

      (make note of which disk is your USB drive I.E. /dev/disk#)

    3. Replacing # with the disk number of your USB drive, type
      diskutil unmountDisk /dev/disk#
    4. Again, replacing # with your actual disk number, type
      vboxmanage internalcommands createrawvmdk -filename ~/usb.vmdk -rawdisk /dev/disk#
    5. Once more, replacing # with the disk number, type
      diskutil unmountDisk /dev/disk#
    6. Finally, to start the program with root access, type
      sudo virtualbox
    7. Next, Proceed to create a New Virtual Machine.
      Create a New Virtual Machine
      When prompted for a Virtual Hard Disk, tick use existing hard disk.
    8. Then, browse to your Home directory and select usb.vmdk.
      Select an Existing Virtual Hard Disk File usb.vmdk
    9. Once finished creating your New Virtual Machine, click Start.
      Click Start to boot a USB flash drive in VirtualBox

You should now be able to boot a USB flash drive in VirtualBox on the Mac OS X host, while retaining the ability to boot from the drive natively as well.

Note: When first attempting to boot a USB Flash Drive in VirtualBox from within Windows, you may receive an Error similar to this:

Failed to get device handle and/or partition ID for 0000000001e92d20 (hPartitionDevice=0000000000000cd5, Last=0xc0000002/1) (VERR_NEM_VM_CREATE_FAILED).

In which case, you need to set hypervisor launch type to off. To do this;

  1. Open a command prompt as Administrator. I.E; (Win Key+X) and then press A
  2. Type the following command string into the terminal, then press Enter
    bcdedit /set hypervisorlaunchtype off
  3. Reboot your computer.
  4. Try to boot your USB flash drive from VirtualBox, again.

This concludes three methods that can be used to vbox USB boot in VirtualBox. If you found this useful, you might also be interested in Running a Portable VirtualBox from USB drives.