Les utilisateurs de VirtualBox de tous niveaux (qu’ils soient débutants ou développeurs) sont souvent confrontés à des situations dans lesquelles ils doivent accéder à un périphérique USB depuis des machines virtuelles VirtualBox à l’aide de la redirection de l’USB. Plus précisément, ils doivent pouvoir accéder aux périphériques USB connectés à l’ordinateur physique sur lequel est exécutée la machine virtuelle.
Comment font les utilisateurs de VirtualBox pour rediriger l’USB vers VirtualBox depuis des machines virtuelles pour accéder à leurs périphériques USB sur l’Ethernet (ou sur d’autres connexions réseau) ? Nous répondons à cette question ci-dessous...
Cet article propose un guide pas à pas pour accéder à une carte SD depuis une machine virtuelle VirtualBox Linux Ubuntu exécutée sur un ordinateur avec un système d’exploitation Windows sur l’Ethernet (ou toute autre connexion réseau).
Sommaire :
Avant de suivre les étapes ci-dessous, vérifiez que tous les pilotes sont à jour sur toutes les machines participant à la redirection de l’USB.
Quels que soient la plateforme, l’utilitaire ou le système d’exploitation qu’ils utilisent (VBoxManage, Ubuntu, XP, packs d’extension VirtualBox, etc.), les développeurs comme les nouveaux utilisateurs de VBox doivent s’assurer que leurs pilotes soient à jour (ou compatibles avec la version du pack d’extension VirtualBox utilisé) pour optimiser la redirection de l’USB.
Étape 1-1 : Ouvrez l’Invite de commandes (ou Windows PowerShell sur les systèmes Windows tels que XP Pro) en tant qu’administrateur (à l’aide par exemple du raccourci “Windows” + “x”. Sélectionnez ensuite “Invite de commandes (admin)”)
Étape 1-2 : Exécutez la commande wmic (ou la commande lsusb sur Linux) pour afficher la liste des disques. Vous devez effectuer cette opération avant d’insérer la carte SD dans le PC.
wmic diskdrive list brief
Vous devriez voir s’afficher ce qui suit :
Caption | DeviceID | Model | Partitions | Size |
SAMSUNG MZFLV256HCHP-000MV | \\.\PHYSICALDRIVE0 | SAMSUNG MZFLV256HCHP-000MV | 3 | 256052966400 |
Étape 1-3 : Insérez la carte SD dans l’ordinateur et exécutez la même commande que précédemment (sur un système d’exploitation Linux, la commande lsusb sera utilisée pour afficher les informations spécifiques relatives aux bus USB, etc.)
Vous devrez voir s’afficher une ligne supplémentaire indiquant l’identifiant de la carte SD (DeviceID). Dans l’exemple suivant, cet identifiant est : “\\.\PHYSICALDRIVE1“.
Caption | DeviceID | Model | Partitions | Size |
Generic- USB3.0 CRW -SD USB Device | \\.\PHYSICALDRIVE1 | Generic- USB3.0 CRW -SD USB Device | 2 | 31914086400 |
SAMSUNG MZFLV256HCHP-000MV | \\.\PHYSICALDRIVE0 | SAMSUNG MZFLV256HCHP-000MV | 3 | 256052966400 |
Remarque à l’attention des développeurs et autres utilisateurs de VirtualBox : vous devez savoir si vous utilisez un périphérique USB 3.0 ou 2.0 (EHCI). “EHCI” signifie “Enhanced Host Controller Interface”.
Étape 2-1 : Transférez le dossier vers le répertoire d’installation de VirtualBox. Dans l’exemple suivant, il s’agit de “C:\Program Files\Oracle\VirtualBox\”.
cd "C:\Program Files\Oracle\VirtualBox\"
Étape 2-2 : À l’aide de “VBoxManage.exe”, créez le fichier VMDK de la carte SD. L’argument final est l’identifiant de la carte SD (voir étapes 1-1 à 1-3)
.\VBoxManage.exe internalcommands createrawvmdk -filename C:\sdcard.vmdk -rawdisk
\\.\PHYSICALDRIVE1
Vous devriez alors voir s’afficher “sdcard.vmdk”, fichier qui sera créé dans le répertoire racine du disque C.
Le fichier VMDK C:\sdcard.vmdk a bien été créé sur le disque RAW.
Étape 3-1 : Exécutez en tant qu’administrateur l’interface graphique de VirtualBox
Étape 3-2 : Sur l’interface graphique de VirtualBox, rendez-vous dans : “Paramètres>Stockage”
Étape 3-3 : Cliquez sur “Contrôleur : SATA”
Étape 3-4 : Cochez la case à côté de l’option “Utiliser le cache E/S de l’hôte”
Étape 3-5 : Cliquez à présent sur l’icône “Ajouter le disque dur” (tel qu’indiqué dans l’exemple ci-dessous)
Étape 3-6 : Sélectionnez “Choisir un disque existant”
Étape 3-7 : Rendez-vous sur le disque C et choisissez le fichier “sdcard.vmdk” (le fichier créé dans l’étape 2)
Exécutez la machine virtuelle et démarrez la vérification. Dans cet exemple, il s’agit de “/dev/sdb” (image du système d’exploitation Raspbian sur une carte SD de 32 Go).
$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 29.8 GiB, 32010928128 bytes, 62521344 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb1d773dc
Device | Boot Start | End | Sectors | Size | Id | Type |
/dev/sdb1 | 8192 | 96453 | 88262 | 43.1M | c | W95 FAT32 (LBA) |
/dev/sdb2 | 98304 | 31116287 | 31017984 | 14.8G | 83 | Linux |
De nombreuses erreurs peuvent malheureusement survenir lorsque vous essayez d’utiliser la carte SD. Vous trouverez ci-dessous des conseils de dépannage pour la redirection d’une carte SD vers VirtualBox.
Option de dépannage 1 :
Erreur : “Le cache d’E/S a rencontré une erreur lors de la mise à jour des données sur le support “ahci-0-1” (rc=VERR_ACCESS_DENIED)”
Si vous rencontrez l’erreur ci-dessus, retournez à l’étape 2 et vérifiez que la case “Utiliser le cache E/S de l’hôte” est bien cochée.
Option de dépannage 2 :
Erreur : “L’UUID du support ne correspond pas à la valeur enregistrée dans le registre.
Dans le dossier d’installation de VirtualBox, exécutez la commande suivante :
.\VBoxManage.exe list hdds
Vous aurez ensuite la possibilité de trouver l’UUID dans les détails de l’erreur
UUID: 5b951504-358d-4a6e-bb8f-61be3ec32367
Parent UUID: base
State: inaccessible
Type: normal (base)
Location: C:\Users\max\Desktop\sdcard.vmdk
Storage format: VMDK
Capacity: 0 MBytes
Encryption: disabled
Exécutez la commande ci-dessous (en indiquant l’UUID) pour supprimer le disque :
.\VBoxManage.exe closemedium disk 5b951504-358d-4a6e-bb8f-61be3ec32367