Come accedere a una scheda SD da una macchina virtuale?


64

Voglio formattare una scheda SD dalla mia macchina virtuale Linux. Ho un lettore di schede SD incorporato nel mio laptop. Ho provato a utilizzare VirtualBox e VMware Player e ho installato Ubuntu 10.04 guest. Nessuno di loro mostra il lettore di schede SD come dispositivo. Posso accedere alla scheda SD dall'host di Windows.

Non mi interessano le soluzioni che utilizzano cartelle condivise in quanto desidero accedere alla scheda SD come hardware (dovrebbe apparire in /dev).

Fondamentalmente voglio configurare la scheda SD per BeagleBoard , ma non voglio installare un Ubuntu fisico sul mio PC.


1
Avevi installato componenti aggiuntivi guest virtualbox?
tumchaaditya,

1
Ho avuto lo stesso problema. Le soluzioni seguenti hanno funzionato per me ma sono state poco flessibili. Ho finito per investire in un "lettore Micro SD USB" che compare per impostazione predefinita nella macchina virtuale. Questo mi ha permesso di collegare e scollegare la scheda senza ulteriori azioni. Solo un'altra prospettiva sulla soluzione
TheMeaningfulEngineer,

Risposte:


56

Sui più recenti MacBook Pro, lo slot per schede SD non è più esposto come dispositivo USB. Per questo motivo è necessario collegare il dispositivo non elaborato alla VM per ottenere l'accesso non elaborato all'intera scheda. La documentazione completa si trova nella sezione Configurazione archiviazione avanzata della documentazione di VirtualBox.

Come indicato chiaramente nei documenti:

Avviso : l'accesso al disco rigido non elaborato è riservato a utenti esperti. L'uso errato o l'uso di una configurazione obsoleta può portare alla totale perdita di dati sul disco fisico . Ancora più importante, non tentare di avviare la partizione con il sistema operativo host attualmente in esecuzione in un guest. Ciò porterà a una grave corruzione dei dati.

Come guida rapida, questi sono i passaggi per collegare il dispositivo a una macchina virtuale Linux:

  1. Identifica il dispositivo di blocco del disco non elaborato sul tuo sistema host

    1. Inserire la scheda SD nello slot
    2. Apri un Terminale e digita "mount". Vedrai l'output che identifica il volume montato dalla tua scheda SD. Sul mio sistema ottengo quanto segue

      $ 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. Nel mio caso il volume "NO NAME" è la scheda SD, quindi prendo atto della /dev/disk2s1parte. In questo caso particolare la s1parte rappresenta una partizione (slice) sul dispositivo grezzo, quindi la parte che useremo in seguito è solo la /dev/disk2parte.

  2. Apri Utility Disco e "Smonta" il volume. Non "espellerlo". Si noti che potrebbe essere necessario smontare il volume di tanto in tanto durante i passaggi successivi, poiché ho scoperto che OSX lo rimonterebbe automaticamente in modo casuale.
  3. Ora configuriamo VirtualBox per essere a conoscenza del dispositivo grezzo con il seguente comando nel Terminale.

    1. Si noti che /path/to/file.vmdkpuò essere posizionato ovunque, sebbene sia una buona idea archiviarlo nella cartella VM guest come~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Si noti che il -rawdisknostro utilizzo non fa riferimento alla partizione (slice) ma solo al dispositivo a blocchi nel suo insieme.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. Quindi colleghiamo il disco non elaborato a una macchina virtuale guest nell'interfaccia utente di VirtualBox

    1. Assicurarsi che la VM guest non sia in esecuzione.
    2. Aprire l'area delle impostazioni per la VM guest
    3. Fai clic su "Archiviazione" nella barra degli strumenti
    4. Accanto al controller fai clic sull'icona per "Aggiungi disco rigido"
    5. Seleziona "Scegli disco esistente"
    6. Passare a quello /path/to/file.vmdkutilizzato nel passaggio 3 e selezionarlo
    7. Ora dovresti tornare alla scheda Archiviazione e vedere il tuo file.vmdknell'elenco.
  5. Avvia la VM
  6. A seconda che tu abbia o meno una GUI, la scheda SD può o meno montare automaticamente. Se devi montare manualmente è semplicemente esposto come un altro dispositivo a blocchi standard, quindi sul mio guest questo è stato esposto come / dev / sdb.

Aggiornare

Sembra che alcune persone potrebbero avere problemi con l'accesso al dispositivo raw nel passaggio 3.2 o 4.6. I tentativi di eseguire alcuni dei comandi con sudo non aiuteranno poiché VirtualBox verrà eseguito come utente connesso e non sarà comunque in grado di accedere al dispositivo raw correttamente o al file vmdk generato.

I seguenti passaggi dovrebbero aiutare, anche se non li ho testati.

  1. Verifica che l'account che stai utilizzando su OSX disponga dei privilegi di amministratore nella sezione Preferenze di sistema / Utenti. Ci sono buone probabilità che dovrebbe anche essere l'account principale sul sistema per consentire l'accesso al dispositivo non elaborato.
  2. Controlla le autorizzazioni del disco grezzo

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

    Queste autorizzazioni devono corrispondere al tuo account utente attualmente connesso:

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

    Le autorizzazioni sul dispositivo dovrebbero inoltre consentire al tuo normale account utente di leggere (r) e scrivere (w) su questo dispositivo. NON CAMBIARE LE AUTORIZZAZIONI SUL DISPOSITIVO A MENO CHE NON LO ASSOLUTAMENTE SAPERE COSA STAI FACENDO.


Aggiornamento n. 2

Viene fuori che OSX Mountain Lion ha creato il dispositivo con privilegi "root: operator" e autorizzazioni 0640. Purtroppo per ora l'unico modo per ottenere l'accesso a questo dispositivo è "sudo chown $ USER" per l'utente corrente ogni volta che si inserisce il dispositivo, tuttavia questo non è raccomandato a meno che non si capisca veramente cosa si sta facendo. Speriamo che Apple o VirtualBox trovino una soluzione più adatta.


2
In Mountain Lion, ho ottenuto la partizione di montaggio diskarbitrationd da sdcard, per fermare questo:$ 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
Grazie @kenji, questo è un ottimo suggerimento aggiuntivo per gli utenti di Mtn Lion (ho lottato un po 'con il problema dell'automount). Le mie istruzioni dettagliate sui forum di VirtualBox trarrebbero beneficio da questo suggerimento; Aggiungerò un link al tuo commento lì e sotto. Grazie ancora.
likethesky,

1
Ho seguito questa guida ma ho avuto problemi di autorizzazione, ho quindi preformato un chmod 777 sul dispositivo e ha funzionato bene. Maggiori dettagli qui: balage.blogs.balabit.com/2010/10/…
Samantha Catania,

2
Ho ottenuto RESOURCE_BUSY quando ho provato ad aggiungere l'immagine come disco rigido alla Virtual Box. Ho notato che OSX ha rimontato le partizioni della scheda SD. Forzali a smontare digitando quanto segue nel Terminale (Sull'host)sudo diskutil unmountDisk /dev/<disk path>
Rob

1
Posso confermare che è necessario 1) smontare 2) chown 3) creare disco virtuale 4) smontare di nuovo 5) aggiungere a VM 6) smontare DI NUOVO 7) avviare la VM. - @JinnKo: puoi aggiungerlo alla risposta? o posso?
Erik Allik,

42

Risposta per utenti Windows

  1. Ottieni il DeviceID del tuo lettore di schede SD.

    Avrai bisogno di una scheda nell'unità, montata da Windows.

    Immettere questo comando

    wmic diskdrive list brief
    

    Dovrebbe assomigliare a qualcosa di simile a questo:

    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
    

    L'ultimo dispositivo è il lettore di schede SD, quindi lo è DeviceID \\.\PHYSICALDRIVE1

  2. Creare il file di collegamento sulla scheda SD

    Apri un comando windows come amministratore

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

    Ciò presuppone il percorso di installazione predefinito: modificarlo se necessario. (Assicurati che le virgolette siano attorno all'argomento rawdisk.)

    Il file .vmdk è un collegamento alla scheda SD, puoi metterlo ovunque sul tuo sistema host, ma questo comando lo mette semplicemente sul tuo desktop per comodità.

  3. Segui i passaggi 4-6 nella risposta di JinnKo, l'unico piccolo accenno è che devi avviare VirtualBox come amministratore

  1. Quindi colleghiamo il disco non elaborato a una macchina virtuale guest nell'interfaccia utente di VirtualBox
    1. Assicurarsi che la VM guest sia spenta.
    2. Assicurarsi che VirtualBox non sia in esecuzione
    3. Avvia VirtualBox facendo clic con il tasto destro su di esso e selezionando "Esegui come amministratore"
    4. Aprire l'area delle impostazioni per la VM guest
    5. Fai clic su "Archiviazione" nella barra degli strumenti
    6. Accanto al controller fai clic sull'icona per "Aggiungi disco rigido"
    7. Seleziona "Scegli disco esistente"
    8. Passare a quello /path/to/file.vmdkutilizzato nel passaggio 3 e selezionarlo
    9. Ora dovresti tornare alla scheda Archiviazione e vedere il tuo file.vmdknell'elenco.
  2. Avvia la VM
  3. A seconda che tu abbia o meno una GUI, la scheda SD può o meno montare automaticamente. Se devi montare manualmente è semplicemente esposto come un altro dispositivo a blocchi standard, quindi sul mio guest questo è stato esposto come / dev / sdb.

Nel caso in cui tu stia cercando di ottenerlo con l' cygwinorologio per i personaggi di escape. Non ho trovato la cygwinsoluzione corretta ma ho notato che il comando che funziona cmdnon funziona cygwin.
TheMeaningfulEngineer,

Quando avvio VirtualBox come amministratore non vedo i miei computer e quindi non posso modificarne le impostazioni. Il motivo è probabilmente che non sono un utente amministratore perché sto lavorando con collegamenti in cartelle condivise che lo richiedono. Dopo aver cambiato il tipo di account in amministratore e aver aggiunto l'unità sdcard e aver eseguito VirtualBox come amministratore, non riesco a superare la schermata di accesso. Non ho trovato il problema in syslog. Solo quando l'unità sdcard viene rimossa di nuovo, posso anche accedere quando eseguo VirtualBox come amministratore, ma ovviamente non vedo la scheda SD. Quindi non funziona per me. :(
Frank Breitling,

7

Probabilmente ti mancano le estensioni se il tuo lettore SD utilizza il controller USB.

inserisci qui la descrizione dell'immagine

In File> Preferenze, segui l'immagine. Aggiungi e punta all'estensione scaricata.

inserisci qui la descrizione dell'immagine

Riavvia la tua macchina virtuale e dovresti avere accesso ai dispositivi USB.


Ciao, ho provato questa soluzione e ho installato il pacchetto di estensione virtualbox ma non ho ancora avuto successo. Lo sto facendo su MacBook se questo fa la differenza. Inoltre, nel mio profiler di sistema macbook, il lettore di schede SD non è elencato sotto i dispositivi USB ma come una categoria separata chiamata "lettore di schede". Inoltre, sono in grado di vedere i dispositivi elencati sotto USB in virtualbox.
Punit Soni,

4

Sui più recenti MacBook Pro, lo slot per schede SD non è più esposto come dispositivo USB

Per ovviare a questo problema, è sufficiente utilizzare un lettore di schede di memoria USB esterno (ad es. Adattatore da scheda SD a USB) anziché un lettore di schede incorporato. Esporrà la tua scheda SD come dispositivo USB in modo da poterla montare facilmente come qualsiasi dispositivo USB. Sono dispositivi economici e sarebbero una soluzione accettabile considerando tutta la seccatura nell'altro modo.


Questa è l'idea più intelligente di sempre, grazie! Avevo persino un lettore di schede USB in giro ma non mi rendevo conto di poterlo usare.
marco.m

4

Sto usando Kubuntu 15.04, VirtualBox 4.3.26

Ciò presuppone che il dispositivo con scheda SD sia /dev/mmcbl0e l'output .vdk sarà sd-card.vmk:

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

Non sono sicuro che sia il modo migliore per correggere le autorizzazioni, ma ha funzionato:

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

Ora vai alle Impostazioni VM, seleziona Archiviazione, fai clic su Controller: Sata, fai clic sull'icona Aggiungi disco rigido, seleziona il tuo .vdk (sd-card.vmdk in questo caso)


3

Ho avuto molti problemi a far funzionare la soluzione di JinnKo, principalmente a causa del mio essere su Mountain Lion (OS X 10.8) ... Ma con la sua gentile assistenza, ho risolto i problemi.

La soluzione completa è dettagliata qui .

Tuttavia, l'essenza della mia soluzione - per gli utenti di Mountain Lion - è la seguente (utilizzare i passaggi precedenti di JinnKo, ma inserire il mio passaggio qui prima di eseguire il comando 'VBoxManage internal commands createrawvmdk [...]' (ovvero tra passaggi 2 e 3):

** In particolare per Mtn Lion ** Assicurati di essere il proprietario di questo dispositivo. Su 10.8 Mtn Lion, probabilmente scoprirai di non esserlo. Controllalo facendo:

ls -l /dev/disk*

Con '*' vedrai TUTTI i tuoi dispositivi disco, puoi anche fare: ls -l / dev / diskX per vedere solo 'X', per esempio, ho fatto:

ls -l /dev/disk5

Su Mtn Lion (10.8.x) vedrai qualcosa del tipo:

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

Dove "X" è il numero del tuo dispositivo, come "5" in / dev / disk5 ...

Su Lion (10.7.x), Snow Leopard (10.6.x) o forse versioni precedenti di OS X, vedrai - se il tuo nome utente è "brad" - probabilmente vedrai qualcosa di simile:

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

Dove 'X' è il numero del tuo dispositivo, come il '5' in / dev / disk5 ... Se sei il proprietario, allora va tutto bene, niente da fare qui, vai al passaggio successivo, ovvero il passaggio createrawvmdk ( nelle ottime istruzioni di @JinnKo sopra).

Se non sei il proprietario (ma "root" o qualche altro utente lo è), quindi (a) accedi come tale utente amministratore o (b) procedi come segue (di nuovo, assicurati di utilizzare il numero / lettera corretto del dispositivo Qui!):

* ATTENZIONE * Quanto sotto è solo per coloro che vogliono rischiare di distruggere permanentemente i dati sul proprio disco rigido o unità di archiviazione flash. DO NOT fare questo se non siete sicuri di sapere cosa si sta facendo:

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

* ATTENZIONE * DO NON fare questo se non siete sicuri di sapere cosa si sta facendo. Quanto sopra è solo per coloro che vogliono rischiare di distruggere permanentemente i dati sul proprio disco rigido o unità di archiviazione flash.

Dovrai farlo per TUTTE le tue sezioni (s1, s2, s3, ... per quanto ce ne siano molte). Ad esempio, il mio nome utente è 'brad', quindi l'ho fatto:, sudo chown brad /dev/disk5quindi sudo chown brad /dev/disk5s1, poi per s2e s3(dato che avevo già 3 partizioni o sezioni esistenti).

Se non hai partizionato la scheda SD, potrebbe essere necessario eseguire sudo chown <your username> /dev/diskXuna sola volta (senza eseguire alcuna delle sezioni / partizioni)

Spero che questo aiuti alcuni altri poveri utenti di Mtn Lion là fuori!


Soluzione eccellente Sarei stato perso senza questo scrivere. Grazie mille!
Ggutenberg,

1

Finora non sono riuscito a trovare un modo per farlo direttamente, anche con un lettore di schede USB (ha messo la scheda /dev/dm-1anziché il previsto /dev/mmcblk1).

Il mio workround era creare un'unità virtuale da 4 GB in VirtualBox. Questo potrebbe quindi (come /dev/sdb) richiedere un'installazione di BeagleBoard Ubuntu come documentato.

Quindi ho spento la VM, l'ho convertita in un file DD RAW e ho usato DD per metterlo sulla scheda: (sul Mac host):

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

( /dev/disk2nel mio caso, ma il tripleckeck come sbagliare potrebbe danneggiare il disco rigido).

Il ddcomando è durato circa 1 ora e 20 minuti!

Spero che questo possa essere d'aiuto. Sto ancora lavorando per un modo più semplice e rapido: non dovremmo aver bisogno di trasferire 4 GB di dati per 600 MB di sistema operativo.


0

Per me la soluzione era quella di turn-on dispositivo USB con scheda SD, utilizzando
Devices -> USB devices ->My card reader,
e dopo pochi secondi nuovi dischi appaiono nel mio VM.

Prima ho installato VirtualBox Extensions Pack.


0

Ho installato i file "CD Virtual Additons Additons", ma il mio lettore di schede SD non veniva visualizzato nella mia macchina virtuale Windows XP. Sono stato in grado di far funzionare il mio abilitando il dispositivo USB in Virtual Box e quindi riavviando la macchina virtuale.


0

Come menzionato Kobaltz. Per supportare le versioni USB 2.0 e 3.0 è necessario installare il Virtual Extension Pack, ho installato il 5.2.22 Oracle VM VirtualBox Extension Pack e puoi scaricarlo dalla pagina di download di Virtual Box. Una volta scaricato il file, puoi andare direttamente avanti e installarlo, lo stesso verrà aggiunto alle estensioni della tua Virtual Box.

inserisci qui la descrizione dell'immagine

Dovresti anche aggiungere la tua scheda SD ai filtri del dispositivo nella nostra Virtual Box, vai su Impostazioni -> USB -> Fai clic sull'opzione Aggiungi scheda SD allegata.

inserisci qui la descrizione dell'immagine

Ora sarai in grado di accedere alla tua scheda SD nei filtri.

inserisci qui la descrizione dell'immagine

Vai ai File e vedi le cartelle della scheda SD (io uso Ubuntu Linux Distribution)

inserisci qui la descrizione dell'immagine


0

Per chiunque utilizzi macos e segua le risposte precedenti, se non riesci ancora ad accedere alla scheda SD a causa di problemi di autorizzazione,

eseguire virtualbox con sudo lo risolverà.

sudo VirtualBox

Si noti che il percorso dei file VM è diverso, nel mio caso è:

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

Se il problema persiste, cambia il proprietario e l'accesso al disco della scheda SD, rispettivamente sul tuo account utente e 666.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.