¿Cómo acceder a una tarjeta SD desde una máquina virtual?

64

Quiero formatear una tarjeta SD desde mi máquina virtual Linux. Tengo un lector de tarjetas SD incorporado en mi computadora portátil. Intenté usar VirtualBox y VMware Player e instalé Ubuntu 10.04 invitado. Ninguno de ellos muestra el lector de tarjetas SD como dispositivo. Puedo acceder a la tarjeta SD desde el host de Windows.

No me interesan las soluciones que usan carpetas compartidas, ya que quiero acceder a la tarjeta SD como hardware (debería aparecer en /dev).

Básicamente quiero configurar la tarjeta SD para BeagleBoard , pero no quiero instalar un Ubuntu físico en mi PC.

Punit Soni
fuente
1
¿Había instalado complementos invitados de virtualbox?
tumchaaditya
1
Tuve el mismo problema. Las soluciones a continuación funcionaron para mí pero fueron inflexibles. Terminé invirtiendo en un "lector USB Micro SD" que aparece por defecto en la máquina virtual. Esto me permitió conectar y desconectar la tarjeta sin acciones adicionales. Solo otra perspectiva sobre la solución
TheMeaningfulEngineer

Respuestas:

56

En las nuevas MacBook Pro, la ranura para tarjeta SD ya no está expuesta como un dispositivo USB. Debido a esto, deberá conectar el dispositivo sin formato a la máquina virtual para obtener acceso sin formato a toda la tarjeta. La documentación completa se encuentra en la sección Configuración avanzada de almacenamiento de la documentación de VirtualBox.

Como se indica claramente en los documentos:

Advertencia : el acceso al disco duro sin formato es solo para usuarios expertos. El uso incorrecto o el uso de una configuración desactualizada puede conducir a la pérdida total de datos en el disco físico . Lo más importante, no intente arrancar la partición con el sistema operativo host que se está ejecutando actualmente en un invitado. Esto conducirá a una grave corrupción de datos.

Como guía rápida, estos son los pasos para conectar el dispositivo a una máquina virtual Linux:

  1. Identifique el dispositivo de bloque de disco sin procesar en su sistema host

    1. Inserte la tarjeta SD en la ranura
    2. Abra una Terminal y escriba "mount". Verá la salida que identifica el volumen montado de su tarjeta SD. En mi sistema obtengo lo siguiente

      $ 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. En mi caso, el volumen "SIN NOMBRE" es la tarjeta SD, así que tomo nota de la /dev/disk2s1parte. En este caso particular, la s1parte representa una partición (segmento) en el dispositivo sin formato, por lo que la parte que usaremos más adelante es solo la /dev/disk2parte.

  2. Abra la Utilidad de Discos y "Desmonte" el volumen. No lo "expulse". Tenga en cuenta que es posible que deba desmontar el volumen de vez en cuando durante los siguientes pasos, ya que descubrí que OSX lo volvería a montar automáticamente al azar.
  3. Ahora configuramos VirtualBox para conocer el dispositivo sin procesar con el siguiente comando en la Terminal.

    1. Tenga en cuenta que /path/to/file.vmdkse puede colocar en cualquier lugar, aunque es una buena idea almacenar esto en la carpeta de la máquina virtual invitada, como~/VirtualBox VMs/guest-vm/sdcard.vmdk
    2. Tenga en cuenta que el -rawdiskque usamos no hace referencia a la partición (segmento) sino solo al dispositivo de bloque en su conjunto.

      $ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/disk2
      
  4. A continuación, adjuntamos el disco sin formato a una máquina virtual invitada dentro de la interfaz de usuario de VirtualBox

    1. Asegúrese de que la máquina virtual invitada no se esté ejecutando.
    2. Abra el área de configuración para la máquina virtual invitada
    3. Haga clic en "Almacenamiento" en la barra de herramientas
    4. Junto al controlador, haga clic en el icono para "Agregar disco duro"
    5. Seleccione "Elegir disco existente"
    6. Navegue hasta el /path/to/file.vmdkque utilizó en el paso 3 y selecciónelo
    7. Ahora debería volver a la pestaña Almacenamiento y ver su file.vmdken la lista.
  5. Inicie la VM
  6. Dependiendo de si tiene una GUI o no, la tarjeta SD puede o no montarse automáticamente. Si necesita montarlo manualmente, simplemente se expone como otro dispositivo de bloqueo estándar, por lo que en mi invitado esto se expuso como / dev / sdb.

Actualizar

Parece que algunas personas pueden tener problemas para acceder al dispositivo sin procesar en el paso 3.2 o 4.6. Los intentos de ejecutar algunos de los comandos con sudo no ayudarán, ya que VirtualBox se ejecutará como su usuario conectado y aún no podrá acceder al dispositivo sin procesar correcto o al archivo vmdk generado.

Los siguientes pasos deberían ayudar, aunque no los he probado.

  1. Verifique que la cuenta que está utilizando en OSX tenga privilegios de administrador en la sección Preferencias / Usuarios del sistema. Existe una buena posibilidad de que también sea la cuenta principal en el sistema para que el dispositivo en bruto acceda al trabajo.
  2. Verifique los permisos del disco sin procesar

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

    Estos permisos deben coincidir con su cuenta de usuario con sesión iniciada actual:

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

    Los permisos en el dispositivo también deberían permitir que su cuenta de usuario habitual lea (r) y escriba (w) en este dispositivo. NO CAMBIE PERMISOS EN EL DISPOSITIVO A MENOS QUE SABE ABSOLUTAMENTE LO QUE ESTÁ HACIENDO.


Actualización n. ° 2

Resulta que OSX Mountain Lion creó el dispositivo con privilegios "root: operator" y permisos 0640. Desafortunadamente, por ahora, la única forma de obtener acceso a este dispositivo es "sudo chown $ USER" a su usuario actual cada vez que inserte el dispositivo, sin embargo, esto no se recomienda a menos que realmente entienda lo que está haciendo. Esperemos que Apple o VirtualBox encuentren una solución más adecuada.

JinnKo
fuente
2
En Mountain Lion, consiguió diskarbitrationd partición de montaje de sdcard, para detener esto:$ 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
Gracias @kenji, ese es un gran consejo adicional para los usuarios de Mtn Lion (yo también tuve problemas con el problema del montaje automático). Mis instrucciones detalladas en los foros de VirtualBox se beneficiarían de este consejo; Agregaré un enlace a su comentario allí y a continuación. Gracias de nuevo.
likethesky
1
Seguí esta guía pero tuve problemas de permisos, luego realicé un chmod 777 en el dispositivo y funcionó bien. Más detalles aquí: balage.blogs.balabit.com/2010/10/…
Samantha Catania
2
Obtuve RESOURCE_BUSY al intentar agregar la imagen como disco duro a Virtual Box. Me di cuenta de que OSX ha vuelto a montar las particiones de la tarjeta SD. Forzarlos a desmontar escribiendo lo siguiente en la Terminal (en el host)sudo diskutil unmountDisk /dev/<disk path>
Rob
1
Puedo confirmar que uno necesita 1) desmontar 2) chown 3) crear disco virtual 4) desmontar nuevamente 5) agregar a VM 6) desmontar OTRA VEZ 7) iniciar la VM. - @JinnKo: ¿puedes agregar eso a la respuesta? o puedo?
Erik Allik
42

Respuesta para usuarios de Windows

  1. Obtenga el DeviceID de su lector de tarjetas SD.

    Necesitará una tarjeta en la unidad, montada por ventanas.

    Ingrese este comando

    wmic diskdrive list brief
    

    Debería verse más o menos así:

    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
    

    El último dispositivo es el lector de tarjetas SD, por lo que el DeviceID es \\.\PHYSICALDRIVE1

  2. Crea el archivo de enlace a la tarjeta SD

    Abra una ventana de comandos como administrador

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

    Esto supone la ruta de instalación predeterminada: cámbiela si es necesario. (Asegúrese de que las comillas estén alrededor del argumento del disco sin formato).

    El archivo .vmdk es un enlace a la tarjeta SD, puede colocarlo en cualquier parte de su sistema host, pero este comando simplemente lo coloca en su escritorio para mayor comodidad.

  3. Siga los pasos 4 a 6 en la respuesta de JinnKo, el único pequeño retoque es que necesita iniciar VirtualBox como administrador

  1. A continuación, adjuntamos el disco sin formato a una máquina virtual invitada dentro de la interfaz de usuario de VirtualBox
    1. Asegúrese de que la máquina virtual invitada esté apagada.
    2. Asegúrese de que VirtualBox no se esté ejecutando
    3. Inicie VirtualBox haciendo clic derecho sobre él y eligiendo "Ejecutar como administrador"
    4. Abra el área de configuración para la máquina virtual invitada
    5. Haga clic en "Almacenamiento" en la barra de herramientas
    6. Junto al controlador, haga clic en el icono para "Agregar disco duro"
    7. Seleccione "Elegir disco existente"
    8. Navegue hasta el /path/to/file.vmdkque utilizó en el paso 3 y selecciónelo
    9. Ahora debería volver a la pestaña Almacenamiento y ver su file.vmdken la lista.
  2. Inicie la VM
  3. Dependiendo de si tiene una GUI o no, la tarjeta SD puede o no montarse automáticamente. Si necesita montarlo manualmente, simplemente se expone como otro dispositivo de bloqueo estándar, por lo que en mi invitado esto se expuso como / dev / sdb.
Sandyscott
fuente
En caso de que esté tratando de obtener esto con cygwincuidado con los personajes de escape. No obtuve la cygwinsolución correcta , pero noté que el comando que funciona cmdno funciona cygwin.
TheMeaningfulEngineer
Cuando inicio VirtualBox como administrador, no veo mis máquinas y, por lo tanto, no puedo cambiar su configuración. Probablemente la razón sea que no soy un usuario administrador porque estoy trabajando con enlaces en carpetas compartidas que requieren esto. Después de cambiar mi tipo de cuenta a administrador y agregar la unidad sdcard y ejecutar VirtualBox como administrador, no puedo pasar de la pantalla de inicio de sesión. No encontré el problema en syslog. Solo cuando la unidad sdcard se retira nuevamente, también puedo iniciar sesión cuando ejecuto VirtualBox como administrador, pero, por supuesto, no veo la tarjeta sd. Entonces no me funciona. :(
Frank Breitling
7

Lo más probable es que te falten las extensiones si tu lector SD está usando tu controlador USB.

ingrese la descripción de la imagen aquí

En Archivo> Preferencias, siga la imagen. Agregue y señale la extensión descargada.

ingrese la descripción de la imagen aquí

Reinicie su máquina virtual y debería tener acceso a dispositivos USB.

Kobaltz
fuente
Hola, probé esta solución e instalé el paquete de extensión de virtualbox pero aún no tuve éxito. Estoy haciendo esto en macbook si eso hace alguna diferencia. Además, en mi perfilador de sistema macbook, el lector de tarjetas SD no figura en la lista de dispositivos USB, sino como una categoría separada llamada "lector de tarjetas". Además, puedo ver los dispositivos que se enumeran en USB en virtualbox.
Punit Soni
4

En las nuevas MacBook Pro, la ranura para tarjeta SD ya no está expuesta como un dispositivo USB

Para superar este problema, simplemente puede usar un lector de tarjetas de memoria USB externo (es decir, una tarjeta SD a un adaptador USB) en lugar del lector de tarjetas incorporado. Expondrá su tarjeta SD como un dispositivo USB para que pueda montarla fácilmente como cualquier dispositivo USB. Son dispositivos baratos y serían una solución aceptable teniendo en cuenta todas las molestias de la otra manera.

Ahmet
fuente
Esta es la idea más inteligente, ¡gracias! Incluso tenía un lector de tarjetas USB por ahí, pero no me di cuenta de que podía usarlo.
marco.m
4

Estoy usando Kubuntu 15.04, VirtualBox 4.3.26

Esto supone que el dispositivo de la tarjeta SD es /dev/mmcbl0, y la salida .vdk será sd-card.vmk:

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

No estoy seguro de que esta sea la mejor manera de corregir los permisos, pero funcionó:

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

Ahora vaya a la Configuración de VM, seleccione Almacenamiento, haga clic en Controlador: Sata, haga clic en el icono para Agregar disco duro, seleccione su .vdk (sd-card.vmdk en este caso)

Bogdan
fuente
3

Tuve muchos problemas para que JinnKo funcionara, principalmente debido a que estaba en Mountain Lion (OS X 10.8) ... Pero con su amable asistencia, he resuelto los problemas.

La solución completa se detalla aquí .

Sin embargo, la esencia de mi solución, para los usuarios de Mountain Lion, es la siguiente (use los pasos de JinnKo anteriores, pero inserte mi paso aquí antes de ejecutar el comando 'VBoxManage internalcommands createrawvmdk [...]' (es decir, entre pasos 2 y 3):

** Particularmente para Mtn Lion ** Asegúrese de ser el propietario de este dispositivo. En 10.8 Mtn Lion, probablemente encontrarás que no lo eres. Compruébalo haciendo:

ls -l /dev/disk*

Con el '*' verá TODOS sus dispositivos de disco, también puede hacer: ls -l / dev / diskX para ver 'X', por ejemplo, hice:

ls -l /dev/disk5

En Mtn Lion (10.8.x) verá algo como:

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

Donde 'X' es el número de su dispositivo, como el '5' en / dev / disk5 ...

En Lion (10.7.x), Snow Leopard (10.6.x), o quizás en versiones anteriores de OS X, es probable que, si su nombre de usuario es 'brad', vea algo como:

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

Donde 'X' es el número de su dispositivo, como el '5' en / dev / disk5 ... Si usted es el propietario, entonces todo está bien, nada que hacer aquí, vaya al siguiente paso, es decir, el paso createrawvmdk ( en las excelentes instrucciones de @JinnKo anteriores).

Si no es el propietario (pero 'root' o algún otro usuario lo es), (a) inicie sesión como ese usuario administrador o (b) haga lo siguiente (nuevamente, asegúrese de estar usando el número / letra de dispositivo correcto) ¡aquí!):

* PRECAUCIÓN * Lo siguiente es solo para aquellos que desean arriesgarse a destruir permanentemente los datos en su disco duro o unidad de almacenamiento flash. NO NO hacer esto si usted no está seguro de lo que está haciendo:

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

* ATENCIÓN * NO NO hacer esto si usted no está seguro de lo que estás haciendo. Lo anterior es solo para aquellos que desean RIESGAR la destrucción permanente de datos en su disco duro o unidad de almacenamiento flash.

Tendrá que hacerlo para TODAS sus rebanadas (s1, s2, s3, ... sin embargo, hay muchas). Por ejemplo, mi nombre de usuario es 'brad', así que hice:, sudo chown brad /dev/disk5luego sudo chown brad /dev/disk5s1, luego para s2y s3(ya que tenía 3 particiones o rebanadas existentes).

Si no ha particionado la tarjeta SD, es posible que solo tenga que hacerla sudo chown <your username> /dev/diskXuna vez (sin hacer ninguna de las rebanadas / particiones)

¡Espero que esto ayude a otros usuarios pobres de Mtn Lion!

likethesky
fuente
Excelente solucion. Me hubiera perdido sin este artículo. ¡Muchas gracias!
ggutenberg
1

Hasta ahora no he podido encontrar una manera de hacer esto directamente, incluso con un lector de tarjetas USB (puso la tarjeta en /dev/dm-1lugar de lo esperado /dev/mmcblk1).

Mi trabajo consistía en crear una unidad virtual de 4 GB en VirtualBox. Esto podría (entonces /dev/sdb) tomar una instalación de BeagleBoard Ubuntu como se documenta.

Luego apagué la VM, la convertí en un archivo RAW DD y usé DD para ponerla en la tarjeta: (en la Mac host):

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

( /dev/disk2en mi caso, pero hacer una comprobación triple, ya que hacerlo mal podría dañar su unidad de disco duro).

¡El ddcomando tomó aproximadamente 1 hora y 20 minutos!

Espero que esto ayude. Todavía estoy trabajando para lograr una manera más fácil y rápida: no deberíamos necesitar transferir 4 GB de datos para 600 MB de sistema operativo.

Rico
fuente
0

Para mí, la solución fue encender un dispositivo USB con una tarjeta SD, usar
Devices -> USB devices ->My card reader,
y después de unos segundos aparecen nuevos discos en mi VM.

He instalado VirtualBox Extensions Pack antes de eso.

Zdzisiek
fuente
0

Instalé los archivos "Virtual Box Guest Additons CD", pero mi lector de tarjetas SD no aparecía en mi máquina virtual con Windows XP. Pude hacer que el mío funcionara habilitando el dispositivo USB en Virtual Box y luego reiniciando la máquina virtual.

skibulk
fuente
0

Como mencionó kobaltz. Para admitir las versiones USB 2.0 y 3.0, debe instalar el paquete de extensión virtual, instalé el paquete de extensión 5.2.22 Oracle VM VirtualBox y puede descargarlo desde la página de descarga de Virtual Box. Una vez que descargue el archivo, puede continuar directamente e instalarlo, lo mismo se agregará a sus extensiones de Virtual Box.

ingrese la descripción de la imagen aquí

También debe agregar su tarjeta SD a los filtros del dispositivo en nuestra Caja virtual, vaya a Configuración -> USB -> Haga clic en la opción Agregar tarjeta SD adjunta.

ingrese la descripción de la imagen aquí

Ahora podrá acceder a su tarjeta SD en los Filtros.

ingrese la descripción de la imagen aquí

Vaya a los archivos y vea las carpetas de la tarjeta SD (uso Ubuntu Linux Distribution)

ingrese la descripción de la imagen aquí

Sibeesh Venu
fuente
0

Para cualquier persona que use macos y siga las respuestas anteriores, si aún no puede acceder a la tarjeta SD debido a un problema de permiso,

ejecutar virtualbox con sudo lo resolverá.

sudo VirtualBox

Tenga en cuenta que la ruta a los archivos vm es diferente, en mi caso, es:

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

Si eso todavía no funciona, cambie el propietario y el acceso del disco de la tarjeta SD a su cuenta de usuario y 666, respectivamente.

Pengyuan Zhou
fuente