Gli utenti di VirtualBox di tutti i livelli (dal principiante allo sviluppatore) hanno numerosi scenari in cui richiedono l'accesso a un dispositivo USB da VirtualBox vms tramite passthrough USB. In particolare, l'accesso ai dispositivi USB collegati a un computer host.
In che modo i vboxusers conducono con successo il passthrough USB VirtualBox all'interno delle VM per accedere ai propri dispositivi hardware USB tramite Ethernet (o altre connessioni di rete)?
Ti risponderemo di seguito...
Questo articolo fornisce istruzioni dettagliate per mostrare a vboxusers come abilitare l'accesso all'hardware della scheda SD da una macchina guest Ubuntu Linux VirtualBox su una macchina host che esegue sistemi operativi Windows su Ethernet (o qualsiasi altra connessione di rete).
Prima di eseguire uno dei passaggi seguenti, assicurarsi che tutti i driver siano aggiornati su tutte le macchine che partecipano al passthrough USB.
Indipendentemente dalla piattaforma, dallo strumento o dal sistema operativo (VboxManage, Ubuntu, XP, VirtualBox Extension Pack, ecc.), sia gli sviluppatori che i nuovi utenti di vbox hanno bisogno che i loro driver siano aggiornati (o compatibili con la versione di VirtualBox Extension Pack utilizzata) per massimizzare il successo passante usb.
Passaggio 1-1: Aprire il prompt dei comandi (o Windows PowerShell su sistemi operativi Windows, come XP Pro) come amministratore (ad esempio: tasto "Windows" + "x". Quindi selezionare "Prompt dei comandi (admin)")
Passaggio 1-2: Utilizzare il comando wmic (o il comando lsusb su Linux) per elencare le unità disco. Questo dovrebbe essere fatto prima di inserire la scheda SD nel PC.
wmic diskdrive list brief
L'output dovrebbe essere il seguente:
Didascalia | ID del dispositivo | Modello | Partizioni | Dimensione |
SAMSUNG MZFLV256HCHP-000MV | \\.\PHYSICALDRIVE0 | SAMSUNG MZFLV256HCHP-000MV | 3 | 256052966400 |
Passaggio 1-3: Inserisci la scheda SD nella macchina ed esegui lo stesso comando di prima (su un sistema operativo Linux, sarebbe il comando lsusb per elencare informazioni relative a dettagli specifici sui bus USB, ecc.)
Gli utenti dovrebbero vedere una riga aggiuntiva che mostra l'ID dispositivo della scheda SD. Nell'esempio seguente, l'ID è: “\\.\PHYSICALDRIVE1“.
Didascalia | ID del dispositivo | Modello | Partizioni | Dimensione |
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 |
Gli sviluppatori e gli utenti di vbox dovrebbero notare: gli utenti dovrebbero sapere se stanno utilizzando un dispositivo USB 3.0 o un USB 2.0 (EHCI). "EHCI" sta per: “Enhanced Host Controller Interface”.
Passaggio 2-1: Trasferisci la cartella nella cartella di installazione di VirtualBox. Nell'esempio seguente, sarà: “C:\Program Files\Oracle\VirtualBox\”.
cd "C:\Program Files\Oracle\VirtualBox\"
Passaggio 2-2: Utilizzando "VBoxManage.exe" creare il file VMDK della scheda SD. L'ultimo argomento riguarda le schede SD DeviceID (rivedere i passaggi da 1-1 a 1-3)
.\VBoxManage.exe internalcommands createrawvmdk -filename C:\sdcard.vmdk -rawdisk
\\.\PHYSICALDRIVE1
Se tutto va bene, l'output leggerà "sdcard.vmdk" e verrà quindi creato nella cartella principale dell'unità C.
RAW host disk access VMDK file C:\sdcard.vmdk created successfully.
Passaggio 3-1: Come amministratore, avvia la GUI di VirtualBox
Passaggio 3-2: All'interno della GUI di VirtualBox, navigare come segue: "Impostazioni > Archiviazione"
Passaggio 3-3: Fare clic su "Controllore: SATA"
Passaggio 3-4: Seleziona la casella di controllo accanto a "Usa cache I/O host"
Passaggio 3-5: Ora fai clic sull'icona "Aggiungi disco rigido" (mostrata nell'aiuto visivo di seguito)
Passaggio 3-6: Seleziona "Scegli disco esistente"
Passaggio 3-7: Vai all'unità C e scegli il file "sdcard.vmdk" (il file che abbiamo creato nel passaggio 2)
Avvia la macchina virtuale e inizia la verifica. In questo esempio, sembra: "/dev/sdb" (immagine del sistema operativo Raspbian nella scheda SD da 32 GB).
$ 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
Dispositivo | Avvio avvio | Fine | Settori | Dimensione | ID | Tipo |
/dev/sdb1 | 8192 | 96453 | 88262 | 43.1M | c | W95 FAT32 (LBA) |
/dev/sdb2 | 98304 | 31116287 | 31017984 | 14.8G | 83 | Linux |
Sfortunatamente, durante il tentativo di utilizzare la scheda SD, sono sorti numerosi errori. Di seguito sono riportate alcune opzioni di risoluzione dei problemi per il passthrough della scheda SD di VirtualBox.
Risoluzione dei problemi Opzione 1:
L'errore: "I/O cache ha riscontrato un errore durante l'aggiornamento dei dati nel supporto "ahci-0-1" (rc=VERR_ACCESS_DENIED)"
Per gli utenti che riscontrano l'errore precedente, tornare al passaggio 2 e assicurarsi che la casella di controllo "Usa cache I/O host" sia selezionata.
Risoluzione dei problemi Opzione 2
L'errore: “UUID del supporto non corrisponde al valore memorizzato nel registro del supporto.
Dall'interno della cartella di installazione di VirtualBox, esegui il seguente comando:
.\VBoxManage.exe list hdds
Gli utenti avranno quindi la possibilità di individuare l'UUID all'interno dei dettagli dell'errore
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
Utilizzare il comando seguente (specificando l'UUID) per rimuovere il disco:
.\VBoxManage.exe closemedium disk 5b951504-358d-4a6e-bb8f-61be3ec32367