Wie greife ich von einer virtuellen Maschine auf eine SD-Karte zu?

64

Ich möchte eine SD-Karte von meiner virtuellen Linux-Maschine formatieren. Ich habe einen eingebauten SD- Kartenleser in meinem Laptop. Ich habe VirtualBox und VMware Player ausprobiert und Ubuntu 10.04 als Gast installiert. Keiner von ihnen zeigt den SD-Kartenleser als Gerät an. Ich kann vom Windows-Host aus auf die SD-Karte zugreifen.

Ich bin nicht an Lösungen mit freigegebenen Ordnern interessiert, da ich als Hardware auf die SD-Karte zugreifen möchte (sie sollte in angezeigt werden /dev).

Grundsätzlich möchte ich die SD-Karte für BeagleBoard einrichten , aber ich möchte kein physisches Ubuntu auf meinem PC installieren.

Punit Soni
quelle
1
Hatten Sie Virtualbox-Gast-Addons installiert?
Tumchaaditya
1
Ich hatte das gleiche Problem. Die folgenden Lösungen haben bei mir funktioniert, waren aber zu unflexibel. Am Ende habe ich in einen "USB Micro SD Reader" investiert, der standardmäßig in der virtuellen Maschine angezeigt wird. Dadurch konnte ich die Karte ohne zusätzliche Maßnahmen ein- und ausstecken. Nur eine andere Perspektive auf die Lösung
TheMeaningfulEngineer

Antworten:

56

Auf neueren MacBook Pro wird der SD-Kartensteckplatz nicht mehr als USB-Gerät angezeigt. Aus diesem Grund müssen Sie das Raw-Gerät an die VM anschließen, um ungehinderten Zugriff auf die gesamte Karte zu erhalten. Die vollständige Dokumentation finden Sie im Abschnitt Advanced Storage Configuration (Erweiterte Speicherkonfiguration) der VirtualBox-Dokumentation.

Wie in den Dokumenten klar angegeben:

Warnung - Der Zugriff auf Raw-Festplatten ist nur für erfahrene Benutzer möglich. Eine falsche Verwendung oder Verwendung einer veralteten Konfiguration kann zu einem vollständigen Datenverlust auf der physischen Festplatte führen . Versuchen Sie vor allem nicht, die Partition mit dem aktuell ausgeführten Host-Betriebssystem in einem Gastsystem zu starten. Dies führt zu schwerwiegenden Datenbeschädigungen.

Als Kurzanleitung sind dies die Schritte, um das Gerät an eine Linux-VM anzuschließen:

  1. Identifizieren Sie das Raw Disk Block-Gerät auf Ihrem Host-System

    1. Setzen Sie die SD-Karte in den Steckplatz ein
    2. Öffnen Sie ein Terminal und geben Sie "mount" ein. Sie sehen die Ausgabe, die das gemountete Volume von Ihrer SD-Karte identifiziert. Auf meinem System bekomme ich folgendes

      $ mount
      /dev/disk1 on / (hfs, local, journaled)
      devfs on /dev (devfs, local, nobrowse)
      map -hosts on /net (autofs, nosuid, automounted, nobrowse)
      map auto_home on /home (autofs, automounted, nobrowse)
      /dev/disk2s1 on /Volumes/NO NAME (msdos, local, nodev, nosuid, noowners)`
      
    3. In meinem Fall ist das "NO NAME" -Volume die SD-Karte, also nehme ich das /dev/disk2s1Teil zur Kenntnis . In diesem speziellen Fall stellt der s1Teil eine Partition (Slice) auf dem Raw-Gerät dar, sodass der Teil, den wir später verwenden, nur der /dev/disk2Teil ist.

  2. Öffnen Sie das Festplatten-Dienstprogramm, und heben Sie die Bereitstellung des Volumes auf. Werfen Sie es nicht aus. Beachten Sie, dass Sie das Volume in den nächsten Schritten möglicherweise von Zeit zu Zeit aushängen müssen, da OSX es automatisch nach dem Zufallsprinzip wieder einbinden würde.
  3. Nun richten wir VirtualBox mit dem folgenden Befehl im Terminal so ein, dass das Raw-Gerät erkannt wird.

    1. Beachten Sie, dass das /path/to/file.vmdküberall abgelegt werden kann, obwohl es eine gute Idee ist, dies im Gast-VM-Ordner wie zu speichern~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Beachten Sie, dass der von -rawdiskuns verwendete Wert nicht auf die Partition (Slice) verweist, sondern nur auf das gesamte Blockgerät.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. Als Nächstes verbinden wir die Raw-Festplatte mit einer Gast-VM in der VirtualBox-Benutzeroberfläche

    1. Stellen Sie sicher, dass die Gast-VM nicht ausgeführt wird.
    2. Öffnen Sie den Einstellungsbereich für die Gast-VM
    3. Klicken Sie in der Symbolleiste auf "Speicher"
    4. Klicken Sie neben dem Controller auf das Symbol für "Festplatte hinzufügen".
    5. Wählen Sie "Vorhandenen Datenträger auswählen"
    6. Navigieren Sie zu dem /path/to/file.vmdkin Schritt 3 verwendeten Element und wählen Sie es aus
    7. Sie sollten nun zur Registerkarte "Speicher" zurückkehren und Ihre file.vmdkin der Liste sehen.
  5. Starten Sie die VM
  6. Je nachdem, ob Sie eine grafische Benutzeroberfläche haben oder nicht, wird die SD-Karte möglicherweise automatisch bereitgestellt oder nicht. Wenn Sie mounten müssen, wird es einfach als ein anderes Standard-Block-Gerät angezeigt. Auf meinem Gast wurde dies als / dev / sdb angezeigt.

Aktualisieren

Es scheint, dass einige Benutzer Probleme beim Zugriff auf das Raw-Gerät in Schritt 3.2 oder 4.6 haben. Versuche, einige der Befehle mit sudo auszuführen, helfen nicht, da VirtualBox als angemeldeter Benutzer ausgeführt wird und weiterhin nicht auf das Raw-Gerät oder die generierte vmdk-Datei zugreifen kann.

Die folgenden Schritte sollten helfen, obwohl ich sie nicht getestet habe.

  1. Überprüfen Sie, ob das Konto, das Sie unter OSX verwenden, über Administratorrechte im Abschnitt Systemeinstellungen / Benutzer verfügt. Es besteht eine gute Chance, dass dies auch das primäre Konto auf dem System sein sollte, damit der Raw-Gerätezugriff funktioniert.
  2. Überprüfen Sie die Raw-Festplattenberechtigungen

        $ ls -l /dev/disk2
        brw-r----- 1 jinn staff    14,  5 Aug 26 15:33 /dev/disk2
    

    Diese Berechtigungen müssen mit Ihrem aktuell angemeldeten Benutzerkonto übereinstimmen:

        $ id
        uid=501(jinn) gid=20(staff) ...snip...
    

    Die Berechtigungen für das Gerät sollten auch Ihrem normalen Benutzerkonto ermöglichen, auf dieses Gerät zu lesen (r) und zu schreiben (w). ÄNDERN SIE NICHT DIE ERLAUBNISSE DES GERÄTS, WENN SIE NICHT UNBEDINGT WISSEN, WAS SIE TUN.


Update Nr. 2

Es stellte sich heraus, dass OSX Mountain Lion das Gerät mit den Berechtigungen "root: operator" und 0640-Berechtigungen erstellt hat. Leider besteht die einzige Möglichkeit, auf dieses Gerät zuzugreifen, darin, Ihrem aktuellen Benutzer bei jedem Einfügen des Geräts "sudo chown $ USER" mitzuteilen. Dies wird jedoch nicht empfohlen, es sei denn, Sie verstehen wirklich, was Sie tun. Hoffentlich finden entweder Apple oder VirtualBox eine geeignetere Lösung.

JinnKo
quelle
2
In Mountain Lion habe diskarbitrationd Montagepartition von SD-Karte, um dies zu stoppen:$ sudo launchctl list | grep diskarbitrationd 188 - com.apple.diskarbitrationd $ sudo kill -SIGSTOP 188 # pauses diskarbitrationd, disabling automount $ sudo kill -SIGCONT 188 # resumes diskarbitrationd, reenabling automount
ıɾuǝʞ
1
Danke @kenji, das ist ein zusätzlicher toller Tipp für Benutzer von Mtn Lion (ich habe selbst ein bisschen mit dem Problem des automatischen Einbaus zu kämpfen). Meine ausführlichen Anweisungen in den VirtualBox-Foren würden von diesem Tipp profitieren. Ich werde dort und unten einen Link zu Ihrem Kommentar hinzufügen. Danke noch einmal.
Likethesky
1
Ich habe diese Anleitung befolgt, hatte aber Berechtigungsprobleme. Dann habe ich einen chmod 777 auf dem Gerät durchgeführt und es hat einwandfrei funktioniert. Weitere Details hier: balage.blogs.balabit.com/2010/10/…
Samantha Catania
2
Ich habe RESOURCE_BUSY erhalten, als ich versuchte, das Image als Festplatte zur Virtual Box hinzuzufügen. Mir ist aufgefallen, dass OSX die SD-Kartenpartitionen neu gemountet hat. Erzwingen Sie das Aufheben des Ladevorgangs, indem Sie Folgendes in Terminal (Auf dem Host)sudo diskutil unmountDisk /dev/<disk path>
Rob
1
Ich kann bestätigen, dass man 1) die Bereitstellung aufheben muss 2) die virtuelle Festplatte erstellen muss 3) die Bereitstellung wieder aufheben muss 5) der VM hinzufügen muss 6) die Bereitstellung erneut aufheben muss 7) die VM starten. - @JinnKo: kannst du das zur Antwort hinzufügen? oder kann ich
Erik Allik
42

Antwort für Windows-Benutzer

  1. Holen Sie sich die Geräte-ID Ihres SD-Kartenlesers.

    Sie benötigen eine Karte im Laufwerk, die von Windows eingehängt wird.

    Geben Sie diesen Befehl ein

    wmic diskdrive list brief
    

    Es sollte ungefähr so ​​aussehen:

    C:\Users\Sandy Scott>wmic diskdrive list brief
    Caption                      DeviceID            Model                        Partitions  Size
    WDC WD7500BPKT-75PK4T0       \\.\PHYSICALDRIVE0  WDC WD7500BPKT-75PK4T0       3           750153761280
    O2Micro SD SCSI Disk Device  \\.\PHYSICALDRIVE1  O2Micro SD SCSI Disk Device  1           3964584960
    

    Das letzte Gerät ist der SD-Kartenleser, also die DeviceID \\.\PHYSICALDRIVE1

  2. Erstellen Sie die Verbindungsdatei zur SD-Karte

    Öffnen Sie ein Befehlsfenster als Administrator

    "C:\Program Files\Oracle\VirtualBox\VBoxManage" internalcommands createrawvmdk -filename "%USERPROFILE%/Desktop/sdcard.vmdk" -rawdisk "\\.\PHYSICALDRIVE1"
    

    Dies setzt den Standardinstallationspfad voraus - ändern Sie ihn bei Bedarf. (Stellen Sie sicher, dass das Argument rawdisk in Anführungszeichen steht.)

    Die .vmdk-Datei ist ein Link zur SD-Karte. Sie können sie an einer beliebigen Stelle auf Ihrem Host-System ablegen. Mit diesem Befehl wird sie jedoch nur zur Vereinfachung auf Ihrem Desktop abgelegt.

  3. Befolgen Sie die Schritte 4 bis 6 in der Antwort von JinnKo. Die einzige kleine Änderung ist, dass Sie VirtualBox als Administrator starten müssen

  1. Als Nächstes verbinden wir die Raw-Festplatte mit einer Gast-VM in der VirtualBox-Benutzeroberfläche
    1. Stellen Sie sicher, dass die Gast-VM ausgeschaltet ist.
    2. Stellen Sie sicher, dass VirtualBox nicht ausgeführt wird
    3. Starten Sie VirtualBox, indem Sie mit der rechten Maustaste darauf klicken und "Als Administrator ausführen" auswählen.
    4. Öffnen Sie den Einstellungsbereich für die Gast-VM
    5. Klicken Sie in der Symbolleiste auf "Speicher"
    6. Klicken Sie neben dem Controller auf das Symbol für "Festplatte hinzufügen".
    7. Wählen Sie "Vorhandenen Datenträger auswählen"
    8. Navigieren Sie zu dem /path/to/file.vmdkin Schritt 3 verwendeten Element und wählen Sie es aus
    9. Sie sollten nun zur Registerkarte "Speicher" zurückkehren und Ihre file.vmdkin der Liste sehen.
  2. Starten Sie die VM
  3. Je nachdem, ob Sie eine grafische Benutzeroberfläche haben oder nicht, wird die SD-Karte möglicherweise automatisch bereitgestellt oder nicht. Wenn Sie mounten müssen, wird es einfach als ein anderes Standard-Block-Gerät angezeigt. Auf meinem Gast wurde dies als / dev / sdb angezeigt.
Sandyscott
quelle
Für den Fall, dass Sie dies versuchen, cygwinachten Sie auf die Escape-Zeichen. Ich habe nicht die richtige cygwinLösung gefunden, aber festgestellt, dass der Befehl, der ausgeführt wird, cmdnicht ausgeführt wird cygwin.
TheMeaningfulEngineer
Wenn ich VirtualBox als Administrator starte, werden meine Computer nicht angezeigt und können ihre Einstellungen nicht ändern. Der Grund ist wahrscheinlich, dass ich kein Administrator bin, da ich mit Links in freigegebenen Ordnern arbeite, die dies erfordern. Nachdem ich meinen Kontotyp in Administrator geändert und das SD-Karten-Laufwerk hinzugefügt und VirtualBox als Administrator ausgeführt habe, kann ich den Anmeldebildschirm nicht verlassen. Ich habe das Problem in Syslog nicht gefunden. Erst wenn das SD-Karten-Laufwerk wieder entfernt wird, kann ich mich auch anmelden, wenn VirtualBox als Administrator ausgeführt wird, aber natürlich sehe ich dann die SD-Karte nicht. Also funktioniert es bei mir nicht. :(
Frank Breitling
7

Die Erweiterungen fehlen höchstwahrscheinlich, wenn Ihr SD-Reader Ihren USB-Controller verwendet.

Bildbeschreibung hier eingeben

Folgen Sie unter Datei> Einstellungen dem Bild. Fügen Sie die heruntergeladene Erweiterung hinzu und verweisen Sie darauf.

Bildbeschreibung hier eingeben

Starten Sie Ihre virtuelle Maschine neu und Sie sollten Zugriff auf USB-Geräte haben.

Kobaltz
quelle
Hallo, ich habe diese Lösung ausprobiert und das Virtualbox Extension Pack installiert, aber immer noch keinen Erfolg. Ich mache dies in MacBook, wenn das einen Unterschied macht. Außerdem wird der SD-Kartenleser in meinem MacBook-System-Profiler nicht unter USB-Geräten aufgeführt, sondern als separate Kategorie namens "Kartenleser". Außerdem kann ich in virtualbox die Geräte sehen, die unter USB aufgelistet sind.
Punit Soni
4

Auf neueren MacBook Pro wird der SD-Kartensteckplatz nicht mehr als USB-Gerät angezeigt

Um dieses Problem zu lösen, können Sie anstelle des eingebauten Kartenlesers einfach einen externen USB-Speicherkartenleser (dh einen SD- Karte-zu-USB-Adapter) verwenden. Es wird Ihre SD-Karte als USB-Gerät verfügbar machen, so dass Sie sie einfach wie jedes USB-Gerät einbinden können. Sie sind billige Geräte und eine akzeptable Lösung, wenn man den ganzen Aufwand in die andere Richtung betrachtet.

Ahmet
quelle
Dies ist die klügste Idee aller Zeiten, danke! Ich hatte sogar einen USB-Kartenleser herumliegen, wusste aber nicht, dass ich es verwenden könnte.
5.
4

Ich benutze Kubuntu 15.04, VirtualBox 4.3.26

Dies setzt voraus, dass das SD-Kartengerät /dev/mmcbl0und die Ausgabe-DVD Folgendes sind sd-card.vmk:

sudo VBoxManage internalcommands createrawvmdk -filename ./sd-card.vmdk -rawdisk /dev/mmcblk0

Ich bin mir nicht sicher, ob dies der beste Weg ist, um Berechtigungen zu reparieren, aber es hat funktioniert:

sudo chmod 777 /dev/mmcblk0
sudo chmod 777 ./sd-card.vmdk

Gehen Sie nun zu den VM-Einstellungen, wählen Sie Storage, klicken Sie auf Controller: Sata, klicken Sie auf das Symbol für Add Hard Disk, wählen Sie Ihre .vdk (in diesem Fall sd-card.vmdk)

Bogdan
quelle
3

Ich hatte viele Probleme, die Lösung von JinnKo zum Laufen zu bringen, hauptsächlich, weil ich mich auf Mountain Lion (OS X 10.8) befand ... Aber mit seiner freundlichen Unterstützung habe ich die Probleme gelöst.

Die vollständige Lösung finden Sie hier .

Das Wesentliche meiner Lösung für Mountain Lion-Benutzer ist jedoch das Folgende (verwenden Sie die obigen Schritte von JinnKo, fügen Sie jedoch meinen Schritt hier ein, bevor Sie den Befehl 'VBoxManage internalcommands createrawvmdk [...]' ausführen (d. H. Zwischen seinen Befehlen) Schritte 2 & 3):

** Besonders für Mtn Lion ** Stellen Sie sicher, dass Sie der Besitzer dieses Geräts sind. Am 10.8 Mtn Lion werden Sie wahrscheinlich feststellen, dass Sie es nicht sind. Überprüfen Sie es, indem Sie Folgendes tun:

ls -l /dev/disk*

Mit dem '*' sehen Sie ALLE Ihre Festplattengeräte. Sie können auch Folgendes tun: ls -l / dev / diskX, um nur 'X' zu sehen. Ich habe zum Beispiel Folgendes getan:

ls -l /dev/disk5

Auf Mtn Lion (10.8.x) sehen Sie etwas wie:

brw-r----- 1 root operator 1, <today's date/time> /dev/diskX

Wobei "X" Ihre Gerätenummer ist, wie die "5" in / dev / disk5 ...

Auf Lion (10.7.x), Snow Leopard (10.6.x) oder vielleicht früheren Versionen von OS X werden Sie - wenn Ihr Benutzername "brad" ist - wahrscheinlich Folgendes sehen:

brw-r----- 1 brad operator 1, <today's date/time> /dev/diskX

Wobei 'X' Ihre Gerätenummer ist, wie die '5' in / dev / disk5 ... Wenn Sie der Besitzer sind, ist alles in Ordnung, hier nichts zu tun, fahren Sie mit dem nächsten Schritt fort, d. H. Dem Schritt createrawvmdk ( in @JinnKos tollen Anweisungen oben).

Wenn Sie nicht der Eigentümer sind (aber "root" oder ein anderer Benutzer ist), gehen Sie entweder (a) als dieser Administrator-Benutzer anmelden oder (b) wie folgt vor (stellen Sie erneut sicher , dass Sie die richtige Gerätenummer / den richtigen Buchstaben verwenden Hier!):

* ACHTUNG * Das Folgende ist nur für diejenigen gedacht , die das Risiko eingehen möchten , Daten auf ihrer Festplatte oder ihrem Flash-Speicher permanent zu zerstören. DO NOT dies tun , wenn Sie nicht sicher sind , Sie wissen , was Sie tun:

sudo chown <your username> /dev/disk5
sudo chown <your username> /dev/disk5s1

* ACHTUNG * DO NOT dies tun , wenn Sie nicht sicher sind , Sie wissen , was Sie tun. Das obige gilt nur für diejenigen, die das Risiko eingehen möchten, Daten auf ihrer Festplatte oder ihrem Flash-Speicher permanent zu zerstören.

Sie müssen dies für ALLE Ihre Slices tun (s1, s2, s3, ... wie viele es auch gibt). Zum Beispiel ist mein Benutzername 'brad', also habe ich:, sudo chown brad /dev/disk5dann sudo chown brad /dev/disk5s1, für s2und s3(da ich bereits 3 Partitionen oder Slices hatte).

Wenn Sie die SD-Karte nicht partitioniert haben, müssen Sie sie möglicherweise nur sudo chown <your username> /dev/diskXeinmal ausführen (ohne die Slices / Partitionen auszuführen).

Hoffe, dies hilft einigen anderen armen Mtn Lion-Nutzern da draußen!

likethesky
quelle
Hervorragende Lösung. Ohne dieses Schreiben wäre ich verloren gegangen. Vielen Dank!
ggutenberg
1

Es ist mir bisher nicht gelungen, eine Möglichkeit zu finden, dies direkt zu tun, selbst mit einem USB-Kartenleser (der die Karte /dev/dm-1eher einsteckt als erwartet /dev/mmcblk1).

Meine Aufgabe bestand darin, in VirtualBox ein virtuelles Laufwerk mit 4 GB zu erstellen. Dies könnte dann (als /dev/sdb) eine Installation von BeagleBoard Ubuntu erfordern, wie dokumentiert.

Ich habe dann die VM heruntergefahren, sie in eine RAW-DD-Datei konvertiert und mithilfe von DD auf der Karte abgelegt: (auf dem Host-Mac):

VBoxManage clonehd UbuntuBeagleImage.vdi UbuntuBeagleImage.dd --format RAW
sudo dd if=UbuntuBeagleImage.dd of=/dev/rdisk(NUMBER) bs=1m

( /dev/disk2in meinem Fall, aber dreimaliges Überprüfen als falsch könnte Ihr Festplattenlaufwerk kaputt machen).

Der ddBefehl dauerte ca. 1 Std. 20 Min.!

Ich hoffe das hilft. Ich arbeite immer noch an einem einfacheren und schnelleren Weg - wir sollten keine 4 GB Daten für 600 MB Betriebssystem übertragen müssen.

Reich
quelle
0

Für mich war die Lösung Einschalt-USB - Gerät mit SD-Karte, mit
Devices -> USB devices ->My card reader,
und nach wenigen Sekunden neue Festplatten erscheinen in meiner VM.

Ich habe zuvor VirtualBox Extensions Pack installiert.

Zdzisiek
quelle
0

Ich habe die "Virtual Box Guest Additons CD" -Dateien installiert, aber mein SD-Kartenleser wurde in meiner virtuellen Windows XP-Maschine nicht angezeigt. Ich konnte Mine zum Laufen bringen ermöglicht das USB - Gerät in Virtual Box und dann Neustarten die virtuelle Maschine.

Skibulk
quelle
0

Wie Kobaltz erwähnt. Um die USB 2.0- und 3.0-Versionen zu unterstützen, müssen Sie das Virtual Extension Pack installieren. Ich habe das Oracle VM VirtualBox Extension Pack 5.2.22 installiert und Sie können es von der Virtual Box-Downloadseite herunterladen. Sobald Sie die Datei heruntergeladen haben, können Sie sie direkt installieren. Diese Datei wird auch Ihren Virtual Box-Erweiterungen hinzugefügt.

Bildbeschreibung hier eingeben

Sie sollten Ihre SD-Karte auch zu den Gerätefiltern in unserer Virtual Box hinzufügen. Gehen Sie dazu zu Einstellungen -> USB -> Klicken Sie auf die Option SD-Karte hinzufügen.

Bildbeschreibung hier eingeben

Nun können Sie Ihre SD-Karte in den Filtern ablegen.

Bildbeschreibung hier eingeben

Gehen Sie zu den Dateien und sehen Sie die Ordner der SD-Karte (ich verwende Ubuntu Linux Distribution)

Bildbeschreibung hier eingeben

Sibeesh Venu
quelle
0

Für alle, die MacOS verwenden und die vorherigen Antworten befolgen, wenn Sie aufgrund von Berechtigungsproblemen immer noch nicht auf die SD-Karte zugreifen können:

starte virtualbox mit sudo wird es lösen.

sudo VirtualBox

Beachten Sie, dass der Pfad zu den VM-Dateien unterschiedlich ist. In meinem Fall ist dies:

/private/var/root/VirtualBox\ VMs/$VM_NAME/

Wenn dies immer noch nicht funktioniert, ändern Sie den Besitzer und den Zugriff auf die SD-Karte in Ihr Benutzerkonto bzw. 666.

Pengyuan Zhou
quelle