Créer une nouvelle partition dans l'espace non alloué avec diskutil

14

J'ai supprimé la première partition de mon disque dur externe de telle sorte qu'elle dispose désormais de 100 Go d'espace libre au début de la partition. Je voudrais récupérer cet espace, mais l'Utilitaire de disque ne me permet pas de créer une nouvelle partition là-bas (il ne fait rien lorsque je clique sur «Appliquer»). Existe-t-il un moyen d'accomplir cela avec diskutil? Je n'ai trouvé que des moyens de modifier (ou d'effacer, ou de diviser, etc.) les partitions existantes en entrant par exemple disk2s2 comme ID de périphérique, mais l'espace libre n'a pas de tel ID de périphérique.

Les sorties:

$ diskutil list disk2
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.5 TB     disk2
   1:                        EFI                         209.7 MB   disk2s1
   2:                  Apple_HFS Shared                  199.3 GB   disk2s2
   3:                 Apple_Boot Recovery HD             784.2 MB   disk2s3
   4:          Apple_CoreStorage                         500.0 GB   disk2s4
   5:                 Apple_Boot Boot OS X               134.2 MB   disk2s5
   6:          Apple_CoreStorage                         699.6 GB   disk2s6
   7:                 Apple_Boot Boot OS X               134.2 MB   disk2s7
$ sudo gpt -r show disk2
Password:
       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6         
          40      409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409640   195575768         
   195985408   389353696      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
   585339104     1531680      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
   586870784   976562504      4  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  1563433288      262144      5  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1563695432  1366319552      6  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  2930014984      262144      7  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  2930277128           7         
  2930277135          32         Sec GPT table
  2930277167           1         Sec GPT header
$ sudo fdisk /dev/disk2
Disk: /dev/disk2    geometry: -5415437/4/63 [-1364690128 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 - -1364690129] <Unknown ID>
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
$ sudo pdisk --list /dev/disk2
pdisk: No valid block 1 on '/dev/disk2'
MrMage
la source
1
Sur le terminal, pouvez - vous s'il vous plaît exécuter ces commandes et ajouter la sortie à votre question: diskutil list disk2, sudo gpt -r show disk2, sudo fdisk /dev/disk2et sudo pdisk --list /dev/disk2? La raison pour laquelle l'Utilitaire de disque ne fonctionne pas n'est pas claire, il y a peut-être un problème avec (l'une) des tables de partition. De plus, avez-vous essayé d'exécuter une "réparation" à la fois sur l'ensemble du disque dur et sur la partition qui s'y trouve?
pmdj
Ce Gist affiche toutes les données que vous avez demandées: gist.github.com/211c2bd5bc00a2f87b4c
MrMage
Pouvez-vous démarrer à partir d'un disque dur externe? Si oui, j'ai une réponse.
duci9y
Je n'ai pas essayé, mais je pense que oui (au moins cela a fonctionné dans le passé).
MrMage

Réponses:

18

(Avant de continuer, assurez-vous que le disque en question est toujours disk2, vous avez des sauvegardes de vos données, etc. - cela dit, les modifications ici ne sont pas particulièrement dangereuses. Lisez toutes les instructions avant de faire quoi que ce soit pour vous assurer que vous comprenez tout les marches.)

OK, vos tables de partition semblent bien (un GPT valide et un MBR de protection correct), donc je ne sais pas pourquoi l'Utilitaire de disque vous échoue dans cette instance, mais vous devriez pouvoir créer une partition dans l'espace vide en utilisant la gptcommande utilitaire en ligne. Votre GPT ressemble à ceci:

       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
          34           6         
          40      409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409640   195575768         
   195985408   389353696      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
   585339104     1531680      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
   586870784   976562504      4  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  1563433288      262144      5  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  1563695432  1366319552      6  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  2930014984      262144      7  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  2930277128           7         
  2930277135          32         Sec GPT table
  2930277167           1         Sec GPT header

L'espace libre est indiqué par cette ligne (les nombres sont des secteurs de 512 octets, donc un peu moins de 100 Go d'espace libre:

      409640   195575768         

Apple nécessite 128 Mo (262144 secteurs) d'espace libre après une partition, de sorte que la nouvelle partition peut être 195575768-262144 = 195313624 secteurs. Démontez tous les volumes sur le disque en utilisant:

diskutil unmountDisk disk2

Ensuite, cette commande créera une partition HFS + dans l'espace libre:

sudo gpt add -b 409640 -s 195313624 -t hfs disk2

Cela crée uniquement la partition, pas le système de fichiers. Pour vérifier que tout s'est bien passé, vous devriez maintenant voir un disk2s8si vous exécutez diskutil list disk2. Si c'est effectivement le cas, vous pouvez formater la partition comme ceci:

sudo newfs_hfs -v "Volume Name" -J /dev/rdisk2s8

Si disk2s8 n'est pas apparu, vous devrez redémarrer avant de formater. Au lieu d'exécuter, newfs_hfsvous devriez également pouvoir effacer la partition dans l'Utilitaire de disque.

L'utilitaire gpt ne réordonne pas les numéros de partition mais cela ne devrait pas être un problème dans la pratique. Si vous apportez d'autres modifications à l'utilitaire de disque, cela corrigera probablement la commande de toute façon.

pmdj
la source
Eh bien, cela semble avoir fonctionné. Mais l'Utilitaire de disque affiche maintenant une disposition de partition foirée : i50.tinypic.com/2qxc3r6.jpg (l'espace libre en haut se développe un peu plus - la vue de la partition a maintenant des barres de défilement).
MrMage
Hmm, cela pourrait être dû à la numérotation et peut-être à tout ce qui cause l'autre bogue de l'Utilitaire de disque en premier lieu. De façon réaliste, si tout le reste fonctionne, vous pouvez simplement continuer dans cet état. Sinon, vous pouvez essayer de renuméroter les partitions. En utilisant la norme, gptcela est fastidieux et quelque peu sujet aux erreurs / risqué, car le seul moyen intégré est de supprimer et de recréer chaque partition. J'ai en fait quelques correctifs contre les commandes d' gptajout de renumérotation et de changement de type - je pourrais les ranger et les publier si vous êtes d'accord avec la reconstruction à gptpartir de la source dans XCode ...
pmdj
Je n'ai aucun problème à construire à gtppartir des sources, mais le code est-il bien testé? Je ne veux pas foirer ma table de partition. Existe-t-il également un moyen de le sauvegarder?
MrMage
Pour ajouter la partition, c'est gpt add.
pduey
1
@AeroCross Leur politique est publiée ici, developer.apple.com/library/mac/technotes/tn2166/_index.html#//… en pratique, elle est utilisée comme partition de démarrage si vous utilisez un logiciel RAID ou Core Storage (Fusion Drive et / ou File Vault) ou un logiciel similaire.
pmdj