web-dev-qa-db-fra.com

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

Je souhaite formater une carte SD à partir de ma machine virtuelle Linux. J'ai un SD card intégré lecteur dans mon ordinateur portable. J'ai essayé d'utiliser VirtualBox et VMware Player et j'ai invité Ubuntu 10.04 invité. 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.

64
Punit Soni

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 devez connecter le périphérique brut à la VM afin d'obtenir un accès brut à l'intégralité de la carte. La documentation complète se trouve dans la section Advanced Storage Configuration de la documentation de VirtualBox.

Comme indiqué clairement dans la documentation:

Avertissement - L'accès au disque dur brut est réservé aux utilisateurs expérimentés. 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 partie /dev/disk2s1. Dans ce cas particulier, la partie s1 représente une partition (tranche) sur le périphérique brut. Par conséquent, la partie que nous utiliserons plus tard est simplement la partie /dev/disk2.

  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.vmdk peut être placé n'importe où, mais il est judicieux de le stocker dans le dossier invité VM, tel que ~/VirtualBox VMs/guest-vm/sdcard.vmdk.
    2. Notez que le -rawdisk que nous utilisons ne fait pas référence à la partition (slice), 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 à un invité VM dans l'interface utilisateur de VirtualBox.

    1. Assurez-vous que l'invité VM 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 au /path/to/file.vmdk que vous avez utilisé à l'étape 3 et sélectionnez-le.
    7. Vous devriez maintenant être redirigé vers l'onglet Stockage et voir votre file.vmdk dans 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 devez monter manuellement, il est simplement exposé comme un autre périphérique de bloc standard. Par conséquent, sur mon invité, cela a été exposé sous le nom/dev/sdb.

Mettre à 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 "Sudo chown $ USER" à 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.

56
JinnKo

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 appareil est le lecteur de carte SD, donc le DeviceID est \\.\PHYSICALDRIVE1

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

    Ouvrez une commande windows 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 changement mineur est que vous devez démarrer VirtualBox en tant qu'administrateur.

  1. Ensuite, nous attachons le disque brut à un invité VM dans l'interface utilisateur de VirtualBox
    1. Assurez-vous que l'invité VM est éteint.
    2. Assurez-vous que VirtualBox ne fonctionne pas
    3. Démarrez VirtualBox en faisant un clic droit dessus 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 au /path/to/file.vmdk que vous avez utilisé à l'étape 3 et sélectionnez-le.
    9. Vous devriez maintenant être redirigé vers l'onglet Stockage et voir votre file.vmdk dans 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 devez monter manuellement, il est simplement exposé comme un autre périphérique de bloc standard. Par conséquent, sur mon invité, cela a été exposé sous le nom/dev/sdb.
41
sandyscott

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

enter image description here

Sous Fichier> Préférences, suivez les images. 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.

7
kobaltz

J'utilise Kubuntu 15.04, VirtualBox 4.3.26

Cela suppose que le périphérique de carte SD est /dev/mmcbl0 et que le fichier .vdk de sortie 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

Allez maintenant dans les VM Paramètres, 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)

4
Bogdan

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.

3
Ahmet

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 mon étape ici avant avec 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 probablement, si votre nom d’utilisateur est «brad»,:

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, soyez très sûr que vous utilisez le numéro de périphérique/lettre correct ici!):

* ATTENTION * Ce qui suit n’est destiné qu’à ceux qui veulent risquer détruire définitivement les données de leur disque dur ou de leur lecteur de stockage flash. FAITES PAS _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ n n n se s ne soit pas sûr de savoir ce que tu fais

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

* ATTENTION * DO PAS _ FAITES ceci si vous n'êtes pas sûr de savoir 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', c'est pourquoi j'ai: Sudo chown brad /dev/disk5, puis Sudo chown brad /dev/disk5s1, puis pour s2 et s3 (étant donné que 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 faire le Sudo chown <your username> /dev/diskX une fois (sans aucune des tranches/partitions).

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

3
likethesky

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é placée sur /dev/dm-1 plutôt que le /dev/mmcblk1 attendu).

Mon travail consistait à créer un lecteur virtuel de 4 Go dans VirtualBox. Cela pourrait alors (en tant que /dev/sdb) procéder à une 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/disk2 dans mon cas, mais le fait de ne pas vérifier que tout se passe bien pourrait faire chavirer votre disque dur).

La commande dd 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.

1
Rich

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

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

0
Zdzisiek

J'ai installé les fichiers "Virtual Box Guest Additons CD", mais mon lecteur de carte SD n'apparaissait pas dans ma machine virtuelle Windows XP. Le mien fonctionnait avec enable le périphérique USB dans Virtual Box, puis redémarrage la machine virtuelle.

0
skibulk

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 5.2.22 Oracle VM VirtualBox Extension Pack, 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.

 enter image description here

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.

 enter image description here

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

 enter image description here

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

 enter image description here

0
Sibeesh Venu