Virtual Machine USB Boot

Discussion in 'Virtualization' started by DavidB, May 18, 2014.

  1. DavidB

    DavidB MDL Novice

    Jun 27, 2013
    #1 DavidB, May 18, 2014
    Last edited: Jul 8, 2014

    What it does:

    With this application it's easy to add a real USB drive into a virtual machine (VirtualBox or QEMU) and boot from it.
    It will temporary separate the drive from the host OS (dismount it) and, after the virtual machine is closed, it will mount it back. This way it will prevent data loss and the changes made to the drive in the virtual machine will be visible in the host OS too.


    Host OS: Windows XP/Vista/7/8/8.1
    VirtualBox (installed not portable) and/or QEMU

    How you can use it:

    Download and unzip the setup file or the portable version. Install the setup file and start it or just start the portable.
    If you have a limited user account on the host OS you need to start it as an administrator, because only this way it will properly check and use the real (USB) drive.
    In Windows 7/8/8.1 it will automatically start it as an administrator. In Windows XP and Vista it will have to be set manually:


    If you intend to use the VirtualBox Manager in the same time with Virtual Machine USB Boot, I strongly suggest to set its exe file or shortcut to be started as an administrator too.

    Now, in the main application's window, click on the Add button.
    You'll see this window:

    Add VirtualBox.png

    Add Qemu.png

    Here you can set:

    - the VM type (VirtualBox or QEMU);
    - the name of the list entry;
    - the way you can set the VirtualBox VM: by name, by path or by exe parameters;
    - the drive to add and boot (usually a USB drive);
    - a second drive (if you set "Add second drive option" in Options);
    - for VirtualBox VMs: enable/disable/switch CPU virtualization;
    - for QEMU VMs: memory size, a HDD image file, a CD/DVD device and a sound card;
    - the state of the main window for VirtualBox/QEMU (minimized/normal/maximized/fullscreen/hidden);
    - the CPU priority (BelowNormal/Normal/AboveNormal/High).

    If all is set you can click on Ok.

    When you first use the application it's wise to set the options. So click on Options button.


    Here you can set the wait time from the moment the application triggers the system data flush on the drive to the moment it actually dismounts it; usually 500 ms is enough but you can increase it on slower drive/OS/computer.
    The next option will set if the application will try to lock the volume(s) on the drive before dismounting it/them. This way you can be sure that all the system data was flushed and there are no processes accessing the drive. But sometimes it can be slow...
    If you wanna add a second drive to the virtual machine check the "show a second drive option".
    "Backup the old entries before saving the new ones": it will save the old entries as "Application_name.vml.bak". Useful when you often have problems with the OS, the computer or electricity. If you don't have such problems you can uncheck it.
    "Don't warn when not able to save the configuration or the entries file": you can uncheck it if you start VMUB from a read only medium or with 0% free space.
    When you add a new entry, the VM type is VirtualBox by default but you can change it to QEMU if you like.
    With the next option only the USB drives are listed. If you uncheck it the internal HDDs (except the OS drive) and the mounted virtual HDDs will be listed too.
    The font size, name, style, color and script for the entries list can be changed to your liking.
    By default the Escape key pressed in the main window can close the entire application but now you can activate/deactivate it.
    In VirtualBox section, you can set the path to the VirtualBox exe (usually autodetected).
    You can choose the way the application will modify the VirtualBox machine:
    - to try to autodetect the most appropriate for the given situation;
    - calling VboxManage.exe a few times with specific parameters; this method is slow but you can keep VirtualBox Manager opened all the time if you want;
    - modifying the virtual machine's configuration file (*.vbox) directly; it's faster but VirtualBox Manager must be closed; also, if you keep (re)starting the virtual machine very fast each time after you closed it then it will be a little less stable.
    Also you can set if the "Enable VT-x/AMD-V" option will be showed in the Add/Edit window and if the drive(s) should be removed when the VM is closed.
    In QEMU section, you can set the path to its exe (usually autodetected if QEMU was installed).
    You can set the default exe parameters that will appear in the Add window when you add a new QEMU entry.

    If all are set, click on the Start button and the virtual machine will be configured and started.


    1. When you first create the virtual machine in VirtualBox make sure there is a free port in the storage controller. This way the application will add the drive there.
    Also, if you want to boot from that drive, make sure the free port is positioned prior to other drives, because the VirtualBox VM will boot from the first drive in the storage controller(s).
    You can do that by starting the VirtualBox Manager, editing the VM's storage options and moving the other drive(s) into subsequent port(s).
    2. Try to avoid using snapshots or saving state of the VM.
    3. In the main window you can choose which columns you want to hide/show by right clicking on the columns and checking/uncheking them in the popup menu. Also you can modify their lengths.
    You can sort the entries by clicking on the header of each column.
    4. The application will remember the position, the size and the maximized state of the main window. Also any column changes...
    5. In the list you can right click on an entry and choose an action or use keyboard shortcuts (Insert, E, Return, +, Delete, Alt+Up, Alt+Down, Ctrl+P).
    6. Usually it takes a few seconds to configure and load the VirtualBox VM but sometimes it will take a little longer, so don't be alarmed.
    7. When you start the application or when you add or edit an entry, the application will generate a new ID/GUID for the drive. This is a unique number used internally in VirtualBox for identifying the drive.
    8. The drive you choose in Add/Edit window will be later recognized and used even if you disconnect/connect other drives before using it again.
    9. If you receive an warning or an error message from the application, please read the text thoroughly because it will help you solve the problem. The application is designed to deal and solve many problems but, like any computer program, it can't solve all of them. But I implemented helpful suggestions/informations in these messages so you can easily solve them.
    10. Before saving the entries list (*.vml) the application will backup the previous file in *.vml.bak. If you made a change that you don't like or if the OS/computer malfunctioned and it did not properly saved the vml file then you can restore it by removing the .bak extension.
    These files are near the exe file in the portable version or in the "C:\Users\UserName\AppData\Roaming\Virtual Machine USB Boot folder" (Windows Vista, 7, 8) in the installed version. In Windows XP they are in the "C:\Documents and Settings\UserName\Application Data\Virtual Machine USB Boot" folder. Normally these folders are hidden so you will need to unhide them or use a file manager set to see hidden files and folders.
    11. The default exe parameters for QEMU are just a "guideline/example" on how to boot with QEMU x86/x64. But if you want to use/change other QEMU features you should add more parameters. Also, other QEMU versions may require additional parameters to boot. For example -kernel and -initrd.
    12. QEMU usually shows 2 windows: one that displays text details about the VM and one with the VM. The "Run" option will change the state of the first window.

    Download from hxxp://
    (just replace hxxp with http)
  2. DavidB

    DavidB MDL Novice

    Jun 27, 2013
    #2 DavidB, Jun 9, 2014
    Last edited: Jun 10, 2014
    New version 1.4

    What's changed:

    1. The state of the drives (plugged/unplugged/mounted/unmounted) is now constantly monitored and displayed in each entry (the drive column). This can be done also manually by choosing Refresh in the context menu or by pressing F5.
    2. Added an option to list only USB drives or to list all drives.
    3. It detects now the drive ID change inside the VM and automatically updates its entry.
    4. Added option to set the list font.
  3. DavidB

    DavidB MDL Novice

    Jun 27, 2013
    New version: 1.41


    The features implemented in the previous version were improved a bit. For example the drive detection is now faster and more accurate.
    Added an option to set if pressing the Escape key in the main window will close the application (default on).
    And a lot of small tweaks...
  4. DavidB

    DavidB MDL Novice

    Jun 27, 2013
    New version: 1.42

    Improvements from 1.41:

    1. Drag'n'drop implemented in the main window, Options and the Add/Edit window. A small problem: when UAC is on, the application from where you drag the file/volume/drive needs to be started as administrator too (Windows limitation).
    2. In Windows 7/8/8.1 you won't have to set it to "Run as administrator" because it will start as administrator by default.
    3. Many small tweaks to the code and to the interface.