Habe versehentlich die Partitionen auf meiner Bootdiskette gelöscht. Das System läuft noch. Wie kann ich es wiederherstellen?

Habe versehentlich die Partitionen auf meiner Bootdiskette gelöscht. Das System läuft noch. Wie kann ich es wiederherstellen?

Ich habe gerade versehentlich alle Partitionen von der falschen Festplatte gelöscht.

/dev/sdaist die Startdiskette und /dev/sdbeine neue Festplatte, die ich als RAID-Spiegel einrichten möchte.

/dev/sdaIch habe versehentlich einen Fehler gemacht und die Partitionstabelle am statt am gelöscht /dev/sdb.

Das System ist noch aktiv und läuft daher über eine irgendwo zwischengespeicherte Partitionstabelle.

Kann ich die Partitionstabelle wiederherstellen oder sie zumindest anzeigen, sodass ich die Partitionen exakt dort wiederherstellen kann, wo sie waren?

fdisk /dev/sda -lergibt keine Partitionen.

Ja, ich fühle mich schlau

Antwort1

Der Kernel behält die Partitionstabelle dauerhaft im Cache (es sei denn, er wird ausdrücklich zum Neuladen aufgefordert, was jedoch nicht möglich ist, wenn einige der Partitionen verwendet werden). Sie sind also auf der sicheren Seite, bis Sie neu starten (oder den Kernel anweisen, mit Daten zu arbeiten, die nicht den tatsächlichen Inhalt der Festplatte widerspiegeln; wenn Sie beispielsweise mdraid bereits aktiviert haben, hat es seine Metadaten möglicherweise bereits auf die Festplatte geschrieben).

Wenn Sie einauf dem LaufendenWenn Sie eine Sicherungskopie Ihres Bootsektors (die ersten 512 Bytes) haben, können Sie diese wiederherstellen ( cat boot-sector-backup >/dev/sdaüberprüfen Sie, ob die Größe der wiederherzustellenden Datei genau 512 Bytes beträgt). Ihre Bootloader-Installation hat möglicherweise eine Sicherungskopie des Bootsektors erstellt, aber wenn diese seitdem aktualisiert wurde oder Sie sie neu partitioniert haben, ist sie nicht mehr auf dem neuesten Stand. Stellen Sie keine Sicherungskopie wieder her, die möglicherweise veraltet ist.

Die Informationen des Kernels zu den Partitionen sind über zugänglich /sys/class/block/sda/sda*. Im Verzeichnis für jede Partition ( sda1, sda2, usw.):

  • startenthält den Offset des Partitionsanfangs in 512-Byte-Sektoren.
  • sizeenthält die Größe der Partition in 512-Byte-Sektoren (mit Ausnahme der erweiterten Partition).

Wenn Sie Partitionen mit der Nummer 5 oder höher haben, handelt es sich um logische Partitionen (sieheWas ist der Unterschied zwischen "erweiterter" Partition und "logischer" Partition), die in einer erweiterten Partition enthalten ist. Es gibt eine einzige erweiterte Partition (oder keine) und es ist eine der Partitionen 1–4. Die Datei sizeenthält nicht die Größe der erweiterten Partition, daher müssen Sie diese zuerst bestimmen; sie muss groß genug sein, damit alle logischen Partitionen hineinpassen, und darf keine primären Partitionen (die anderen Partitionen mit den Nummern 1–4) umfassen.

Ausführen fdisk /dev/sda. Mit uwird die Einheit in Sektoren umgestellt. Erstellen Sie die Partitionen ( n) mit dem richtigen Offset und der richtigen Größe (wie in der Eingabeaufforderung angegeben, +bei der Größe vor die Anzahl der Sektoren setzen), beginnend mit der erweiterten Partition.

Verwenden Sie p, um zu überprüfen, ob die Partitionstabelle richtig aussieht. Wenn einige dieser Partitionen keine Linux-Datenpartitionen sind, verwenden Sie , tum ihren Typ festzulegen ( 82für Linux-Swap, cfür eine Windows-FAT32-Partition, 7für eine Windows-NTFS-Partition). Wenn Sie eine bootfähige DOS/Windows-Partition haben, setzen Sie deren Bootfähigkeitsflag ( a).

Überprüfen Sie noch einmal, ob die Ausgabe gut aussieht, und drücken Sie dann auf , wum die neue Tabelle auf die Festplatte zu übertragen.

Speichern Sie den Inhalt von /sys/class/block/sda/ in a tar archive on a USB stick. Then reboot from a removable media. **After rebooting, if the partition table you created is not correct, you risk massive data corruption**. So from the removable media, run„fsck -n (don't forget the-n ) to check the consistency of the filesystems on each partition (don't usemount“, was nur funktionieren würde, wenn der Offset korrekt wäre, und die Festplatte beschädigen könnte (sogar im schreibgeschützten Modus, da das Journal geschrieben würde, wenn der Offset korrekt wäre, aber nicht die Größe).

Wenn fsck kein Dateisystem findet, haben Sie den Offset einer Partition falsch angegeben. Wenn es Fehler meldet, haben Sie wahrscheinlich die Größe der Partition falsch angegeben.Solange Sie nicht auf die Festplatte geschrieben haben, können Sie die Partitionstabelle immer noch reparieren. Wenn Sie keine Partition von der gemounteten Festplatte haben, bewirkt das Drücken wvon fdisk, dass der Kernel die Partitionstabelle neu liest. Sobald Sie Ihre Partitionen richtig haben, sollten Sie in der Lage sein, Ihr normales System neu zu starten und wie gewohnt fortzufahren.

Antwort2

gpartsollte dir helfen, auch wenn du neugestartet hast.

verwandte Informationen