GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare l'offset di un filesystem Ext4?

Ho un disco rigido guasto che non è in grado di scrivere o leggere i primi settori del disco. Dà solo errori di I/O e questo è tutto ciò che c'è. Ci sono altre aree del disco che sembrano (per lo più) a posto.
Sto cercando di montare una partizione (ext4) e vedere se riesco ad accedere ad alcuni file che vorrei recuperare. Dal momento che il mount il comando supporta un offset opzione, dovrei essere in grado di montare il filesystem anche se la tabella delle partizioni è illeggibile e non scrivibile. Il problema è come trovare l'offset. Nessuno degli strumenti ext4 sembra avere questa caratteristica particolare.

Risposta accettata:

Non esiste un offset standard di per sé, poiché ovviamente puoi avviare la partizione dove vuoi. Ma supponiamo per un momento che stai cercando la prima partizione, e che sia stata creata accettando più o meno i valori predefiniti. Ci sono quindi due posti in cui puoi trovarlo, supponendo che tu stia utilizzando una tabella delle partizioni DOS tradizionale:

  1. A partire dal settore 63 (512 byte). Questa è stata la tradizione per molto tempo e ha funzionato fino a quando qualcuno non ha inventato dischi 4K...
  2. A partire dal settore (512 byte) 2048. Questa è la nuova tradizione, per ospitare dischi 4K.
  3. Un'opzione bonus! Sarting al settore 56. Questo è ciò che accade se qualcuno sposta la partizione da 63 start per allinearla con un settore 4K.

Ora, per procedere, ti consigliamo di prendere il tuo strumento di dump esadecimale preferito e imparare qualcosa sul layout del disco ext4. In particolare, inizia con 1024 byte di riempimento, che ext4 ignora. Poi arriva il superblocco. Puoi riconoscere il superblocco controllando il numero magico 0xEF53 all'offset 0x38 (dall'inizio del superblocco o 0x438 dall'inizio della partizione o 1080 in decimale.) Il numero magico è little-endian. Quindi è effettivamente archiviato su disco come 0x53EF.

Ecco come appare con xxd -a :

0000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
*
0000400: 0040 5d00 0084 7401 33a0 1200 33db a600 [email protected]]...t.3...3...
0000410: 4963 5300 0000 0000 0200 0000 0200 0000 IcS.............
0000420: 0080 0000 0080 0000 0020 0000 6637 0952 ......... ..f7.R
0000430: 6637 0952 0200 1600 53ef 0100 0100 0000 f7.R....S.......
0000440: 9938 f851 004e ed00 0000 0000 0100 0000 .8.Q.N..........

Nota che quando dai l'offset per montare (o perdere), devi dare l'offset al punto in cui inizia il padding, non al superblocco.

Correlati:non riesci a trovare le notifiche di YouTube sui commenti?

Ora, se non è la prima partizione, o altrimenti non è in uno dei due (tre) punti previsti, in pratica puoi cercare il numero magico 0xEF53. Questo è ciò che testdisk (consigliato in un commento) fa per te.


Linux
  1. Come risolvere:impossibile scrivere nella partizione Ext3 o Ext4

  2. Come trovare le opzioni di montaggio del filesystem attualmente montato

  3. Come trovo la dimensione massima dello stack?

  4. Come trovare il file manager predefinito?

  5. Come faccio a sapere cosa sta occupando tutto lo spazio sulla mia partizione /?

Come trovare la versione di Redhat Linux installata

Come modificare l'UUID della partizione nel filesystem Linux

Come trovare il tipo di filesystem montato in Linux

Come spostare la partizione Ext4 davanti alla partizione di avvio?

Come modificare lo schema di partizione sul tuo server Linux?

Android - Come trovare il percorso della partizione di swap sulla scheda SD?