Comment accéder à une carte SD à partir d'une machine virtuelle?


64

Je souhaite formater une carte SD à partir de ma machine virtuelle Linux. J'ai un lecteur de carte SD intégré dans mon ordinateur portable. J'ai essayé d'utiliser VirtualBox et VMware Player et installé l'invité Ubuntu 10.04. Aucun d’entre eux n’affiche le lecteur de carte SD en tant que périphérique. Je peux accéder à la carte SD à partir de l'hôte Windows.

Je ne suis pas intéressé par les solutions utilisant des dossiers partagés, car je souhaite accéder à la carte SD en tant que matériel (cela devrait apparaître dans /dev).

En gros, je souhaite configurer la carte SD pour BeagleBoard , mais je ne souhaite pas installer Ubuntu physique sur mon PC.


1
Aviez-vous installé des addons d'invité virtualbox?
tumchaaditya

1
J'ai eu le même problème. Les solutions ci-dessous ont fonctionné pour moi mais étaient trop rigides. J'ai fini par investir dans un "lecteur USB Micro SD" qui apparaît par défaut dans la machine virtuelle. Cela m'a permis de brancher et de débrancher la carte sans actions supplémentaires. Juste un autre point de vue sur la solution
TheMeaningfulEngineer

Réponses:


56

Sur les MacBook Pro récents, le logement pour carte SD n'est plus exposé en tant que périphérique USB. Pour cette raison, vous devrez connecter le périphérique brut à la machine virtuelle afin d'obtenir un accès brut à l'ensemble de la carte. La documentation complète se trouve dans la section Configuration de stockage avancée de la documentation de VirtualBox.

Comme indiqué clairement dans la documentation:

Avertissement - L’accès au disque dur brut est réservé aux utilisateurs experts. L'utilisation incorrecte ou l'utilisation d'une configuration obsolète peut entraîner une perte totale des données sur le disque physique . Plus important encore, n'essayez pas de démarrer la partition avec le système d'exploitation hôte en cours d'exécution dans un invité. Cela conduira à une grave corruption des données.

Comme guide rapide, voici les étapes à suivre pour connecter le périphérique à une machine virtuelle Linux:

  1. Identifiez le périphérique de bloc de disque brut sur votre système hôte

    1. Insérez la carte SD dans la fente
    2. Ouvrez un terminal et tapez "mount". Vous verrez une sortie identifiant le volume monté à partir de votre carte SD. Sur mon système, je reçois ce qui suit

      $ 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. Dans mon cas, le volume "NO NAME" est la carte SD, je prends donc note de la /dev/disk2s1partie. Dans ce cas particulier, la s1pièce représente une partition (tranche) sur le périphérique brut. La pièce que nous utiliserons plus tard n’est que la /dev/disk2pièce.

  2. Ouvrez Utilitaire de disque et "Démontez" le volume. Ne "éjectez" pas cela. Notez que vous devrez peut-être démonter le volume de temps en temps au cours des étapes suivantes, car j’ai découvert que OSX le remonterait automatiquement de manière aléatoire.
  3. Maintenant, nous configurons VirtualBox pour qu'il connaisse le périphérique brut avec la commande suivante dans le terminal.

    1. Notez que le /path/to/file.vmdkpeut être placé n’importe où, bien que ce soit une bonne idée de le stocker dans le dossier de la machine virtuelle invitée, tel que~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Notez que l’ -rawdiskutilisation que nous utilisons ne fait pas référence à la partition (tranche), mais uniquement au périphérique bloc dans son ensemble.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. Ensuite, nous attachons le disque brut à une machine virtuelle invitée dans l'interface utilisateur de VirtualBox.

    1. Assurez-vous que la machine virtuelle invitée n'est pas en cours d'exécution.
    2. Ouvrir la zone de paramètres pour la machine virtuelle invitée
    3. Cliquez sur "Stockage" dans la barre d'outils
    4. À côté du contrôleur, cliquez sur l'icône "Ajouter un disque dur"
    5. Sélectionnez "Choisir un disque existant"
    6. Accédez à celui que /path/to/file.vmdkvous avez utilisé à l'étape 3 et sélectionnez-le.
    7. Vous devriez maintenant être redirigé vers l'onglet Stockage et voir votre file.vmdkdans la liste.
  5. Démarrer la VM
  6. Selon que vous ayez ou non une interface graphique, la carte SD peut ou non être montée automatiquement. Si vous avez besoin de monter manuellement, il est simplement exposé comme un autre périphérique de bloc standard.

Mise à jour

Il semble que certaines personnes puissent avoir des difficultés à accéder au périphérique brut à l'étape 3.2 ou 4.6. Tenter d'exécuter certaines des commandes avec sudo ne vous aidera pas, car VirtualBox s'exécutera en tant qu'utilisateur connecté et ne pourra toujours pas accéder au périphérique brut correct ni au fichier vmdk généré.

Les étapes suivantes devraient aider, même si je ne les ai pas testées.

  1. Vérifiez que le compte que vous utilisez sur OSX dispose des privilèges d’administrateur dans la section Préférences Système / Utilisateurs. Il y a de fortes chances que ce soit également le compte principal sur le système pour que l'accès aux périphériques bruts fonctionne.
  2. Vérifier les permissions du disque brut

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

    Ces autorisations doivent correspondre à votre compte d'utilisateur actuellement connecté:

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

    Les autorisations sur le périphérique doivent également permettre à votre compte d'utilisateur habituel de lire (r) et d'écrire (w) sur ce périphérique. NE MODIFIEZ PAS LES AUTORISATIONS SUR L'APPAREIL SI VOUS NE SAVEZ PAS ABSOLUMENT CE QUE VOUS FAITES.


Mise à jour # 2

OSX Mountain Lion a créé le périphérique avec les privilèges "root: operator" et les autorisations 0640. Malheureusement, pour l’instant, le seul moyen d’avoir accès à cet appareil est de le "communiquer rapidement à votre utilisateur actuel chaque fois que vous insérez l’appareil. Toutefois, cela n’est pas recommandé à moins que vous ne compreniez vraiment ce que vous faites." Espérons que Apple ou VirtualBox trouveront une solution plus appropriée.


2
Dans Mountain Lion, obtenu une partition de montage diskarbitrationd de sdcard, pour arrêter ceci:$ 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
mardi

1
Merci @kenji, c’est un bon conseil supplémentaire pour les utilisateurs de Mtn Lion (j’ai moi-même eu du mal avec le problème de l’automount). Mes instructions détaillées sur les forums VirtualBox bénéficieraient de cette astuce; Je vais ajouter un lien vers votre commentaire ici et ci-dessous. Merci encore.
Likethesky

1
J'ai suivi ce guide, mais j'avais des problèmes d'autorisation. J'ai ensuite préformé un chmod 777 sur le périphérique et tout a bien fonctionné. Plus de détails ici: balage.blogs.balabit.com/2010/10/…
Samantha Catania

2
J'ai obtenu RESOURCE_BUSY lorsque j'essayais d'ajouter l'image en tant que disque dur à Virtual Box. J'ai remarqué que OSX a remonté les partitions de la carte SD. Forcez-les à démonter en tapant ce qui suit dans Terminal (Sur l'hôte)sudo diskutil unmountDisk /dev/<disk path>
Rob

1
Je peux confirmer qu'il faut 1) démonter 2) chown 3) créer un disque virtuel 4) démonter à nouveau 5) ajouter à la machine virtuelle 6) démonter ENCORE 7) démarrer la machine virtuelle. - @JinnKo: pouvez-vous ajouter cela à la réponse? ou puis-je?
Erik Allik

42

Réponse pour les utilisateurs Windows

  1. Obtenez le DeviceID de votre lecteur de carte SD.

    Vous aurez besoin d'une carte dans le lecteur, montée par Windows.

    Entrez cette commande

    wmic diskdrive list brief
    

    Ça devrait ressembler a quelque chose comme ca:

    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
    

    Le dernier périphérique est le lecteur de carte SD, donc le DeviceID est \\.\PHYSICALDRIVE1

  2. Créez le fichier de lien vers la carte SD

    Ouvrir une fenêtre de commande en tant qu'administrateur

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

    Cela suppose le chemin d'installation par défaut - changez-le si vous en avez besoin. (Assurez-vous que les guillemets sont autour de l'argument rawdisk.)

    Le fichier .vmdk est un lien vers la carte SD. Vous pouvez le placer n’importe où sur votre système hôte, mais cette commande l’a simplement placé sur votre bureau pour plus de commodité.

  3. Suivez les étapes 4 à 6 de la réponse de JinnKo, le seul ajustement mineur est que vous devez démarrer VirtualBox en tant qu'administrateur.

  1. Ensuite, nous attachons le disque brut à une machine virtuelle invitée dans l'interface utilisateur de VirtualBox.
    1. Assurez-vous que la machine virtuelle invitée est éteinte.
    2. Assurez-vous que VirtualBox n'est pas en cours d'exécution
    3. Démarrez VirtualBox en cliquant dessus avec le bouton droit de la souris et en choisissant "Exécuter en tant qu'administrateur".
    4. Ouvrir la zone de paramètres pour la machine virtuelle invitée
    5. Cliquez sur "Stockage" dans la barre d'outils
    6. À côté du contrôleur, cliquez sur l'icône "Ajouter un disque dur"
    7. Sélectionnez "Choisir un disque existant"
    8. Accédez à celui que /path/to/file.vmdkvous avez utilisé à l'étape 3 et sélectionnez-le.
    9. Vous devriez maintenant être redirigé vers l'onglet Stockage et voir votre file.vmdkdans la liste.
  2. Démarrer la VM
  3. Selon que vous ayez ou non une interface graphique, la carte SD peut ou non être montée automatiquement. Si vous avez besoin de monter manuellement, il est simplement exposé comme un autre périphérique de bloc standard.

Au cas où vous essayez d'obtenir ceci avec une cygwinsurveillance pour les caractères d'échappement. Je n'ai pas eu la bonne cygwinsolution, mais j'ai remarqué que la commande qui fonctionne avec cmdne fonctionne pas cygwin.
TheMeaningfulEngineer

Lorsque je lance VirtualBox en tant qu'administrateur, je ne vois pas mes machines et je ne peux donc pas modifier leurs paramètres. La raison en est probablement que je ne suis pas un administrateur parce que je travaille avec des liens dans des dossiers partagés, ce qui nécessite cela. Après avoir changé mon type de compte en administrateur, avoir ajouté le lecteur sdcard et exécuté VirtualBox en tant qu'administrateur, je ne peux pas dépasser l'écran de connexion. Je n'ai pas trouvé le problème dans syslog. Ce n'est que lorsque le lecteur de carte SD est à nouveau supprimé que je peux également me connecter lors de l'exécution de VirtualBox en tant qu'administrateur, mais bien entendu, je ne vois pas la carte SD. Donc ça ne marche pas pour moi. :(
Frank Breitling

7

Il est fort probable que vous manquiez les extensions si votre lecteur SD utilise votre contrôleur USB.

entrez la description de l'image ici

Sous Fichier> Préférences, suivez les images. Ajoutez et pointez sur l'extension téléchargée.

entrez la description de l'image ici

Redémarrez votre machine virtuelle et vous devriez avoir accès aux périphériques USB.


Bonjour, j'ai essayé cette solution et installé le pack d'extension virtualbox, mais toujours sans succès. Je le fais dans MacBook si cela fait une différence. De plus, dans mon profileur de système macbook, le lecteur de carte SD ne figure pas dans la liste des périphériques USB mais dans une catégorie distincte appelée "lecteur de carte". De plus, je peux voir les périphériques qui sont listés sous USB dans la virtualbox.
Punit Soni

4

Sur les MacBook Pro récents, le logement pour carte SD n'est plus exposé en tant que périphérique USB

Pour résoudre ce problème, vous pouvez simplement utiliser un lecteur de carte mémoire USB externe (carte SD vers adaptateur USB) au lieu d'un lecteur de carte intégré. Il exposera votre carte SD en tant que périphérique USB, ce qui vous permettra de le monter facilement, comme tout périphérique USB. Ce sont des appareils bon marché et constitueraient une solution acceptable compte tenu de tous les tracas de l'autre.


C'est l'idée la plus intelligente jamais, merci! J'avais même un lecteur de carte USB qui traînait mais je ne savais pas que je pouvais l'utiliser.
marco.m

4

J'utilise Kubuntu 15.04, VirtualBox 4.3.26

Cela suppose que le périphérique de carte SD est /dev/mmcbl0, et la sortie .vdk sera sd-card.vmk:

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

Pas sûr que ce soit le meilleur moyen de réparer les permissions, mais ça a fonctionné:

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

Maintenant, allez dans les Paramètres de la VM, sélectionnez Stockage, cliquez sur Contrôleur: Sata, cliquez sur l'icône Ajouter un disque dur, sélectionnez votre fichier .vdk (sd-card.vmdk dans ce cas)


3

J'ai eu beaucoup de mal à faire fonctionner la solution de JinnKo, principalement en raison de mon statut sur Mountain Lion (OS X 10.8) ... Mais avec son aide, j'ai résolu le problème.

La solution complète est détaillée ici .

Cependant, l’essence de ma solution - pour les utilisateurs de Mountain Lion - est la suivante (utilisez les étapes de JinnKo ci-dessus, mais insérez-les ici avant d’ exécuter la commande 'VBoxManage internalcommands createrawvmdk [...]' (c’est-à-dire entre ses étapes 2 et 3):

** Particulièrement pour Mtn Lion ** Assurez-vous que vous êtes le propriétaire de cet appareil. Sur 10.8 millions de Lion, vous constaterez probablement que vous ne l'êtes pas. Vérifiez-le en faisant:

ls -l /dev/disk*

Avec le '*', vous verrez TOUTES vos unités de disque, vous pouvez aussi faire: ls -l / dev / diskX pour voir seulement 'X', par exemple, j'ai:

ls -l /dev/disk5

Sur Mtn Lion (10.8.x), vous verrez quelque chose comme:

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

Où "X" est votre numéro de périphérique, comme le "5" dans / dev / disk5 ...

Sur Lion (10.7.x), Snow Leopard (10.6.x) ou peut-être sur des versions antérieures d’OS X, vous verrez - si votre nom d’utilisateur est "brad" - probablement quelque chose comme:

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

Où "X" est votre numéro de périphérique, comme le "5" dans / dev / disk5 ... Si vous êtes le propriétaire, alors tout va bien, rien à faire ici, passez à l'étape suivante, c'est-à-dire l'étape createrawvmdk ( dans les grandes instructions de @JinnKo ci-dessus).

Si vous n'êtes pas le propriétaire (mais l'utilisateur root ou un autre utilisateur), vous devez (a) vous connecter en tant qu'utilisateur admin ou (b) procéder comme suit (encore une fois, assurez- vous d'utiliser le bon numéro / lettre de périphérique ici!):

* ATTENTION * Ce qui suit est destiné uniquement à ceux qui souhaitent risquer de détruire définitivement les données stockées sur leur disque dur ou leur lecteur de stockage flash. NE FAITES PAS ceci si vous n'êtes pas sûr de savoir ce que vous faites:

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

* ATTENTION * NE PAS faire si vous n'êtes pas sûr que vous savez ce que vous faites. Ce qui précède s’adresse uniquement à ceux qui souhaitent RISQUER de détruire en permanence les données de leur disque dur ou de leur lecteur de stockage flash.

Vous devrez le faire pour TOUTES vos tranches (s1, s2, s3, ... quel que soit leur nombre). Par exemple, mon nom d'utilisateur est 'brad', donc j'ai fait:, sudo chown brad /dev/disk5puis sudo chown brad /dev/disk5s1, puis pour s2, et s3(puisque j'avais déjà 3 partitions ou tranches existantes).

Si vous n'avez pas partitionné la carte SD, vous n'aurez peut-être besoin que de le faire sudo chown <your username> /dev/diskXune seule fois (sans créer aucune partition / partition)

J'espère que cela aidera d'autres utilisateurs pauvres de Mtn Lion!


Excellente solution. J'aurais été perdu sans cette écriture. Merci beaucoup!
Ggutenberg

1

Jusqu'à présent, je n'ai pas réussi à trouver un moyen de le faire directement, même avec un lecteur de carte USB (la carte a été insérée et /dev/dm-1non celle attendue /dev/mmcblk1).

Mon travail consistait à créer un lecteur virtuel de 4 Go dans VirtualBox. Cela pourrait alors (comme /dev/sdb) prendre l’installation de BeagleBoard Ubuntu comme documenté.

J'ai ensuite arrêté la VM, l'ai convertie en un fichier RAW DD et ai utilisé DD pour la mettre sur la carte: (sur le Mac hôte):

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

( /dev/disk2dans mon cas, mais triplecheck car se tromper pourrait bouger votre disque dur).

La ddcommande a pris environ 1 heure 20 minutes!

J'espère que ça aide. Je cherche toujours un moyen plus simple et plus rapide - nous ne devrions pas avoir besoin de transférer 4 Go de données pour 600 Mo d’OS.


0

Pour moi, la solution consistait à allumer un périphérique USB avec une carte SD, à l'aide de
Devices -> USB devices ->My card reader,
et après quelques secondes, de nouveaux disques apparaissent dans ma machine virtuelle.

J'ai déjà installé VirtualBox Extensions Pack.


0

J'ai installé les fichiers "Virtual Box Guest Additons CD", mais mon lecteur de carte SD ne s'affiche pas dans ma machine virtuelle Windows XP. J'ai réussi à faire fonctionner le mien en activant le périphérique USB dans Virtual Box, puis en redémarrant la machine virtuelle.


0

Comme mentionné par Kobaltz. Pour prendre en charge les versions USB 2.0 et 3.0, vous devez installer le Virtual Extension Pack. J'ai installé le pack d'extension 5.2.22 Oracle VM VirtualBox et vous pouvez le télécharger à partir de la page de téléchargement de Virtual Box. Une fois le fichier téléchargé, vous pouvez directement l'installer et l'installer, il sera ajouté à vos extensions Virtual Box.

entrez la description de l'image ici

Vous devez également ajouter votre carte SD aux filtres de périphérique de notre boîte virtuelle. Veuillez vous rendre dans Paramètres -> USB -> Cliquez sur l’option Ajouter une carte SD jointe.

entrez la description de l'image ici

Maintenant, vous pourrez utiliser votre carte SD dans les filtres.

entrez la description de l'image ici

Allez dans les fichiers et voir les dossiers de la carte SD (j'utilise Ubuntu Linux Distribution)

entrez la description de l'image ici


0

Pour ceux qui utilisent macos et suivent les réponses précédentes, si vous ne pouvez toujours pas accéder à la carte SD à cause d'un problème d'autorisation,

exécutez virtualbox avec sudo va le résoudre.

sudo VirtualBox

Notez que le chemin d'accès aux fichiers vm est différent, dans mon cas, c'est:

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

Si cela ne fonctionne toujours pas, changez le propriétaire et l'accès du disque de la carte SD à votre compte d'utilisateur et à 666, respectivement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.