Per determinare cosa c'è di sbagliato con i tuoi dischi rigidi o volumi devi prima ottenere una panoramica. Gli strumenti migliori per ottenere questo sono diskutil
e gpt
- entrambi gli strumenti da riga di comando che devono essere eseguiti in Terminal.app.
Apri Terminal.app e inserisci:
diskutil list
Per eseguire un comando devi sempre inserire il tasto Invio .
Il comando sopra fornirà qualcosa di simile a questo (a seconda del numero di dischi nel tuo Mac):
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.1 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh HD 499.2 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk1
1: EFI EFI 209.7 MB disk1s1
/dev/disk2
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk2
2: Microsoft Basic Data tower 1 1.0 TB disk2s2
L'esempio mostra quanto segue:
- disk0 è l'unità di sistema che contiene una partizione EFI (disk0s1), il volume di sistema principale "Macintosh HD" (disco0s2) e un volume di ripristino (disco0s3). Tutte le dimensioni delle partizioni (0,2 GB + 499 GB + 0,7 GB) si sommano alla dimensione totale del disco (500 GB)
- disk1 è un'unità da 1 TB che contiene solo EFI con una dimensione di 200 MB e con 999,8 GB di spazio vuoto
- disk2 è un'unità da 1 TB contenente un volume da 1 TB probabilmente formattato in FAT32, ExFAT o NTFS
Ora si può dedurre che il volume mancante tower 2 risiedeva su disco1.
Dopo un riavvio, gli identificatori del disco del secondo e del terzo disco possono essere scambiati! Quindi esegui sempre diskutil list
prima di manipolare le tabelle delle partizioni!
Per avere uno sguardo più ravvicinato sul disco1 usa gpt
:
sudo gpt -r show /dev/disk1
Questo rivelerà:
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 1953115495
1953525135 32 Sec GPT table
1953525167 1 Sec GPT header
Questo significa:
- Il disco ha una tabella di partizione GUID (GPT)
- La prima partizione (index = 1) è una partizione di tipo EFI (C12A7328-F81F-11D2-BA4B-00A0C93EC93B), a partire dal blocco 40 e con una dimensione di 409600 blocchi (~ 209,7 MB)
- A partire dal blocco 409640 i blocchi 1953115495 (~ 1 TB) del disco non sono assegnati a una partizione.
Puoi presumere che la tua partizione "persa" (con il nome del volume tower 2 ) risieda qui.
Dopo aver aggiunto una partizione, è necessario formattarla e creare un file system. Il file system può essere (oltre gli altri): HFS +, ExFAT o NTFS
Se conosci il file system precedente, puoi continuare a ripristinare una partizione. Se non conosci il file system, puoi determinarlo cercando le tipiche intestazioni del file system.
Per determinare un volume HFSJ precedente, utilizzare:
sudo hexdump /dev/disk1 | grep "48 46 53 4a"
Questo cercherà la stringa "HFSJ" sul tuo disco raw. Dopo aver ottenuto i primi risultati, inserisci semplicemente ctrl C per annullare il comando.
Sul tuo tipo di disco dovresti ottenere i seguenti risultati:
c805400 48 2b 00 04 80 00 20 00 48 46 53 4a 00 00 01 ff
ca13e00 48 2b 00 04 80 00 20 00 48 46 53 4a 00 00 01 ff
ca40e00 48 2b 00 04 80 00 20 00 48 46 53 4a 00 00 01 ff
...
Qui la linea importante è la prima: c805400 48 2b 00 04 80 00 20 00 48 46 53 4a 00 00 01 ff
con c805400 come offset in esadecimale. Convertito con un servizio hex2dec questo significa un offset del byte 209736704 (dividendolo per 512 byte / blocco, risultato è uguale al blocco 409642). In genere il terzo blocco di un volume HFSJ contiene la stringa "HFSJ". Quindi hai trovato l'inizio di un volume HFSJ: blocco 409640 ( BlockF ).
La fine di un volume HFSJ può essere trovata di conseguenza perché il terzo blocco dell'ultimo contiene l'ultima occorrenza di HFSJ:
sudo hexdump -s 930g /dev/disk1 | grep "48 46 53 4a"
L'opzione -s significa: salta i byte di offset dall'inizio dell'input.
Con l'ultimo offset (e facendo la matematica come sopra) puoi determinare l'ultimo blocco ( BlockL) del precedente volume HFSJ aggiungendo semplicemente 2 blocchi. La dimensione del volume HFSJ è quindi (BlockL-BlockF).
Con tutti i dati necessari raccolti puoi ora provare a ripristinare il volume perso tower 2 con il comando sudo gpt add ...
.
Per aggiungere una voce della partizione che devi eseguire:
sudo gpt add -i number -b number -s number -t type diskX
con
- -i numero indice
- -b numero del primo blocco
- -s dimensioni nei blocchi
- -t tipo di partizione
Non conosco né il primo offset né il secondo offset del tuo volume tower 2 , ma il comando seguente potrebbe funzionare e le dimensioni immesse sono probabili valori predefiniti:
sudo gpt add -2 -b 409640 -s 1952443704 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk1
Dopo aver aggiunto questa voce nella tabella delle partizioni, il volume dovrebbe essere montato automaticamente.
Controlla il disco e il volume con:
diskutil verifyDisk disk1
diskutil verifyVolume disk1s2
Se è necessaria una riparazione, usa la riparazione "prefisso" invece di verificare!
Se hai domande o non trovi la stringa "HFSJ", aggiungi un commento con @klanomath !