Gli utenti di VirtualBox di tutti i livelli (dal principiante allo sviluppatore) si trovano spesso in situazioni in cui è necessario accedere a un dispositivo USB dalle macchine virtuali VirtualBox tramite il passthrough USB. In particolare, si tratta di accedere ai dispositivi USB collegati al computer host.
Come fanno gli utenti di VirtualBox a effettuare con successo il passthrough USB in VirtualBox all’interno delle VM per accedere ai propri dispositivi USB via Ethernet (o altre connessioni di rete)? Lo vedremo qui sotto...
Questo articolo fornisce istruzioni dettagliate su come abilitare l’accesso all’hardware della scheda SD da una macchina virtuale Ubuntu Linux su VirtualBox, eseguita su un computer host con sistema operativo Windows tramite connessione Ethernet (o qualsiasi altra connessione di rete).
Indice dei contenuti:
Prima di eseguire uno dei passaggi seguenti, assicurarsi che tutti i driver siano aggiornati su tutte le macchine che partecipano al passthrough USB.
Indipendentemente da piattaforma, strumento o sistema operativo (VBoxManage, Ubuntu, XP, pacchetti di estensione VirtualBox, ecc.), sia gli sviluppatori sia i nuovi utenti di VBox devono assicurarsi che i driver siano aggiornati (o compatibili con la versione del pacchetto di estensione VirtualBox utilizzata) per garantire il successo del passthrough 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