Les utilisateurs de VirtualBox de tous niveaux (du débutant au développeur) rencontrent différentes situations dans lesquelles ils doivent accéder à un périphérique USB depuis des machines virtuelles VirtualBox via la redirection de l’USB. Il est particulièrement courant de devoir accéder à des périphériques USB connectés à l’ordinateur physique sur lequel sont exécutées les machines virtuelles.
Comment les utilisateurs de VirtualBox peuvent-ils mettre en place la redirection de l’USB vers VirtualBox depuis leurs machines virtuelles pour accéder à des périphériques USB sur l’ethernet (ou d’autres types de connexions réseau) ?
Vous trouverez la réponse ci-dessous.
Cet article propose des instructions pas à pas expliquant aux utilisateurs de VirtualBox comment accéder depuis une machine virtuelle VirtualBox sur Linux Ubuntu à une carte SD connectée à un ordinateur Windows sur l’ethernet (ou tout autre type de connexion réseau).
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 l’outil, la plateforme et le système d’exploitation (VboxManage, Ubuntu, XP, packs d’extension VirtualBox, etc.), les développeurs comme les nouveaux utilisateurs de VirtualBox doivent disposer de pilotes à jour (ou compatibles avec la version du pack d’extension VirtualBox utilisé) pour optimiser leurs chances de rediriger l’USB avec succès.
É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