Aggancia questa barra allo schermo |  Disattiva gli effetti grafici


Recupero di tabelle delle partizioni perse


In questo HOWTO per semplicità farò riferimento pratico solo a partizioni primarie.

La tabella delle partizioni si trova nel Master Boot Record, è il settore di avvio di 512 byte, che è anche il primo settore del disco fisso, i primi 445 byte contengono il codice eseguibile dell'MBR e a partire dal byte 446, ci sono quattro gruppi di 16 byte ciascuno, che identificano le partizioni. Quattro gruppi di 16 byte significa che c'è posto solo per quattro partizioni, infatti un disco fisso non può avere più di quattro partizioni primarie, tra cui solo una può essere una partizione estesa che potrà contenere molte partizioni logiche nel caso ci sia il bisogno di superare il limite delle quattro partizioni. Quindi se all'inizio del disco sono registrate le informazioni delle quattro partizioni primarie, eventuali partizioni logiche saranno descritte all'inizio della partizione estesa e siccome ogni partizione logica contiene un puntatore alla successiva, teoricamente possono essere in numero illimitato.

Per riuscire ad individuare tutti i marcatori di inizio partizioni, è possibile utilizzare gpart. Nell'esempio qui sotto verrà copiato tutto l'output di gpart in un file di log in modo da poterlo sempre visionare:

# gpart -vfn s -l /gpart.log /dev/sda

Durante il processo inizieranno a visualizzarsi i risultati ottenendo delle informazioni simili a queste:

dev(/dev/sda) mss(512) chs(38913/255/63)(LBA) #s(625137345) size(305242mb)
Primary partition(1)
type: 131(0x83)(Linux ext2 filesystem)
size: 76293mb #s(156248127) s(63-156248189)
chs: (0/1/1)-(1023/254/63)d (0/1/1)-(9725/254/63)r
hex: 00 01 01 00 83 FE FF FF 3F 00 00 00 3F 28 50 09

Primary partition(2)
type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX) (BOOT)
size: 76293mb #s(156248190) s(156248190-312496379)
chs: (1023/254/63)-(1023/254/63)d (9726/0/1)-(19451/254/63)r
hex: 80 FE FF FF 07 FE FF FF 7E 28 50 09 7E 28 50 09

Primary partition(3)
type: 131(0x83)(Linux ext2 filesystem)
size: 152656mb #s(312640965) s(312496380-625137344)
chs: (1023/254/63)-(1023/254/63)d (19452/0/1)-(38912/254/63)r
hex: 00 FE FF FF 83 FE FF FF FC 50 A0 12 C5 85 A2 12

Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
hex: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Una volta trovate queste informazioni, abbiamo tutto il necessario per poter ricreare le partizioni perse identiche a prima dell'incidente utilizzando fdisk. Infatti alla voce type ci dice il filesystem utilizzato, alla voce size la dimensione in megabyte della partizione (utile per capire di quale partizione si tratta ed anche se era effettivamente esistente) e infine la voce chs, che è quella più importante, mostra la posizione della partizione sul disco indicandone cilindro/testina/settore.
Quindi, conosciute le posizioni precise di fine partizioni, ma soprattutto quelle di inizio, espresse in cilindri, sarà facile eseguire fdisk per ricrearle:

# fdisk /dev/sda

Qui sotto sono riportate le partizioni relative alla scansione con gpart:

Disk /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cilindri of 16065 * 512 = 8225280 bytes

Dispositivo Boot Start End Blocks Id System
/dev/sda1 1 9726 78124063+ 83 Linux
/dev/sda2 * 9727 19452 78124095 7 HPFS/NTFS
/dev/sda3 19453 38913 156320482+ 83 Linux

A questo punto, se i cilindri iniziali delle partizioni create coincidono con quelle vecchie e se non sono stati sovrascritti dati per altri motivi, il lavoro sarà perfettamente riuscito.

Scritto da: Andrea Peluso (sya54M)

Commenti

Nessun commento.

I campi contrassegnati con * sono obbligatori.

Condividi sui tuoi social preferiti!

Facebook Linkedin Twitter Google+
.