77 votes

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

Je veux formater une carte SD à partir de ma machine virtuelle Linux. J'ai un programme intégré Carte SD dans mon ordinateur portable. J'ai essayé d'utiliser VirtualBox y Lecteur VMware et installé Ubuntu 10.04 guest. Aucun d'entre eux ne montre le lecteur de carte SD comme un périphérique. Je peux accéder à la carte SD depuis l'hôte Windows.

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

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

64voto

JinnKo Points 845

Sur les MacBook Pro les plus récents, la fente pour carte SD n'est plus exposée comme un périphérique USB. Pour cette raison, vous devrez attacher le périphérique brut à la VM afin d'obtenir un accès brut à la carte entière. La documentation complète se trouve dans le Configuration avancée du stockage de la documentation de VirtualBox.

Comme indiqué clairement dans les docs :

Avertissement - L'accès au disque dur brut est réservé aux utilisateurs experts. Utilisation incorrecte ou utilisation d'une configuration périmée peut conduire à la 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 entraînerait une grave corruption des données.

A titre de guide rapide, voici les étapes à suivre pour attacher le dispositif à une VM 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é de votre carte SD. Sur mon système, j'obtiens 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, donc je prends note de l'adresse de la carte SD. /dev/disk2s1 partie. Dans ce cas particulier, le s1 représente une partition (tranche) sur le périphérique brut, donc la partie que nous utiliserons plus tard est juste la partie /dev/disk2 partie.

  2. Ouvrez l'utilitaire de disque et "démontez" le volume. Ne l'"éjectez" pas. Notez que vous devrez peut-être démonter le volume de temps en temps au cours des étapes suivantes, car j'ai constaté qu'OSX le remontait automatiquement au hasard.

  3. Maintenant, nous configurons VirtualBox pour être conscient du périphérique brut avec la commande suivante dans le Terminal.

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

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

    1. Assurez-vous que la VM invitée n'est pas en cours d'exécution.
    2. Ouvrez la zone de paramètres pour la VM invitée
    3. Cliquez sur "Stockage" dans la barre d'outils
    4. A côté du contrôleur, cliquez sur l'icône "Ajouter un disque dur".
    5. Sélectionnez "Choisir un disque existant".
    6. Naviguez jusqu'au /path/to/file.vmdk que vous avez utilisé à l'étape 3 et sélectionnez-le
    7. Vous devriez maintenant être renvoyé à l'onglet Stockage et voir vos file.vmdk dans la liste.
  5. Démarrer la VM

  6. Selon que vous avez une interface graphique ou non, la carte SD peut ou non se monter automatiquement. Si vous devez la monter manuellement, elle est simplement exposée comme un autre périphérique bloc standard, donc sur mon invité, elle était exposée comme /dev/sdb.


Update

Il semble que certaines personnes aient des difficultés à accéder au périphérique brut à l'étape 3.2 ou 4.6. Les tentatives d'exécution de certaines commandes avec sudo n'aideront pas car VirtualBox sera exécuté en tant qu'utilisateur connecté et ne sera toujours pas en mesure d'accéder correctement au périphérique brut ou au fichier vmdk généré.

Les étapes suivantes devraient vous aider, bien que je ne les aie pas testées.

  1. Vérifiez que le compte que vous utilisez sous OSX dispose des privilèges d'administrateur dans la section Préférences système/Utilisateurs. Il y a de fortes chances qu'il s'agisse également du compte principal sur le système pour que l'accès au périphérique brut fonctionne.
  2. Vérifiez 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 utilisateur habituel de lire (r) et d'écrire (w) sur ce périphérique. NE MODIFIEZ PAS LES AUTORISATIONS SUR LE PÉRIPHÉRIQUE SAUF SI VOUS SAVEZ ABSOLUMENT CE QUE VOUS FAITES.


Mise à jour n°2

Il s'avère qu'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'accéder à ce périphérique est de le "sudo chown $USER" à votre utilisateur actuel chaque fois que vous insérez le périphérique, mais ce n'est pas recommandé à moins que vous compreniez vraiment ce que vous faites. Nous espérons que Apple ou VirtualBox trouveront une solution plus adaptée.

51voto

dwaynekdclarke Points 140

Réponse pour les utilisateurs de 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

    Cela devrait ressembler à quelque chose comme ça :

    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éer le fichier de liaison vers la carte SD

    Ouvrir une commande Windows en tant qu'administrateur

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

    Ceci suppose le chemin d'installation par défaut - changez-le si vous en avez besoin. (Assurez-vous que des guillemets entourent 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 le place sur votre bureau pour plus de commodité.

  3. Suivez les étapes 4-6 de la réponse de JinnKo, la seule petite modification est que vous devez démarrer VirtualBox en tant qu'administrateur.

  1. Ensuite, nous attachons le disque brut à une VM invitée dans l'interface utilisateur de VirtualBox.
    1. Assurez-vous que la VM invitée est hors tension.
    2. Assurez-vous que VirtualBox n'est pas en cours d'exécution
    3. Démarrez VirtualBox en faisant un clic droit dessus et en choisissant "Exécuter en tant qu'administrateur".
    4. Ouvrez la zone de paramètres pour la VM invitée
    5. Cliquez sur "Stockage" dans la barre d'outils
    6. A côté du contrôleur, cliquez sur l'icône "Ajouter un disque dur".
    7. Sélectionnez "Choisir un disque existant".
    8. Naviguez jusqu'au /path/to/file.vmdk que vous avez utilisé à l'étape 3 et sélectionnez-le
    9. Vous devriez maintenant être ramené à l'onglet Stockage et voir votre file.vmdk dans la liste.
  2. Démarrer la VM
  3. Selon que vous avez une interface graphique ou non, la carte SD peut ou non se monter automatiquement. Si vous devez la monter manuellement, elle est simplement exposée comme un autre périphérique bloc standard, donc sur mon invité, elle était exposée comme /dev/sdb.

8voto

Ahmet Points 181

Sur les MacBook Pro les plus récents, la fente pour carte SD n'est plus exposée comme un périphérique USB.

Pour surmonter ce problème, vous pouvez tout simplement utiliser un dispositif externe Lecteur de carte mémoire Usb (c'est-à-dire un adaptateur de carte SD vers USB) au lieu du lecteur de carte intégré. Il exposera votre carte SD comme un périphérique USB afin que vous puissiez la monter facilement comme n'importe quel périphérique USB. Ce sont des dispositifs bon marché et seraient une solution acceptable compte tenu de tous les tracas de l'autre façon.

7voto

kobaltz Points 14689

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

enter image description here

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

enter image description here

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

4voto

Aman Points 749

J'utilise Kubuntu 15.04 et VirtualBox 4.3.26.

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

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

Je ne suis pas sûr que ce soit la meilleure façon de régler les permissions, mais ça a marché :

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

Maintenant, allez dans les paramètres de la VM, sélectionnez Storage, cliquez sur Controller:Sata, cliquez sur l'icône pour Add Hard Disk, sélectionnez votre .vdk (sd-card.vmdk dans ce cas).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X