3 votes

Monter toutes les partitions montables d'un disque amovible avec diskutil

J'ai une clé USB contenant 2 partitions FAT qui sont automatiquement montées lorsque la clé est branchée. Si je lance diskutil unmountDisk puis diskutil mountDisk je m'attends à revenir à l'état initial.

$ diskutil list
/dev/disk0 (interne, physique):
   #:                       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 (interne, virtuel):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +249.8 GB   disk1
                                 Volume Logique sur disk0s2
                                 DCD23031-6322-4269-A142-CD36C8FD95D7
                                 Crypté déverrouillé
/dev/disk2 (externe, physique):
   #:                       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

Consultez /dev/disk2. Les deux partitions FAT sont actuellement montées :

$ mount
/dev/disk1 on / (hfs, local, journalisé)
devfs on /dev (devfs, local, sans parcourir)
map -hosts on /net (autofs, nosuid, automatiquement monté, sans parcourir)
map auto_home on /home (autofs, automatiquement monté, sans parcourir)
/dev/disk2s5 on /Volumes/flash-conf (msdos, local, nodev, nosuid, pas de propriétaire)
/dev/disk2s1 on /Volumes/flash-boot (msdos, local, nodev, nosuid, pas de propriétaire)

Maintenant démontons :

$ diskutil unmountDisk /dev/disk2
Démontage réussi de toutes les volumes sur le disk2

Les partitions ont en effet été démontées :

$ mount
/dev/disk1 on / (hfs, local, journalisé)
devfs on /dev (devfs, local, sans parcourir)
map -hosts on /net (autofs, nosuid, automatiquement monté, sans parcourir)
map auto_home on /home (autofs, automatiquement monté, sans parcourir)

Maintenant essayons de remonter :

$ diskutil mountDisk /dev/disk2
Volume(s) monté(s) avec succès

L'opération réussit, selon diskutil, mais les partitions ne sont toujours pas montées :

$ mount
/dev/disk1 on / (hfs, local, journalisé)
devfs on /dev (devfs, local, sans parcourir)
map -hosts on /net (autofs, nosuid, automatiquement monté, sans parcourir)
map auto_home on /home (autofs, automatiquement monté, sans parcourir)

Est-ce le comportement attendu? Si oui, quelle est la manière correcte de remonter un disque?


Je suis sous OS X 10.11.3.


ÉDIT 1: sortie de fdisk:

$ sudo fdisk /dev/disk2
Mot de passe:
Disk: /dev/disk2        géométrie: 951/255/63 [15280192 secteurs]
Signature: 0xAA55
         Début       Fin
 #: id  cyl  hd sec -  cyl  hd sec [     départ -       taille]
------------------------------------------------------------------------
*1: 0C   64   0   1 - 1023   3  32 [      8192 -    3276800] Win95 FAT32L
 2: 83 1023   3  32 - 1023   3  32 [   3284992 -     385024] Fichiers Linux*
 3: 83 1023   3  32 - 1023   3  32 [   3670016 -     385024] Fichiers Linux*
 4: 0F 1023   3  32 - 1023   3  32 [   4055040 -      65536] Étendu LBA
Signature: 0xAA55
         Début       Fin
 #: id  cyl  hd sec -  cyl  hd sec [     départ -       taille]
------------------------------------------------------------------------
 1: 0C 1023   3  32 - 1023   3  32 [   4063232 -      40960] Win95 FAT32L
 2: 05 1023   3  32 - 1023   3  32 [   4112256 -       8320] DOS étendu
 3: 00    0   0   0 -    0   0   0 [         0 -          0] inutilisé
 4: 00    0   0   0 -    0   0   0 [         0 -          0] inutilisé
Signature: 0xAA55
         Début       Fin
 #: id  cyl  hd sec -  cyl  hd sec [     départ -       taille]
------------------------------------------------------------------------
 1: 83 1023   3  32 - 1023   3  32 [   4112384 -       8192] Fichiers Linux*
 2: 00    0   0   0 -    0   0   0 [         0 -          0] inutilisé
 3: 00    0   0   0 -    0   0   0 [         0 -          0] inutilisé
 4: 00    0   0   0 -    0   0   0 [         0 -          0] inutilisé

0 votes

Ma première pensée a été d'essayer de recréer votre disque externe. Immédiatement, j'ai réalisé que cela ne pouvait pas être fait, car votre disque externe partitionné en MBR comporte 6 partitions. Comme le tableau de schéma de partition MBR ne peut contenir que 4 entrées, certaines de ces partitions doivent être définies dans des enregistrements d'amorçage étendus (EBR). Pour afficher les EBR, vous devriez mettre à jour votre question avec la sortie de la commande sudo fdisk /dev/disk2.

0 votes

@DavidAnderson J'ai édité la question avec la sortie.

0 votes

@klanomath L'image est une image Resin.io (resin.io) Intel NUC. Vous pouvez vous inscrire, créer une application NUC et télécharger l'image à partir de là.

2voto

David Anderson Points 30783

Fondamentalement, la commande diskutil n'aime pas les partitions avec l'identifiant de 0C et, par conséquent, ne les montera pas.

Voici le test que j'ai effectué.

  1. Utilisant Yosemite OS X 10.10.5, j'ai partitionné une clé USB de 4 Go en utilisant un schéma MBR pour avoir 5 partitions de taille égale formatées en FAT. Cette fonction n'est plus autorisée sous El Capitan.
  2. J'ai retiré la clé USB, inséré la clé USB, démonté le disque en utilisant diskutil, et monté le disque en utilisant diskutil. Tout fonctionne bien. Pas de problèmes.
  3. Démarrer sous El Capitan OS X 10.11.4.
  4. J'ai retiré la clé USB, inséré la clé USB, démonté le disque en utilisant diskutil, et monté le disque en utilisant diskutil. Tout fonctionne bien. Pas de problèmes.

Une différence que j'ai notée. Votre sortie fdisk montre l'identifiant des partitions formatées en FAT comme étant 0C. Yosemite a créé ces partitions, sur mon Mac, en utilisant l'identifiant de 0B. J'ai utilisé la commande fdisk pour changer l'identifiant de la première partition en 0C. Maintenant, lorsque je démonte et monte la clé USB en utilisant la commande diskutil, la première partition ne se monte pas. Les 4 autres le font.

Ironiquement, si j'utilise la commande

diskutil mount /dev/disk1s1

la première partition, sur la clé USB, se monte. (Sur mon ordinateur, je n'utilise pas le stockage de base, donc la clé USB est disk1.)

0 votes

Grande découverte. Selon win.tue.nl/~aeb/partitions/partition_types-1.html, 0C représente "WIN95 OSR2 FAT32, LBA-mapped" et 0B représente WIN95 OSR2 FAT32. En faisant diskutil mount sur les partitions spécifiques fonctionne. J'ai hâte d'intégrer cela dans une application pour monter automatiquement tout ce qui est montable. Une solution assez bonne, bien que bricolée, serait d'itérer à travers les partitions disponibles et d'appeler diskutil mount en ignorant le code de sortie.

0 votes

Mon expérience avec Windows est qu'il ignore souvent l'identifiant de partition. Au lieu de cela, Windows va regarder directement dans une partition et essayer d'identifier le système de fichiers. Si Windows reconnaît un volume FAT ou NTFS, il montera la partition. Je sais que vous utilisez OS X ici, mais je voulais quand même mentionner cela.

1voto

klanomath Points 63400

Bien que je ne puisse pas vérifier cela, je pense que le problème est lié au drapeau nodev des partitions. En théorie, le drapeau nodev n'autorise pas un utilisateur non-root à créer un node de périphérique comme /dev/disk2s5. Vous devez donc préfixer sudo pour remonter les partitions montables du disque.

La méthode suivante devrait fonctionner:

  • Créez les points de montage : mkdir mnt1 et mkdir mnt2
  • Montez les partitions

    sudo mount -t msdos /dev/disk2s1 ~/mnt1 
    #et respectivement pour la 2ème partition
    sudo mount -t msdos /dev/disk2s5 ~/mnt2

Vérifié avec une vraie clé USB:

Utilisez simplement :

sudo diskutil mountDisk /dev/disk2

au lieu de diskutil mountDisk /dev/disk2

0 votes

Manuellement monter les partitions fonctionne, cependant cela est utilisé dans une application où je suis intéressé par le montage automatique de ce qui est montable (selon OS X) automatiquement. Je pourrais être en mesure de scanner le lecteur pour les partitions FAT et déclencher un montage sur celles-ci, mais je dois spécifier le répertoire de montage (les suggestions de la fin ne fonctionnent pas), et cela ne couvre pas d'autres types de partitions que je pourrais avoir à gérer.

0 votes

@jviotti réponse mise à jour

0 votes

Ajouter sudo fonctionne également sur ma machine. @jviotti: Dois-tu utiliser un schéma de partitionnement MBR? Un schéma utilisant une table de partition GUID (GPT) éliminerait probablement ce problème.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X