3 votos

Monte todas las particiones montables de un disco extraíble con diskutil

Tengo una unidad USB que contiene 2 particiones FAT que se montan automáticamente cuando se conecta la unidad. Si ejecuto diskutil unmountDisk y luego diskutil mountDisk esperaría volver al estado inicial.

$ diskutil list
/dev/disk0 (interno, físico):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            250.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1 (interno, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +249.8 GB   disk1
                                 Volumen Lógico en disk0s2
                                 DCD23031-6322-4269-A142-CD36C8FD95D7
                                 Encriptado Desbloqueado
/dev/disk2 (externo, físico):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *7.8 GB     disk2
   1:             Windows_FAT_32 flash-boot              1.7 GB     disk2s1
   2:                      Linux                         197.1 MB   disk2s2
   3:                      Linux                         197.1 MB   disk2s3
   4:             Windows_FAT_32 flash-conf              21.0 MB    disk2s5
   5:                      Linux                         4.2 MB     disk2s6

Ver /dev/disk2. Las dos particiones FAT están actualmente montadas:

$ mount
/dev/disk1 en / (hfs, local, con diario)
devfs en /dev (devfs, local, no navegar)
map -hosts en /net (autofs, sin setuid, automontado, no navegar)
map auto_home en /home (autofs, automontado, no navegar)
/dev/disk2s5 en /Volumes/flash-conf (msdos, local, nodev, nosuid, no propietarios)
/dev/disk2s1 en /Volumes/flash-boot (msdos, local, nodev, nosuid, no propietarios)

Ahora desmontemos:

$ diskutil unmountDisk /dev/disk2
Desmontaje de todos los volúmenes en disk2 fue exitoso

Las particiones realmente se desmontaron:

$ mount
/dev/disk1 en / (hfs, local, con diario)
devfs en /dev (devfs, local, no navegar)
map -hosts en /net (autofs, sin setuid, automontado, no navegar)
map auto_home en /home (autofs, automontado, no navegar)

Ahora intentemos montar de nuevo:

$ diskutil mountDisk /dev/disk2
Volumen(es) montado(s) exitosamente

La operación tiene éxito, según diskutil, pero las particiones aún no están montadas:

$ mount
/dev/disk1 en / (hfs, local, con diario)
devfs en /dev (devfs, local, no navegar)
map -hosts en /net (autofs, sin setuid, automontado, no navegar)
map auto_home en /home (autofs, automontado, no navegar)

¿Es este el comportamiento esperado? Si es así, ¿cuál es la forma correcta de montar un disco de nuevo?


Estoy en OS X 10.11.3.


EDICIÓN 1: Salida de fdisk:

$ sudo fdisk /dev/disk2
Contraseña:
Disco: /dev/disk2        geometría: 951/255/63 [15280192 sectores]
Firma: 0xAA55
         Inicio      Fin
 #: id  cil  hd sec -  cil  hd sec [     inicio -       tamaño]
------------------------------------------------------------------------
*1: 0C   64   0   1 - 1023   3  32 [      8192 -    3276800] Win95 FAT32L
 2: 83 1023   3  32 - 1023   3  32 [   3284992 -     385024] Archivos de Linux*
 3: 83 1023   3  32 - 1023   3  32 [   3670016 -     385024] Archivos de Linux*
 4: 0F 1023   3  32 - 1023   3  32 [   4055040 -      65536] Extendido LBA
Firma: 0xAA55
         Inicio      Fin
 #: id  cil  hd sec -  cil  hd sec [     inicio -       tamaño]
------------------------------------------------------------------------
 1: 0C 1023   3  32 - 1023   3  32 [   4063232 -      40960] Win95 FAT32L
 2: 05 1023   3  32 - 1023   3  32 [   4112256 -       8320] DOS Extendido
 3: 00    0   0   0 -    0   0   0 [         0 -          0] sin usar
 4: 00    0   0   0 -    0   0   0 [         0 -          0] sin usar
Firma: 0xAA55
         Inicio      Fin
 #: id  cil  hd sec -  cil  hd sec [     inicio -       tamaño]
------------------------------------------------------------------------
 1: 83 1023   3  32 - 1023   3  32 [   4112384 -       8192] Archivos de Linux*
 2: 00    0   0   0 -    0   0   0 [         0 -          0] sin usar
 3: 00    0   0   0 -    0   0   0 [         0 -          0] sin usar
 4: 00    0   0   0 -    0   0   0 [         0 -          0] sin usar

0 votos

Mi primer pensamiento fue intentar recrear tu unidad externa. Inmediatamente me di cuenta de que esto no se puede hacer, ya que tu disco externo particionado con MBR tiene 6 particiones. Dado que la tabla de esquema de particionamiento MBR solo puede contener 4 entradas, algunas de estas particiones deben estar definidas en registros de arranque extendidos (EBR). Para ver los EBR, necesitarías actualizar tu pregunta con la salida del comando sudo fdisk /dev/disk2.

0 votos

@DavidAnderson He editado la pregunta con el resultado.

0 votos

@klanomath La imagen es una imagen de Resin.io (resin.io) para Intel NUC. Puedes registrarte, crear una aplicación para NUC y descargar la imagen desde allí.

2voto

David Anderson Puntos 2189

Básicamente, el comando diskutil no admite particiones con la ID de 0C y, por lo tanto, no las montará.

Aquí está la prueba que realicé.

  1. Usando Yosemite OS X 10.10.5, particioné una unidad flash de 4 GB usando un esquema MBR para tener 5 particiones formateadas en FAT del mismo tamaño. Esta función ya no está permitida en El Capitan.
  2. Retiré la unidad flash, inserté la unidad flash, desmonté el disco usando diskutil, y monté el disco usando diskutil. Todo funcionó bien. Sin problemas.
  3. Arranqué hasta El Capitan OS X 10.11.4.
  4. Retiré la unidad flash, inserté la unidad flash, desmonté el disco usando diskutil, y monté el disco usando diskutil. Todo funcionó bien. Sin problemas.

Una diferencia que noté. Su salida de fdisk muestra la ID de las particiones formateadas en FAT como 0C. Yosemite creó estas particiones, en mi Mac, usando la ID de 0B. Usé el comando fdisk para cambiar la ID de la primera partición a 0C. Ahora, cuando desmonto y monto la unidad flash usando el comando diskutil, la primera partición no se monta. Las 4 restantes sí lo hacen.

Ironicamente, si uso el comando

diskutil mount /dev/disk1s1

la primera partición, en la unidad flash, se monta. (En mi computadora, no estoy usando almacenamiento central, por lo tanto, la unidad flash es disk1.)

0 votos

Gran descubrimiento. Según win.tue.nl/~aeb/partitions/partition_types-1.html, 0C representa "WIN95 OSR2 FAT32, mapeado en LBA" y 0B representa WIN95 OSR2 FAT32. Haciendo diskutil mount en las particiones específicas funciona. Estoy deseando integrar esto en una aplicación para montar automáticamente lo que sea montable. Una solución lo suficientemente buena, aunque un poco de hack, sería iterar a través de las particiones disponibles y llamar a diskutil mount ignorando el código de salida.

0 votos

Mi experiencia con Windows es que a menudo ignorará el identificador de la partición. En cambio, Windows buscará directamente en una partición e intentará identificar el sistema de archivos. Si Windows reconoce un volumen FAT o NTFS, montará la partición. Entiendo que estás usando OS X aquí, pero pensé que mencionaría esto de todos modos.

1voto

klanomath Puntos 19587

Aunque no puedo verificar esto, creo que el problema está relacionado con la bandera nodev de las particiones. En teoría, la bandera nodev no permite que un usuario que no sea root cree un nodo de dispositivo como /dev/disk2s5. Por lo tanto, debes anteponer sudo para volver a montar las particiones montables del disco.

Lo siguiente debería funcionar:

  • Crear puntos de montaje: mkdir mnt1 y mkdir mnt2
  • Montar las particiones

    sudo mount -t msdos /dev/disk2s1 ~/mnt1 
    # y respectivamente para la 2da partición
    sudo mount -t msdos /dev/disk2s5 ~/mnt2

Comprobado con una memoria USB real:

Simplemente usa:

sudo diskutil mountDisk /dev/disk2

en lugar de diskutil mountDisk /dev/disk2

0 votos

Montar las particiones manualmente funciona, sin embargo esto está siendo utilizado en una aplicación donde estoy interesado en montar automáticamente cualquier cosa que sea montable (según OS X). Podría escanear la unidad en busca de particiones FAT y activar el montaje en esas, pero tengo que especificar el directorio de montaje (las sugerencias del final no funcionan), y no cubre otros tipos de particiones que puedan necesitar ser manejados.

0 votos

@jviotti Respuesta actualizada

0 votos

Añadiendo sudo también funciona en mi máquina. @jviotti: ¿Tienes que usar un esquema de particionado MBR? Probablemente un esquema que utilice una Tabla de partición GUID (GPT) eliminaría este problema.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X