Gelöschte Partititionstabelle wiederherstellen

Wenn die Partitionstabelle eines Rechners — aus welchen Gründen auch immer — gelöscht wurde, kann man nicht mehr so einfach auf seine Daten zugreifen, da dem Rechner/OS die Informationen über Beginn und Ende der einzelnen Abschnitte auf der Festplatte fehlt.

Hinweis: Ich übernehme keine Haftung für Schäden, die durch das Benutzen dieser Hinweise entstehen!

Backup des MBR und der Partitionstabelle

Um diesen Super-GAU von vornherein zu verhindern, empfiehlt es sich, ein Backup des MBR (und damit auch der Partitionstabelle) anzulegen. Unter Linux geschieht das mit dem Befehl

dd if=/dev/sda of=mbr-backup bs=512 count=1

Gegebenenfalls muss /dev/sda durch das entsprechende gerät ersetzt werden. Der MBR wird dann in die Datei mbr-backup gespeichert. Logischerweise sollte diese Datei auf einem externen Gerät (USB-Stick, CD-ROM usw.) gesichert werden, da die Festplatte ja bei Verlust des MBR nicht mehr genutzt werden kann.

Ist nun der MBR gelöscht worden, kann von einer Linux-CD (Knoppix, Installations-CD der verwendeten Distribution etc.) gestartet werden und mit folgendem Befehl der MBR aus der Backup-Datei wiederhergestellt werden:

dd if=mbr-backup of=/dev/sda bs=512 count=1

/dev/sda ist hier wiederum durch das entsprechende Gerät zu ersetzen.

Partitionstabelle im laufenden Betrieb gelöscht

Wurde die Partitionstabelle gelöscht, während Linux läuft, sollte man vor allen Dingen nicht einfach neustarten. Mit etwas Geschick läuft der Rechner mit der unten beschriebenen Methode nach einem Neustart wieder, als wäre nichts gewesen. Startet man sofort neu, hat man jedoch erstmal ein größeres Problem, da nun die komplette Partitionstabelle rekonstruiert werden muss.

Auslesen der vorhandenen Partitionen

Zuerst sollte das Programm gpart installiert werden. Dieses scannt die Festplatte auf vorhandene Dateisysteme und kann so die Start- und Endsektoren von Partitionen feststellen. Der Aufruf

sudo gpart -v /dev/sda

zeigt eine lange(!) Liste mit gefunden Daten an. Im ersten Abschnitt wird die auf der Festplatte vorhandene Partitionstabelle angezeigt, nach Begin Scan folgen die gefundenen Partitionen. Diese Ausgabe sollte irgendwo gespeichert werden. Vorsicht: gpart erkennt die Grenzen der erweiterten Partitionen häufig nicht richtig. Diese müssen mit fdisk daher von Hand eingetragen werden.

Außerdem sind in /proc/partitions die dem Kernel bekannten Partitionen gespeichert. Da das System noch läuft, entsprechen diese Daten den ursprünglichen Partitionen. Über den Befehl cat kann diese Liste auf der Konsole angezeigt werden. Leider wird hier jedoch nur die Länge und die Zuordnungen (sda1, sda2 usw.) angezeigt, aber nicht Start und Ende der einzelnen Partitionen. Daher kommt es nun auf das Zusammenfügen der Daten von gpart und /proc/partitions an.

Neue Partitionstabelle anlegen

Mit fdisk kann nun eine neue Partitionstabelle erzeugt werden:

fdisk /dev/sda

Die Benutzung von fdisk hat den Vorteil, dass die Änderungen erst gespeichert werden, wenn der Benutzer dies explizit wünscht. Somit kann man nach Belieben die Zuordnungen der Partitionen ausprobieren, bevor die neue Tabelle auf die Festplatte geschrieben wird.

Vor der Arbeit mit fdisk sollte die manpage (man fdisk) durchgelesen werden! Nach dem Start des Programms kann man sich mit `p` die aktuelle Partitionstabelle anzeigen lassen; mit `n` können neue Partitionen angelegt und mit `d` gelöscht werden. Auf die Platte geschrieben werden die Änderungen erst durch Eingabe von `w`. Vorher kann man mit `q` jederzeit das Programm beenden, ohne den vorhandenen MBR zu ändern.

Aus der Ausgabe von gpart sind zum Einen die Partitionstypen (primär bzw. logisch), zum Anderen auch Start- und Endsektor sowie die Länge jeder Partition bekannt. Aus /proc/partitions kennt man die Zuordnungen der einzelnen Partitionen. Man sollte sich nun die gpart-Partitionen aufschreiben (Größe in MB, Start, Ende und Länge in Sektoren) und durch Vergleich mit /proc/partitions die Partitionen den Linux-Geräten (sda1 etc.) zuordnen. Hier ist es hilfreich, wenn man die ungefähre Aufteilung der Festplatte noch im Kopf hat.

Hat man so ein konsistentes Schema erzeugt, können die Daten der Reihe nach (also zuerst die primären Partitionen sda1 bis sda4, danach die logischen Partitionen ab sda5) mit fdisk eingetragen werden. In fdisk ist zuerst durch die Taste `u` auf Sektoren als Einheit umzustellen (wird auc von gpart und /proc/partitions benutzt). Dann kann mit `o` eine neue, leere Tabelle begonnen werden. Mit `n` werden nun zu jeder Partition die Daten eingegeben; dabei entnimmt man Start- und Endsektor aus den gpart-Daten. Nach den primären Partitionen wird eine erweiterte Partition angelegt, die den gesamten restlichen Platz der Platte umfasst. In dieser erweiterten Partition werden dann alle logischen Partitionen angelegt. Dies ist der übliche Aufbau für logische Partitionen und sollte für die meisten Systeme passen. Am Ende kann man mit `p` die Tabelle anzeigen lassen und diese mit der gpart-Ausgabe vergleichen. Sieht alles in Ordnung aus, wird die Tabelle mit `w` auf die Platte geschrieben.

Sofern QEMU installiert und man mit der Benutzung vertraut ist, kann dies als Überprüfung der neuen Partitionstabelle verwendet werden. Dazu startet man in QEMU von einer Linux-CD und gibt die Festplatte als QEMU-Laufwerk an. In QEMU kann man dann mit fdisk die Tabelle anzeigen und mit mount jeweils versuchen, die einzelnen Partitionen einzuhängen. Hat man alles richtig gemacht, sollte das Einhängen fehlerfrei funktionieren. Kommt es hier zu Fehlern, stimmen möglicherweise die Startsektoren der Partitionen nicht und sollten erneut überprüft werden. Zusätzlich kann man alle Partitionen noch mit fsck prüfen.

Vor einem Neustart des Rechners muss noch der Bootmanager, der ebenfalls im MBR gespeichert wird, installiert werden. Für GRUB lautet der Befehl dafür:

sudo grub-install /dev/sda

Wenn alles geklappt hat, sollte das System nach einem Neustart wieder problemlos funktionieren. Ist dies der Fall, erstellt man als Erstes natürlich ein Backup des MBR, um sich diese Arbeit beim nächsten Mal zu ersparen! ;-)

Partitionstabelle anderweitig gelöscht

Das Vorgehen hier entspricht im Prinzip dem oben Genannten, nur wird hier von einer Linux-CD gearbeitet (z.B. KNOPPIX). Außerdem hat man keinen Zugriff auf /proc/partitions, muss also die Zuordnungen raten (oder im Kopf haben). Weiterhin ist auf dem Live-System vermutlich kein QEMU installiert, so dass die Überprüfung wegfällt, sofern man es nicht nachinstallieren kann. Insgesamt ist jedoch auch diese Situation mit Hilfe von gpart ohne große Probleme lösbar.

Bookmark the permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *