8. Ripristinare una tabella delle partizioni cancellata

Di seguito sono indicate le istruzioni per recuperare manualmente una tabella delle partizioni cancellata. Ci sono utilità quali gpart o TestDisk che possono rendere questo compito considerevolmente più facile. Se tuttavia si sta leggendo questo documento perché si è stati sfortunati, questo è ciò che si deve fare:

  1. Creare una partizione che sia grande almeno quando lo era la prima partizione. La si può creare più grande, di un valore qualsiasi, della partizione originale. Se si sottostima il valore, ci sarà solo dolore e stridore di denti.

    
Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-23361, default 1): <RETURN>
    Using default value 1
    Last cylinder or +size or +sizeM or +sizeK (1-22800, default 22800): 13032
    
    Command (m for help): w
    

  2. Eseguire dumpe2fs sulla prima partizione e con grep estrarre il conteggio dei blocchi.

    Esempio:

    
           % dumpe2fs /dev/sda1 | grep "Block count:"
               Block count:              41270953
          
    Se non si è sicuri di questo valore, ripetere il passo 1 con una dimensione di partizione maggiore. Se il conteggio dei blocchi cambia, allora si era sottostimata la dimensione della partizione originale. Ripetere il passo 1 fino a che non si ottiene un conteggio dei blocchi costante.

  3. Rimuovere la partizione che si è appena creata

    
         Command (m for help): d
             Partition number (1-4): 1
          

  4. Creare una nuova partizione con esattamente la dimensione che si è ottenuta dal conteggio dei blocchi. Dato che non si può inserire la dimensione in blocchi in fdisk, è necessario calcolare quanti cilindri indicare. Ecco la formula:

    
  (numero di cilindri necessari) = (numero dei blocchi) / (dimensione dei blocchi)
    
      (dimensione dei blocchi) = (dimensione dell'unità) / 1024
    
      (dimensione dell'unità) = (numero delle testine) * (numero dei settori/cilindro) * (numero di byte/settore)
    

    Si consideri l'esempio seguente, in cui un disco fisso è stato partizionato in quattro partizioni primarie di 1, 2, 4 e 8 cilindri.

    
disk /dev/sda: 16 heads, 63 sectors, 23361 cylinders
    Units = cylinders of 1008 * 512 bytes
    
       Device Boot    Start       End    Blocks   Id  System
    /dev/sda1             1         2       976+  83  Linux
    /dev/sda2             3         5      1512   83  Linux
    /dev/sda3             6        10      2520   83  Linux
    /dev/sda4            11        19      4536   83  Linux
    
    fdisk fornisce nella testata del suo output le informazioni sulla configurazione di cui si ha bisogno. La dimensione dell'unità è 516096 (16 testine * 63 settori/cil * 512 byte/settore). La dimensione dei blocchi è 504 (516096 / 1024). Il numero dei cilindri necessari per la seconda partizione è pertanto 3 (1512 blocchi / 504). La tabella delle partizioni mostra che è proprio così: il primo cilindro è il 3, il secondo il 4 e l'ultimo è il 5, per un totale di tre cilindri. Il numero dei cilindri necessari per la terza partizione è calcolato in modo simile: 2520 blocchi / 504 = 5, il che corrisponde ai cilindri 6,7,8,9,10. Si noti che questo calcolo non funziona per la prima partizione, perché il conteggio dei blocchi è sbagliato (976 invece di 1008). Il segno più indica che non tutti i blocchi sono inclusi nel valore di fdisk. Quando si tenta di fare il calcolo (976 / 504) si ottiene 1.937. Sapendo che il numero dei cilindri deve essere un intero, si può semplicemente arrotondare per eccesso.

  5. Eseguire e2fsck su di essa per verificare che sia possibile leggere la nuova partizione.

  6. Ripetere i passi da 1 a 5 per le partizioni restanti.

Montare nuovamente le partizioni. Sorprendentemente, tutti i propri dati saranno presenti.

Il merito va a: Mike Vevea, jedi sys admin, per aver fornito la strategia di base.