Come riparare la partizione del disco rigido Mac mostrata come Fdisk_partition_scheme

8

La mia situazione sembra molto simile a come risolvere Disco rigido GUID danneggiato da MBR ma con differenze sufficienti che non sono riuscito a mettere insieme una soluzione sicura.

Ho un disco Toshiba da 3 TB in un enclosure USB utilizzato su un Mac con OS X El Capitain 10.11.3.

L'unità è stata configurata con una singola partizione. L'unità non era avviabile e non disponeva di un sistema installato, pertanto suppongo che non abbia una partizione di ripristino. Non posso dire con certezza che non sia mai stato installato un sistema, ma non credo. Non è stato utilizzato con Bootcamp o su qualsiasi computer non Mac.

L'unità funzionava normalmente per un lungo periodo di tempo, ma in seguito non è stata riconosciuta. Indagando con Utility Disco, mostra come avere un tipo di partizione di FDisk_partition_scheme . Sono sicuro che originariamente era il tipico default di Mappa delle partizioni GUID formattato come OS X Extended (Journaled) .

Non riesco a pensare a un uso o evento specifico che possa aver causato il cambiamento.

Ecco le informazioni che ho raccolto dall'unità.

elenco diskutil / dev / disk6

/dev/disk6 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *3.0 TB     disk6
   1:                       0xEE                         375.1 GB   disk6s1

informazioni diskutil / dev / disk6

   Device Identifier:        disk6
   Device Node:              /dev/disk6
   Whole:                    Yes
   Part of Whole:            disk6
   Device / Media Name:      DT01ABA300

   Volume Name:              Not applicable (no file system)

   Mounted:                  Not applicable (no file system)

   File System:              None

   Content (IOContent):      FDisk_partition_scheme
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 USB
   SMART Status:             Not Supported

   Total Size:               3.0 TB (3000592982016 Bytes) (exactly 5860533168 512-Byte-Units)
   Volume Free Space:        Not applicable (no file system)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         Not applicable (no file system)

   Device Location:          External
   Removable Media:          No

   Virtual:                  No
   OS 9 Drivers:             No
   Low Level Format:         Not supported

fdisk / dev / disk6

Disk: /dev/disk6    geometry: 97451/255/63 [1565565872 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 -  732566645] <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

gpt recover / dev / disk6

gpt recover: /dev/disk6: no primary or secondary GPT headers, can't recover

gpt -r -vv mostra / dev / disk6

gpt show: /dev/disk6: mediasize=3000592982016; sectorsize=512; blocks=5860533168
gpt show: /dev/disk6: PMBR at sector 0
       start        size  index  contents
           0           1         PMBR
           1  5860533167

gdisk / dev / disk6

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Ecco una schermata della prima parte del disco in wxHexEditor. L'EFI PART inizia a 4096.

HoiniziatoacercarelastringaHFSJiniziandoconunoffsetdi409642,comesuggeritoinaltrerisposte,manonl'hotrovatovicinolì.Cosìhocercatoapartiredall'iniziodeldiscoehotrovatolaprimaoccorrenzaall'offset314598400.

Tuttavia,secontinuoacercareleoccorrenzediHFSJ,trovomoltediquellechesembranoesattamenteugualieconmoltospazioattornoaloro,comelaprima.Quellicomincianoa360424448esonodistanziati32768aparte.Adesempio,conoffset360424448360457216360489984360522752360555520

HousatolaricercaTrovatuttiinwxHexEditoremisonointerrottadopoalcuniminuti.Neavevatrovatiunpaiodimigliaiaaquelpunto.Nonsonosicurodicosafarediquesti,semmai.

SonostatoancheingradoditrovareunasezioneetichettataEFISystemPartitionall'offset3000592961536.Questomostraancheilnomechel'unitàaveva,"Rosie".

Ecco le schermate della prima partizione HFSJ e della partizione del sistema EFI. Aggiunto uno screenshot dell'offset 8192 in base ai commenti.

Grazie per l'aiuto.

    
posta Doug Smith 05.03.2016 - 22:15
fonte

2 risposte

7

Provare quanto segue:

  • Ottieni l'identificativo del disco dell'unità esterna da 3 TB

    diskutil list
    

    Qui sotto presumo che l'identificativo del disco sia disk6

  • smonta il disco:

    diskutil umountDisk disk6
    
  • Sovrascrivi i primi 40 blocchi:

    sudo dd if=/dev/zero of=/dev/disk6 bs=512 count=40
    
  • Crea un nuovo gpt:

    sudo gpt create /dev/disk6
    
  • Controlla le informazioni sul disco con:

    diskutil info /dev/disk6
    

    Assicurati che la dimensione del blocco del dispositivo sia ancora 512 byte

    Puoi anche usare

    sudo gpt -r show /dev/disk6
    

    Se il gpt mostra:

       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2          32         Pri GPT table
    

    hai un disco & controller del disco che segnala una dimensione del blocco logico di 512 byte. Per favore continua con il prossimo passo.

    Se il gpt mostra:

       start        size  index  contents
           0           1         PMBR
           1           1         Pri GPT header
           2           4         Pri GPT table
    

    hai un disco & controller del disco che segnala una dimensione del blocco logico di 4096 byte. Per favore, fermati qui e aggiungi un commento.

  • Per prima cosa ricostruire la voce EFI con:

    sudo gpt add -b 40 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    

    A seconda delle dimensioni del disco e della versione di sistema, i volumi EFI di dimensioni diverse vengono creati se partizionati con Utility Disco: uno con dimensione MiB o uno con 300 MiB. Qui è ovvio che il tuo disco contiene 300 MiB EFI e probabilmente 4096 byte di spazio su disco non allocato: (314598400-1024) / 512 = 614448 (= Volume principale blocco iniziale) 614448-40-8 = 614400 (= dimensione di EFI)

  • Ricrea il tuo volume principale con:

    sudo gpt add -b 614448 -i 2 -s SizeOfVolume1 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

    La dimensione del volume principale può essere determinata dalla prima voce (corrotta e vecchia) della seconda tabella GPT: (3000592961536/512) = 5860533128 è il suo numero di blocco. Quindi la dimensione viene calcolata da 5860533128-614448 = 5859918680 blocchi. Poiché 5859918680 è divisibile per 8 (4096 dimensioni blocco fisico / 512 dimensioni blocco logico), questa è una buona ipotesi per le dimensioni del volume.

    La migliore ipotesi è finalmente:

    sudo gpt add -b 614448 -i 2 -s 5859918680 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

    La seconda ipotesi migliore è:

    sudo gpt add -b 614448 -i 2 -s 5859918672 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • Probabilmente il tuo volume perso viene montato ora. Verifica il volume con:

    diskutil verifyVolume disk6s2
    

    Se necessario, provare a riparare il volume.

    diskutil repairVolume disk6s2
    

Poiché il disco "danneggiato" è stato spostato in un caso diverso e il controller del disco è stata modificata la dimensione del blocco logico. La vecchia mappa delle partizioni è probabilmente basata su una dimensione di blocco logica di 4096 byte.

Per ripristinare la mappa delle partizioni nel vecchio caso (4096b) dovresti inserire quanto segue per ripristinare il GPT (basato sulla risposta di David Anderson):

  • Crea un nuovo gpt:

    sudo gpt create /dev/disk6
    
  • Per prima cosa ricostruire la voce EFI con:

    sudo gpt add -b 6 -i 1 -s 76800 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Ricrea il tuo volume principale con:

    sudo gpt add -b 76806 -i 2 -s 732457067 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • la mappa della partizione finale ha il seguente aspetto:

     sudo gpt -r show disk1
           start        size  index  contents
               0           1         PMBR
               1           1         Pri GPT header
               2           4         Pri GPT table
               6       76800      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
           76806   732457067      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
       732533873       32768         
       732566641           4         Sec GPT table
       732566645           1         Sec GPT header
    

In base alla parte 4096b questa "ritrasferisce" dopo aver installato il disco in una dimensione di blocco logico 512b in:

  • Crea un nuovo gpt:

    sudo gpt create /dev/disk6
    
  • Per prima cosa ricostruire la voce EFI con:

    sudo gpt add -b 48 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Ricrea il tuo volume principale con:

    sudo gpt add -b 614448 -i 2 -s 5859656536 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    

Questo differisce dalla prima parte (accettata) della mia risposta ma è quella giusta! Poiché EFI è effettivamente "vuoto" e i blocchi non allocati 262144 contengono solo zero, la risposta "prima e in qualche modo sbagliata" non influisce sull'operabilità del volume.

    
risposta data 05.03.2016 - 22:54
fonte
3

Questa non è una risposta, ma piuttosto un esempio di come estrarre le informazioni della partizione GPT dai dati che hai presentato. Le voci della partizione GPT secondaria (di backup) sono state utilizzate perché non hai pubblicato il contenuto delle voci della partizione GPT primaria. Il documento " Tabella delle partizioni GUID " è stato utilizzato per interpretare i dati.

L'ultimo LBA utilizzabile può essere trovato nell'intestazione GPT. Ciò si verifica all'indirizzo 8244. Il valore è

70 14 aa 2b 00 00 00 00 little endian = 0x2baa1470 = 732566640 @ 4096 bytes/block.

L'inizio delle voci GPT secondarie (di backup) inizia nel blocco successivo. Il valore è

(732566640 + 1) * 4096 = 3000592961536 bytes.  

Usando questo come inizio della voce della tabella delle partizioni EFI, ottengo i seguenti valori. L'inizio della partizione EFI, trovata all'indirizzo 3000592961568, è

06 00 00 00 00 00 00 00 little endian = 0x6 = 6 @ 4096 bytes/block.

La fine della partizione EFI, trovata all'indirizzo 3000592961576, è

05 2c 01 00 00 00 00 00 little endian = 0x12c05 = 76805 @ 4096 bytes/block.

Che dà una dimensione della partizione di

76805 - 6 + 1 = 76800 @ 4096 bytes/block.

L'inizio della partizione HFS, trovata all'indirizzo 3000592961696, è

06 2c 01 00 00 00 00 00 little endian = 0x12c06 = 76806 @ 4096 bytes/block.

La fine della partizione HFS, trovata all'indirizzo 3000592961704, è

70 94 a9 2b 00 00 00 00 little endian = 0x2ba99470 = 732533872 @ 4096 bytes/block.

Che dà una dimensione della partizione di

732533872 - 76806 + 1 = 732457067 @ 4096 bytes / block.

Se utilizzerai una dimensione di blocco di 512 byte, i risultati sopra indicati dovranno essere moltiplicati per un valore di 8 per convertire in 512 byte / blocco.

    
risposta data 06.03.2016 - 03:22
fonte

Leggi altre domande sui tag