Come risolvere la partizione del disco rigido del Mac mostrata come Fdsik_partition_scheme


8

La mia situazione sembra molto simile a come riparare il disco rigido GUID danneggiato a MBR ma con abbastanza differenze che non sono stato in grado di mettere insieme una soluzione sicura.

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

L'unità è stata impostata con una singola partizione. L'unità non era avviabile e non aveva un sistema installato, quindi presumo che non avrebbe nemmeno 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 nessun computer non Mac.

L'unità ha funzionato normalmente per molto tempo ma non è stata riconosciuta di recente. Nell'investigare con Utility Disco, mostra che ha un tipo di partizione di FDisk_partition_scheme . Sono sicuro che originariamente era il tipico default della GUID Partition Map formattata come OS X Extended (Journaled) .

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

Ecco le informazioni che ho raccolto dal disco.

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

diskutil info / 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 recuperare / dev / disk6

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

gpt -r -vv show / 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 dell'unità in wxHexEditor. La PARTE EFI inizia alle 4096.

Inizio dell'unità in wxHexEditor

Ho iniziato a cercare la stringa HFSJ a partire da un offset di 409642, come suggerito in altre risposte, ma non l'ho trovata lì vicino. Così ho cercato a partire dall'inizio del drive e ho trovato la prima occorrenza all'offset 314598400.

Tuttavia, se continuo a cercare le occorrenze di HFSJ, ne trovo molte che sembrano esattamente uguali e con molto spazio zero attorno ad esse, come la prima. Quelli iniziano a 360424448 e sono distanziati 32768. Ad esempio, agli offset 360424448 360457216 360489984 360522752 360555520

Ho usato la ricerca Trova tutto in wxHexEditor e mi sono fermato dopo pochi minuti. Ne aveva trovati un paio di migliaia a quel punto. Non sono sicuro di cosa farsene, se non altro.

Sono stato anche in grado di trovare una sezione con l'etichetta Partizione di sistema EFI all'offset 3000592961536. Ciò mostra anche il nome dell'unità, "Rosie".

Ecco le schermate della prima partizione HFSJ e della partizione di sistema EFI. Aggiunta una schermata dell'offset 8192 basata sui commenti.

Prima partizione HFSJ, partizione EFI alla fine e offset 8192.

Grazie per qualsiasi aiuto.


Se sembrasse che il tuo disco avesse una dimensione di blocco di 4096 byte e ora abbia una dimensione di 512 byte. Poiché la dimensione del blocco non è memorizzata sul disco stesso, la mia domanda sarebbe: Hai cambiato l'hardware in qualche modo? Inoltre, se la dimensione del blocco era 4096 byte, dovresti essere in grado di leggere le vecchie voci della tabella GPT a partire da 8192 byte. Finora hai pubblicato solo l'intestazione GPT a partire da 4096 byte. Il dump esadecimale può essere riconvertito nei valori decimali corretti utilizzando le informazioni fornite qui .
David Anderson,

@DavidAnderson, L'hardware è cambiato in quanto l'unità si trova in una custodia USB diversa. Potrei ottenere il caso originale se questo aiuta qualcosa.
Doug Smith,

@DavidAnderson Ho cambiato la schermata per aggiungerne una per l'offset 8192. Qui mostra una partizione di sistema EFI .
Doug Smith,

@klanomath Sì, la tua risposta collegata era corretta. Ho confuso blocco e offset. Tuttavia, sono tutti zeri attorno all'offset 209736704. Ho anche provato a dividerlo per 8 (26217088) nel caso in cui ci fosse un problema con una dimensione di blocco 4096. Questo mi mette in molti dati, ma nessuna stringa HFSJ in vista.
Doug Smith,

@klanomath, ho iniziato il tuo processo. Il mio tentativo di sovrascrivere i primi 40 blocchi in realtà non ha scritto alcun dato:0+0 records in 0+0 records out 0 bytes transferred in 0.000013 secs (0 bytes/sec)
Doug Smith

Risposte:


9

Si prega di provare quanto segue:

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

    diskutil list
    

    Di seguito suppongo che l'identificatore del disco sia disk6

  • smontare 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 di 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
    

    si dispone di un controller disco e disco che riporta una dimensione di blocco logico di 512 byte. Continua con il passaggio successivo.

    Se il gpt mostra:

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

    si dispone di un controller disco e disco che riporta una dimensione di blocco logico di 4096 byte. Per favore, fermati qui e aggiungi un commento.

  • Ricostruire innanzitutto 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 del sistema, i volumi EFI di dimensioni diverse vengono creati se partizionati con Utility Disco: uno con dimensioni 200 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 (= Avvia il volume principale del blocco) 614448-40-8 = 614400 (= dimensione di EFI)

  • Ricostruisci 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 (danneggiata 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 del blocco fisico / 512 dimensioni del 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 e controller del disco diversi, la dimensione del blocco logico è stata modificata. La vecchia mappa delle partizioni si basa probabilmente su una dimensione di blocco logico 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
    
  • Ricostruire innanzitutto la voce EFI con:

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

    sudo gpt add -b 76806 -i 2 -s 732457067 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk6
    
  • la mappa delle partizioni finale è simile alla seguente:

     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
    

Basato sulla parte 4096b, questo "ritrasforma" dopo aver installato il disco in un caso di dimensione di blocco logico 512b per:

  • Crea un nuovo gpt:

    sudo gpt create /dev/disk6
    
  • Ricostruire innanzitutto la voce EFI con:

    sudo gpt add -b 48 -i 1 -s 614400 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B /dev/disk6
    
  • Ricostruisci 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 (accettata) parte della mia risposta, ma è quella giusta! Poiché EFI è in realtà "vuoto" e i blocchi non allocati 262144 contengono solo zeri, la risposta "prima e in qualche modo errata" non influisce sull'operabilità del volume.


2

Questa non è una risposta, ma piuttosto un esempio di come estrarre le informazioni sulla partizione GPT dai dati presentati. Sono state utilizzate le voci della partizione GPT secondaria (backup) perché non sono stati pubblicati i contenuti delle voci della partizione GPT primaria. Il documento " Tabella delle partizioni GUID " è stato utilizzato per interpretare i dati.

L'ultimo LBA utilizzabile si trova 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 al 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, che si trova 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, che si trova 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 si intende utilizzare 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.


+1 Otteniamo una dimensione identica e un blocco iniziale per EFI e un blocco iniziale identico ma una dimensione diversa del volume principale.
klanomath,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.