VirtualBox-Benutzer aller Stufen (vom Anfänger bis zum Entwickler) haben zahlreiche Szenarien, in denen sie Zugriff auf ein USB-Gerät von VirtualBox vms über USB-Passthrough benötigen. Konkret geht es um den Zugriff auf USB-Geräte, die mit einem Host-Computer verbunden sind.
Wie können vbox-Benutzer erfolgreich VirtualBox USB Passthrough innerhalb von VMs durchführen, um auf ihre USB-Hardwaregeräte über Ethernet (oder andere Netzwerkverbindungen) zuzugreifen?
Das werden wir weiter unten beantworten...
Dieser Artikel enthält eine Schritt-für-Schritt-Anleitung, um vboxusers zu zeigen, wie man den Hardware-Zugriff auf SD-Karten von einer Ubuntu Linux VirtualBox-Gastmaschine auf einer Host-Maschine mit Windows-Betriebssystem über Ethernet (oder eine andere Netzwerkverbindung) aktiviert.
Bevor Sie einen der folgenden Schritte ausführen, sichern Sie sich, dass alle Treiber auf allen Computern, die am USB-Passthrough teilnehmen, aktualisiert sind.
Ungeachtet der Plattform, des Tools oder des Betriebssystems (VboxManage, Ubuntu, XP, VirtualBox Extension Packs usw.) müssen sowohl Entwickler als auch neue Vbox-Anwender ihre Treiber auf dem neuesten Stand halten (oder mit der Version des verwendeten VirtualBox Extension Packs kompatibel sein), um den erfolgreichen USB-Passthrough zu maximieren.
Schritt 1-1: Öffnen Sie die Eingabeaufforderung (oder Windows PowerShell auf Windows-Betriebssystemen - wie XP Pro) als Administrator (z B.: "Windows"-Taste + "x". Dann "Eingabeaufforderung (Admin)" auswählen)
Schritt 1-2: Verwenden Sie den Befehl wmic (oder den Befehl lsusb unter Linux), um die Laufwerke aufzulisten. Dies sollte vor dem Einlegen der SD-Karte in den PC geschehen.
wmic diskdrive list brief
Die Ausgabe sollte wie folgt lauten:
Bildunterschrift | Geräte-ID | Modell | Partitionen | Größe |
SAMSUNG MZFLV256HCHP-000MV | \\.\PHYSICALDRIVE0 | SAMSUNG MZFLV256HCHP-000MV | 3 | 256052966400 |
Schritt 1-3: Stecken Sie die SD-Karte in den Rechner ein und führen Sie den gleichen Befehl wie zuvor aus (bei einem Linux-Betriebssystem wäre das der Befehl lsusb, um Informationen über spezifische Details zu USB-Bussen usw. aufzulisten)
Benutzer sollten eine zusätzliche Zeile sehen, die die DeviceID der SD-Karte anzeigt. Im folgenden Beispiel lautet die ID: “\\.\PHYSICALDRIVE1“.
Bildunterschrift | Geräte-ID | Modell | Partitionen | Größe |
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 |
Devs und vbox-Benutzer sollten beachten: Benutzer sollten wissen, ob sie ein 3.0 USB-Gerät oder ein 2.0 (EHCI) USB verwenden. "EHCI" steht für: "Enhanced Host Controller Interface”.
Schritt 2-1: Übertragen Sie den Ordner in den Installationsordner von VirtualBox. Im folgenden Beispiel wird dies sein: “C:\Program Files\Oracle\VirtualBox\”.
cd "C:\Program Files\Oracle\VirtualBox\"
Schritt 2-2: Mit der "VBoxManage.exe" erstellen Sie die VMDK-Datei der SD-Karte. Das letzte Argument betrifft die DeviceID der SD-Karte (siehe Schritte 1-1 bis 1-3)
.\VBoxManage.exe internalcommands createrawvmdk -filename C:\sdcard.vmdk -rawdisk
\\.\PHYSICALDRIVE1
Wenn alles gut geht, lautet die Ausgabe “sdcard.vmdk”, und wird im Stammordner des C-Laufwerks erstellt.
RAW-Host-Festplattenzugriff VMDK-Datei C:\sdcard.vmdk erfolgreich erstellt.
Schritt 3-1: Starten Sie als Administrator die VirtualBox GUI
Schritt 3-2: Navigieren Sie in der VirtualBox GUI wie folgt: "Setting>Storage”
Schritt 3-3: Klicken Sie auf "Controller: SATA”
Schritt 3-4: Aktivieren Sie das Kontrollkästchen neben "Host I/O Cache verwenden”
Schritt 3-5: Klicken Sie nun auf das Symbol "Festplatte hinzufügen" (in der visuellen Hilfe unten dargestellt)
Schritt 3-6: Wählen Sie "Vorhandenen Datenträger auswählen”
Schritt 3-7: Gehen Sie zum Laufwerk C und wählen Sie die Datei “sdcard.vmdk” (die Datei, die wir in Schritt 2 erstellt haben)
Starten Sie die virtuelle Maschine und beginnen Sie mit der Überprüfung. In diesem Beispiel sieht es so aus “/dev/sdb” (Raspbian OS-Image auf 32GB SD-Karte).
$ 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
Gerät | Boot Start | Ende | Sektoren | Größe | Id | Typ |
/dev/sdb1 | 8192 | 96453 | 88262 | 43.1M | c | W95 FAT32 (LBA) |
/dev/sdb2 | 98304 | 31116287 | 31017984 | 14.8G | 83 | Linux |
Bei dem Versuch, die SD-Karte zu verwenden, traten leider zahlreiche Fehler auf. Im Folgenden finden Sie einige Optionen zur Fehlerbehebung für VirtualBox SD-Karten-Passthrough.
Fehlerbehebung Option 1:
Der Fehler: "I/O-Cache ist beim Aktualisieren von Daten im Medium "ahci-0-1" auf einen Fehler gestoßen (rc=VERR_ACCESS_DENIED)”
Für Benutzer, bei denen der obige Fehler auftritt, kehren Sie zu Schritt 2 zurück und stellen Sie sicher, dass das Kontrollkästchen "Host I/O Cache verwenden" aktiviert ist.
Fehlerbehebung Option 2
Der Fehler: "UUID des Mediums stimmt nicht mit dem in der Medienregistrierung gespeicherten Wert überein.
Aus dem VirtualBox-Installationsordner heraus führen Sie den folgenden Befehl aus:
.\VBoxManage.exe list hdds
Die Benutzer haben dann die Möglichkeit, die UUID in den Fehlerdetails zu finden
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
Verwenden Sie den folgenden Befehl (unter Angabe der UUID), um den Datenträger zu entfernen:
.\VBoxManage.exe closemedium disk 5b951504-358d-4a6e-bb8f-61be3ec32367