Récits d'un GeekTrotter Carnet de bord binaire

4janv./1165

Bootez sur votre clé USB avec VirtualBox 4

VirtualBox est un logiciel de virtualisation multi-plateforme facile à utiliser.

Cela signifie que vous pouvez faire tourner un OS différent à l'intérieur de votre OS courant (Linux dans Windows, Windows dans Linux, Linux dans Linux, Windows dans Windows... à peu près toutes les combinaisons sont possibles !).

VirtualBoxLinux dans Windows

C'est très simple de créer une nouvelle machine virtuelle en utilisant une image de disque virtuel stockée sur le disque dur (ou stockée sur la clé USB), il suffit de suivre étape par étape l'installateur de machine virtuelle de VirtualBox.

Cependant, certains d'entre vous veulent plus de portabilité au sens physique du terme. Avoir un OS qu'on peut mettre dans sa poche, emporter partout, brancher sur n'importe quel ordinateur, démarrer dessus et ça nous offrira NOTRE OS (avec nos logiciels, nos paramètres...).

C'est possible en installant un OS sur une clé USB ! Ce guide n'a pas pour but d'expliquer comment installer un OS sur une clé USB mais plutôt comment démarrer sur ce système sur clé USB dans VirtualBox.
Parfois vous ne voulez pas démarrer directement sur la clé USB mais êtes entrain d'utiliser un autre OS et voudriez avoir votre système qui est sur la clé USB à l'intérieur de celui-ci. A ce moment-là, vous devez lancer le système depuis un logiciel de virtualisation tel que VirtualBox.

Malheureusement, VirtualBox ne permet pas de démarrer depuis une clé USB directement depuis son interface graphique.
Cependant, une petite astuce ne nécessitant qu'une simple ligne de commande permet cela.

Voyons ça dans ce guide !
Ce guide est largement inspiré par le guide Boot your USB Drive in VirtualBox d'AgniPulse, se contentant de mettre à jour les informations à la dernière version de VirtualBox (4.0).

Je part du principe que vous avez :

  • une clé USB bootable qui contient l'OS que vous souhaitez virtualiser (et qui boote de façon "normale")
  • VirtualBox et son Expansion Pack (qui permet le support des clés USB2)

Primo, nous devons connaître l'identifiant (numérique) de votre clé USB.

Si vous êtes sous Linux, l'identifiant de votre disque USB est quelque chose comme /dev/sdx (par exemple /dev/sdb pour moi).

Sous Windows,  vous pouvez le trouver dans le "Disk Management" (Gestionnaire de Disques ?).
Commencez à écrire "dsk" après être entré dans le menu Démarrer et choisissez Create and Format Hard Disk Partitions (Créer et formater les partitions du disque dur ?):

01_-_Disk_Management

Create and format disk partitions

Une page dans laquelle vous trouverez l'identifiant de votre disque USB va s'ouvrir.
Dans mon cas, ma clé USB 8GB est sur le Disque 1:

02_-_Disk_Manager

Disk Management

Retenez bien ce "1", c'est l'identifiant numérique de votre disque.
Désormais nous sommes prêts à créer un Disque de Machine Virtuelle Brut qui sera lié à ce disque USB (fichier .vmdk).

Ouvrez simplement un terminal sous Linux ou l'outil de commandes sous Windows (Win+R cmd) et naviguez dans votre dossier VirtualBox.

cd "C:\Program Files\Oracle\VirtualBox"

Ensuite, exécutez la commande VBoxManage avec les paramètres suivants pour lier le disque USB à un fichier .vmdk (Virtual Machine Disk):
VBoxManage internalcommands createrawvmdk -filename output_usb.vmdk -rawdisk path_to_usb

Vous devez changer les deux paramètres en rouge en fonction de VOS paramètres.

Par exemple sous Linux, si je veux sauver mon VMDK dans /home/thomas/.VirtualBox/usb.vmdk et le lier à mon disque USB /dev/sdb, j'exécute la commande suivante:

VBoxManage internalcommands createrawvmdk -filename /home/thomas/.VirtualBox/usb.vmdk -rawdisk /dev/sdb

Sous Windows, si je veux sauver mon VMDK sous C:\Users\Thomas\.VirtualBox\usb.vmdk et le lier à mon Disque 1 (selon le Disk Management), j'exécute la ligne de commande suivante :

VBoxManage internalcommands createrawvmdk -filename C:\Users\Thomas\usb.vmdk -rawdisk \\.\PhysicalDrive1

Remplacez le "1" dans \\.\PhysicalDrive1 par le numéro correspondant à VOTRE disque USB (si 2 : \\.\PhysicalDrive2).
C'est terminé, vous avez votre petit .vmdk (~1KB) lié à votre disque USB.

Note: Comme remarqué par Carlet, si le chemin contient des espaces, encadrez-le de guillemets doubles.
Exemple: VBoxManage internalcommands createrawvmdk -filename "C:\Documents and Settings\Carletdesiles\.VirtualBox\usb.vmdk" -rawdisk \\.\PhysicalDrive1
Note: Comme remarqué par Alex et skydvr, sous Windows Vista/7, vous devez lancer l'outil de commandes en administrateur pour pouvoir accéder au disque USB ou à la clé USB.

Il ne vous reste plus qu'à importer ce .vmdk en tant que disque virtuel dans VirtualBox et l'utiliser en disque primaire (pour booter dessus) de votre nouveau système.

Vous pouvez faire cela étape par étape en suivant les captures d'écran :

Vous pouvez voir le résultat de ma clé USB faisant tourner Ubuntu 10.10 virtualisé dans Windows 7 avec VirtualBox (première capture d'écran de cet article).
Vous pouvez aussi voir une vidéo résumant chaque étape de ce tutorial :

Vidéo Résumé de ce guide

Enjoy!

  • draxe

    Meeeeerciiiii !!! Juste a cause d’un foutu « e » que j’avais oublié et meme pas vu au passage 🙂 encore merci

  • draxe

    so, now Xubuntu puts many time to starts :/

  • DavidB

    Very good method, thank you very much.
    I have Windows XP SP3 x86 and I’m using VirtualBox as admin.
    Only one problem: any changes made to the USB drive in the virtual machine are not visible in the host OS until I remove it and reattach it.
    I tried a tool called sync.exe, who flushes the Windows RAM buffer, no change.
    I tried also to change usb.vmdk to writethrough, still no change.
    Is there any good setting for this, or even a tool/command (preferably fast too), perhaps even one that can be used in a batch file…?
    Please help me…
    Thank you.

    Regards, DavidB

    • ThomasDalla

      Hi David,
      I have never tried that so cannot really help, but have you tried creating a separate partition on the USB? Data on that non-system partition should be available to both environments.

      • DavidB

        Thank you.
        But I already have 4 partitions on USB drive: one bootable Fat32 20 GB, one Linux ext4 30 GB, one logical Linux swap 2GB and one logical NTFS with the rest of the space (USB drive is 500 GB).
        The first and the fourth partition are visible in Windows and on both there is the same problem.
        But even if this would of worked, I need that ANY partition from USB (system/primary/logical) to show changes made in virtual machine into the host OS.

        Regards, David

      • DavidB

        Well, I found a solution: using mountvol command to dismount USB drive’s volume(s) before starting the VM and to mount them again after closing the VM.
        All can be done in a batch file so it will be very easy to use…

  • Gene Ricky Shaw

    Awesome! It worked on the first try for me. Thank for not only writing a great tutorial but making it cross platform! You ROCK!

  • DavidB

    There is a tool who does that automatically. It’s called « Virtual machine starter ». Works with Qemu and VirtualBox. More: it’s able to automatically dismount the volumes from the USB drive before the VM starts and to remount them back after it’s closed. This way it can prevent any data loss on the USB drive (from been accessed simultaneously by 2 computers) and you can see any modification made inside the VM (to the USB drive) into the real computer right after the VM is closed.

    Where you can find it: go to reboot pro → Boot methods & tools → Boot from USB / Boot anywhere → Booting VirtualBox with USB workaround (last page of the thread).

  • Dan Dart

    Cool!VBoxManage internalcommands createrawvmdk -filename /home/thomas/.VirtualBox/usb.vmdk -rawdisk /dev/sdb

  • Quentin Etienne

    Bonsoir,
    Je ne trouve pas le dossier VirtualBox sur Ubuntu, vous donnez le chemin pour windows mais pas pour Linux ^^’

    • ThomasDalla

      Tu veux dire le dossier d’installation de VirtualBox ? (l’équivalent C:Program Files…)
      Si c’est le cas, tu n’en as pas besoin, VBoxManage devrait être dans ton PATH déjà sous Linux donc tu dois pouvoir lancer la commande depuis un terminal dans n’importe quel dossier.

      Si ce n’est pas le cas, ça doit être dans /usr/bin je pense.

      • Quentin Etienne

        Ok, je vais voir ça. Merci.

  • guest

    Sorry, accidentally replied to some else’s posts below. Reposting as a normal comment:

    Hey, thanks for the post! I managed to create the file using the command you offered, and I was able to import the hard drive, BUT once I try to start the system I receive a « RESOURCE_BUSY » error. I received a similar error first when trying to import the hard drive, but unmounting the USB key did the trick. If I unmount the disk before starting the system, however, the system starts and tells me that there is no bootable drive. I’m not sure what to do, I’ve pasted the error message below. Also, my host is Mac OSX Mavericks. Thanks!

    Failed to open a session for the virtual machine Ubuntu

    VD: error VERR_RESOURCE_BUSY opening image file ‘/Users/Me/VirtualBox/usb.vmdk’ (VERR_RESOURCE_BUSY).

    Failed to open image ‘/Users/Me/VirtualBox/usb.vmdk’ in read-write mode rc=VERR_RESOURCE_BUSY (VERR_RESOURCE_BUSY).

    Failed to attach driver below us! Device or resource is busy. (VERR_RESOURCE_BUSY).

    PIIX3 cannot attach drive to the Primary Master (VERR_RESOURCE_BUSY).Result Code: NS_ERROR_FAILURE (0x80004005)Component: ConsoleInterface: IConsole {8ab7c520-2442-4b66-8d74-4ff1e195d2b6}

    • ThomasDalla

      Have you tried as sudo/root?

  • titi

    t’as fais ça en root ?

  • Arthur Letrue

    Bonsoir, j’ai suivi ce petit tutoriel mais au moment de lancer VM, j’ai un premier message d’erreur qui dit qu’il n’a pas accès au kernel et un suivant qui apparait en disant ceci :
    p, li { white-space: pre-wrap; }
    Code d’erreur :
    E_FAIL (0x80004005)
    Composant :
    Machine
    Interface :
    IMachine {480cf695-2d8d-4256-9c7c-cce4184fa048}

    **************
    Je tiens à préciser que je veux booter une version linux siyuer sur un disque dur externe (disque 1)
    Que c’est-il passé ? Que dois-je faire ?
    Merci pour vos futurs réponses.

  • isselu

    well i have a issue…. it says that i have installed the oracle virtualbox extension and then when i try to open windows 7 with usb2 turned on this comes up…

    so i don’t know how to solve this, and help would be much appreciated 🙂