Partitionstabelle is weg

  • Thread starter Thread starter TamCore
  • Start date Start date
T

TamCore

Guest
Nabend,
Hat jemand nen brauchbares Script/Programm für mich, mit dem ich meine verschollene Partitionstabelle wiederherstellen kann?
Des System läuft noch.
Code:
$ fdisk -l /dev/sda
Platte /dev/sda: 250.1 GByte, 250059350016 Byte
255 Köpfe, 63 Sektoren/Spuren, 30401 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Disk identifier: 0x91688f2c

Festplatte /dev/sda enthält keine gültige Partitionstabelle

$ df | grep sda
Dateisystem          1K‐Blöcke   Benutzt Verfügbar Ben% Eingehängt auf
/dev/sda2             48054436  42374292   3239068  93% /
/dev/sda3            192243960 167690084  14788368  92% /data
/dev/sda1                62193     10910     48072  19% /boot
sda1 = ext2
sda2 = ext4
sda3 = ext4 mit cryptsetup

Hoffe mir kann jemand helfen.

Gruß.
 
Ein Hacker würde ohne zu zögern die Informationen aus /proc/partitions nehmen und daraus eine neue Partitionstabelle basteln. Wie das Beispiel zeigt, sind die Zusammenhänge offensichtlich.

Code:
# fdisk -l

Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1       942   7566583+   7  HPFS/NTFS
/dev/hda2           943     19457 148721737+   5  Extended
/dev/hda5           943      1465   4200966    c  Win95 FAT32 (LBA)
/dev/hda6          1466      2960  12008556   83  Linux
/dev/hda7          2961      3210   2008093+  82  Linux swap
/dev/hda8          3211      4207   8008371   83  Linux
/dev/hda9          4208     10433  50010313+  83  Linux
/dev/hda10        10434     19457  72485248+  83  Linux

Disk /dev/hdc: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hdc1             1     19457 156288321   83  Linux

# cat /proc/partitions 
major minor  #blocks  name

   3     0  156290904 hda
   3     1    7566583 hda1
   3     2          1 hda2
   3     5    4200966 hda5
   3     6   12008556 hda6
   3     7    2008093 hda7
   3     8    8008371 hda8
   3     9   50010313 hda9
   3    10   72485248 hda10
  22     0  156290904 hdc
  22     1  156288321 hdc1
 
Erst mal musst du natürlich ein Backup anlegen.

Wie du vermutlich weißt oder vermutet hast, kann die Tabelle wiederhergestellt werden, da der Kernel die Informationen noch im Speicher hat. Ein Skript gibt es dafür aber wohl kaum.

Ich würde die Informationen in /sys/block/sda auslesen. Bspw. wird bei mir folgenden ausgegeben

Code:
xxxx:/sys/block/sda# cat sda2/size 
112455
xxxx:/sys/block/sda# cat sda2/start 
1975995
xxxx:/sys/block/sda/sda2# fdisk -lu /dev/sda

Disk /dev/sda: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x7c0aeb56

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63     1975994      987966   83  Linux
/dev/sda2         1975995     2088449       56227+  83  Linux
/dev/sda3         2088450   312576704   155244127+  8e  Linux LVM
/dev/sda4       312576705  2930272064  1308847680    5  Extended
/dev/sda5       312576768  2930272064  1308847648+  83  Linux

Der Wert in start stimmt direkt überein. Size wird offenbar in 512 Byte Blöcken angegeben. Das + bei der Ausgabe der Länge je Partition kann man als ,5 lesen und ein Block besteht bei fdisk aus 1024 Byte. Es gilt 56227,5*2 = Anzahl der 512 Byte Sektoren der Partition = 112455, passt also. Du sollltest mit den Werten aus /sys/block/sda nun die Werte rekonstruieren können. Dann starte fdisk -u /dev/sda, gebe alle Partitionen ein, lasse dir die Partitionen mit dem Kommando p nochmals anzeigen, prüfe genau, ob die Ausgaben zu den Werten aus /sys/block/sda passen und beende fdisk nur dann mit w, falls sie passen, sonst mit q.

Du kannst auch alle Werte und die Ausgabe von p aus fdisk hier posten, bevor du die neue Tabelle durch das Beenden von fdisk mit w schreiben lässt, damit noch ein paar andere Augen darüberschauen.


Edit: Die Daten aus /proc/partitions sind zwar ähnlich, aber zum Einen wird das ,5 verschleiert und zum Anderen gäbe es beim reinen Hintereinanderreihen der Größen Datensalat, falls es ungenutzen Speicherplatz zwischen deinen Partitionen gibt.
 
Last edited by a moderator:
Code:
Platte /dev/sda: 250.1 GByte, 250059350016 Byte
255 Köpfe, 63 Sektoren/Spuren, 30401 Zylinder, zusammen 488397168 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes
Disk identifier: 0x91688f2c

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sda1              63      128519       64228+  83  Linux
/dev/sda2          128520    97771589    48821535   83  Linux
/dev/sda3        97771590   488397167   195312789   83  Linux
Hab für den letzten Sektor der jeweiligen Partition immer den Startsektor der nächsten Partition -1 gerechnet.
Wenn ich jetz die Partitionstabelle von fdisk überprüfen lasse, kommt des raus:
Code:
62 unallocated 512-byte sectors

Noch irgendwelche Ideen/Vorschläge bevor ich die neue Tabelle speichern lasse?
 
Bitte poste noch die Werte aus /sys/block/sda (siehe mein vorheriger Post). Ohne die haben wir keine Chance, festzustellen, ob die Partitionstabelle passt.
 
Code:
$ cat sda1/size sda1/start 
128457
63

$ cat sda2/size sda2/start 
97643070
128520

$ cat sda3/size sda3/start 
390620475
97771590
 
Die ersten zwei Partitionen sehen gut aus. Die dritte wäre mit der neuen Partitionstabelle ca 2 MB größer als zuvor. Das ist dem daraufliegenden Dateisystem aber in der Regel egal.


Aus meiner Sicht kannst du die Tabelle schreiben lassen. Wie gesagt, unbedingt ein Backup davor machen. Denke vor dem Neustart auch daran, dass du deinen boot manager bzw. mbr wieder auf die Platte schreiben lassen musst.
 
Backup würd ich gerne machen, leider is die einzige Platte auf der noch Platz gewesen wär meine Backup Platte und die is letzte Woche abgeraucht.
Grub hab ich eben mit mit "setup (hd0)" wieder in den MBR geschrieben.
 
Backup würd ich gerne machen, leider is die einzige Platte auf der noch Platz gewesen wär meine Backup Platte und die is letzte Woche abgeraucht.
Kleiner Hinweis dazu: Externe Festplatten mit USB-Anschluss gibt es derzeit für recht humane Preise beim Elektronikfachhändler deiner Wahl. Übrigens allesamt mit einer Kapazität über 250 GB...
 
Back
Top