Newsgroup: it.comp.os.linux.iniziare
Titolo: !urgente! persa tabella partizione

per un errore ho sovrascritto la partition table e i primi settori
della prima partizione (ho 4 partizioni; quelle che mi interessano
sono la 2 e la 4, la 1 era pressochè vuota la 3 è la swap)
finchè il sistema è up non c'è problema perchè il kernel ce l'ha in
memoria, ma non posso spengere il computer finchè non la recupero.
sto usando gpart per fare una scansione del disco (mi ha salvato in
molte situazioni) ma per ora non ho risultati. so che se la prima
partizione si era salvata mi avrebbe già recuperato tutto, ma al
momento non so a che punto sta visto che non gli ho dato parametri (la
paura è che dopo questa scansione, che mi darà solo risultati a
schermo, dovrò rilanciarla per la correzione)
ho il backup ma vorrei evitare, se possibile, di reinstallare tutto.
Qualcuno conosce una soluzione?
mi sono salvato l'output di /proc/partition (non si sa mai, a mio
parere dovrebbe essere sufficiente per ricostruire la tabella, ma non
saprei come fare)
   8        0  244198584 sda
   8        1   51199123 sda1
   8        2  153596838 sda2
   8        3    3911827 sda3
   8        4   35487585 sda4
Grazie,
Matteo

    8        4   35487585 sda4
Per prima cosa lanci fdisk e crei una tabella vuota con "o". Poi fai un 
print della tabella (che sar� vuota) con "p" e ti annoti la dimensione di un 
cilindro che � riportata in testa. E' una cosa come questa:
Disk /dev/sda: 120.0 GB, 120034123776 bytes
240 heads, 63 sectors/track, 15505 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Disk identifier: 0x54e4fb58
Nel mio caso � 7741440.
A questo punto tu puoi sapere quanti cilindri � grande ciascuna partizione e 
sapendo che l'allineamento � sempre al cilindro (se il disco non � stato 
manipolato in modo errato), puoi calcolarti i cilindri di inizio e fine 
delle partizioni.
Sempre nel mio caso abbiamo che /proc/partitions riporta questi dati:
    8        0  117220824 sda
    8        1    6297448 sda1
    8        2    2101680 sda2
    8        3    2101680 sda3
    8        4  106716960 sda4
che sono espressi in blocchi (normalmente di 1024 bytes)
Con i cilindri di 7741440 otteniamo:
sda1 = 6297448*1024/7741440 = 832.9957 => 833
sda2 = 2101680*1024/7741440 = 278
sda3 = 2101680*1024/7741440 = 278
sda4 = 106716960*1024/7741440 = 14116
Non ti curare dell'arrotondamento di sda1, � normale perch� l'inizio della 
prima partizione non � realmente allineato al cilindro. Sarebbe meno normale 
se venissero arrotondamenti sulle altre perch� significherebbe che la 
geometria del tuo disco � sputtanata.
A questo punto � semplice ricreare le partizioni.
/dev/sda1 va da 1 a 833
/dev/sda2 va da 833+1=834 a 833+278=1111
/dev/sda3 va da 1111+1=1112 a 1111+278=1389
/dev/sda4 va da 1389+1=1390 a 1389+14116=15505
E un fdisk -l /dev/sda me lo conferma.
fdisk -l /dev/sda
Disk /dev/sda: 120.0 GB, 120034123776 bytes
240 heads, 63 sectors/track, 15505 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Disk identifier: 0x54e4fb58
    Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         833     6297448+  83  Linux
/dev/sda2             834        1111     2101680   82  Linux swap / Solaris
/dev/sda3            1112        1389     2101680   83  Linux
/dev/sda4            1390       15505   106716960   8e  Linux LVM
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.

> sono la 2 e la 4, la 1 era pressoch� vuota la 3 � la swap)
Non so se usi anche WindowsZozz, ci sono diversi programmi che tentano il
recupero della partizione perduta. Dovresti togliere il tuo HD e montarlo su
un'altro PC con il vituperato MS e tenti da li. Attento che piu' prove fai,
con i vari S.O. e prg, e meno saranno le probabilita' di recuperare qualcosa.
Cerca in rete i sistemi migliori e prova. Dovresti al limite fare una copia di
backup TOTALE con prg di clonazione dell'HD. Dipende da cosa avevi sul
quell'HD se il gioco vale la candela. Ciao!
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

 sono la 2 e la 4, la 1 era pressochè vuota la 3 è la swap)
Forse questo:
http://www.cgsecurity.org/wiki/TestDisk
Auguri :)
Ciao.
-- 
*** Linux user # 198661 ---_ ICQ 33500725 ***
    ***  Home  
http://www.kailed.net
  ***
        ***  Powered by openSUSE  ***

 Forse ma non garantisco.
Hei zipman.. il giorno che cambierai newsgroup avvertimi perch� non 
voglio perdermi i tuoi post :-D
Stampato, protocollato e archiviato tra i miei appunti pi� preziosi :-)

Per prima cosa lanci fdisk e crei una tabella vuota con "o". Poi fai un 
Clap clap!!!
Erano secoli che non vedevo un "low level" di questo tipo :-)

ottimo workaround. ora lo provo
nel frattempo sono "anche" andato a dormire :-) lasciando ovviamente
il pc acceso con gpart running che mi ha dato questo output:
Primary partition(1)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 149996mb #s(307193676) s(102398310-409591985)
   chs:  (1023/254/63)-(1023/254/63)d (6374/0/1)-(25495/235/6)r
   hex:  00 FE FF FF 07 FE FF FF 66 79 1A 06 00 00 00 00 4C 67 4F 12
00 00 00 00
Primary partition(2)
   type: 130(0x82)(Linux swap or Solaris/x86)
   size: 3820mb #s(7823648) s(409593240-417416887)
   chs:  (1023/254/63)-(1023/254/63)d (25496/0/1)-(25982/254/56)r
   hex:  00 FE FF FF 82 FE FF FF 98 E5 69 18 00 00 00 00 20 61 77 00
00 00 00 00
(che sarebbero rispettivamente la seconda e la terza) mentre la quarta
(che a questo punto mi interessa di meno) non l'ha trovata.
Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xbb9db378
ok.
adesso faccio i test che mi hai detto.
Matteo

 Qualcuno conosce una soluzione?
Una possibilità.
Con
$ ls /proc/partitions
il kernel ti dice quali partizioni ha in memoria.
Con
# hdparm -g /dev/sdax
il kernel ti dice quel che lui ha in memoria sulla partizione
/dev/sdax: dove comincia e quanto è grossa, in settori.
Per ulteriori dettagli ed esempio:
http://lkml.indiana.edu/hypermail/linux/kernel/9907.1/0453.html
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
____________________________________________________________________________
Non sprecare i cicli idle della tua CPU: 
http://boinc.berkeley.edu/index.php

 Qualcuno conosce una soluzione?
Una possibilità.
Con
$ cat /proc/partitions



Mischiando un po' calcolo settori, gpart, testdisk, hdparm e vmware
(si, una macchina virtuale per testare in readonly la tabella delle
partizioni prima del reboot non guasta)
Sembrerebbe che ci siamo, ma con un piccolo difetto. La seconda
partizione è leggermente più grande perchè ricostruita con fdisk (era
inizialmente stata fatta con gparted); come si vede dall'output di
gpart, la partizione non finisce al termine del settore ma leggermente
prima. infatti 153596838/8225280 da 19121,9219 e non 19122
ora non ho ancora rebootato ma dalla macchina virtuale sembra che lilo
(che è installato sulla quarta partizione) riesca a caricare il kernel
in ram, e questo credo che sia sufficiente a garantire che funzioni.
Beh, incrociate le dita anche per me... sto per rebootare.
Ciao
Matteo

Ha funzionato perfettamente.
Qualche problema con un file di sistema di windows partito ma niente
di chè.
sto anche recuperando decentemente la partizione 1 (purtroppo un file,
forse l'unico, che mi interessava non c'è più, no problem comunque)
Grazie,
Matteo