Überschreibt die Partitionstabelle der Startfestplatte mit gdisk. wie wiederherstellen?

792
user206468

Ich habe heute eine neue Festplatte in meinem Home-Server installiert, diese in gdisk (größer als 2 TB) formatiert, die Änderungen vorgenommen und sie geschrieben. Dann bemerkte ich, dass ich die falsche Festplatte ausgewählt hatte. In der Tat überschrieb ich einfach die Partitionstabelle auf meiner Startplatte.

Die Änderungen der Partitionstabelle werden geschrieben, sobald ich das System neu starte, und ich bin mir ziemlich sicher, dass sie nicht bootfähig ist, wenn ich die Partitionstabelle nicht so wiederherstellen kann, wie sie zuvor war.

Gibt es eine Möglichkeit, die alte Partitionstabelle wiederherzustellen, oder zumindest genug, um einen Neustart durchzuführen?

Ich habe die "p" -Ausgabe von gdisk, bevor ich die Tabelle überschreibe:

Command (? for help): p Disk /dev/sdh: 125045424 sectors, 59.6 GiB Logical sector size: 512 bytes Disk identifier (GUID): D0127C61-1349-42D1-A03F-46F604F3DD6C Partition table holds up to 128 entries First usable sector is 34, last usable sector is 125045390 Partitions will be aligned on 2048-sector boundaries Total free space is 4717 sectors (2.3 MiB)  Number Start (sector) End (sector) Size Code Name 1 2048 119883775 57.2 GiB 8300 Linux filesystem 5 119885824 125044735 2.5 GiB 8200 Linux swap 

Einige Komplikationen:

  • Die Festplatte war zuvor in MBR partitioniert, und ich glaube nicht, dass dieser PC UEFI / Booting von GPT unterstützt, ohne dass dies genau geprüft wird.

  • Ich bin nicht sicher, ob dieser Ausdruck alle Informationen enthält, die ich zum Rekonstruieren der Partitionstabelle benötigen würde. Ist es möglich, dass einige Partitionen hier verborgen sind? Oder dass andere wichtige Informationen fehlen würden? Ich weiß zum Beispiel - weil gdisk / GPT kein "bootfähiges" Flag hat, enthält dieser Ausdruck es nicht.

  • Ich habe bereits versucht, diese Partitionen mit fdisk zurückzuschreiben, aber ich kann nicht herausfinden, wie man mit fdisk eine Partition mit der Nummer '5' erstellt. Ich stelle mir vor, dass sich meine Swap-Partition von sdh5 zu sdh2 "bewegt" hätte, dies würde nicht magisch funktionieren.

Ich fand ein ähnliches Problem, Recover Partition-Table, das im laufenden System immer noch vorhanden ist, was das Überschreiben der Partitionstabelle mit betrifft dd. In meinem Fall bin ich jedoch nicht sicher, dass die Informationen in / sys / block mehr genau sind, da ich gdisk (+ fdisk) zum Schreiben einer neuen Tabelle verwendet habe.

0

1 Antwort auf die Frage

0
user206468

Ich hatte heute endlich die Chance, dieses Problem zu lösen, und zum Glück war die Lösung (meistens) unkomplizierter, als ich mir Sorgen machte.

Was mir weitergeholfen hat, war ein wenig mehr darüber, wie meine Distribution (Debian) Festplattenpartitionen in einer geführten Installation einrichtet ( http://www.linuxbsdos.com/2011/02/15/debian-6-installation-and-disk) -partitioning-guide / ) und darüber, wie logische Partitionen auf der Festplatte erstellt und angegeben werden ( http://tldp.org/HOWTO/Partition/fdisk_partitioning.html#mixed ).

Nachdem ich die Notizen dort gelesen und erneut geprüft hatte, ging ich zurück zu fdisk:

  • Schreibe den MBR ( o) neu, um von vorne zu beginnen.
  • Erstellt ( n) eine pRandpartition '1' mit den "sdh1" -Sektoren aus der Ausgabe von gdisk (2048 - 119883775).
  • Erstellt ( n) eine extended Partition '2', beginnend mit dem ersten verfügbaren Sektor und dem Rest der Platte (119883776 - ...).
  • Erstellt neine lgrafische Partition '5' mit den "sdh5" -Sektoren aus der Ausgabe von gdisk (119885824 - 125044735).
  • Typ ( t) auf Partition '5' in Swap geändert (Typcode '82').
  • Das startfähige Flag ( a) wurde auf "sdh1" gesetzt.
  • Schrieb meine Änderungen ( w) und brach ab.

Ich habe einen Neustart durchgeführt, um diese Partitionstabelle zu testen, und das System startete nicht. Also musste ich von hier aus die Festplatte entfernen und auf einem anderen PC einhängen. Zum Glück hatte ich nur vergessen zu tun:

  • Installieren Sie grub erneut auf dem (jetzt neu formatierten) MBR. Sobald die Festplatte in meinem anderen PC grub-install --root-directory=/path/to/mount/point /dev/sdXeingehängt war, habe ich verwendet (wobei sdX die Gerätedatei für die auf meinem anderen Computer bereitgestellte Festplatte war).
    • Wenn ich dies vor dem Neustart des Computers getan hätte, kann ich mir vorstellen, dass dies der Fall gewesen wäre grub-install --root-directory=/ /dev/sdh.

Die Grub-Konfiguration auf der Festplatte war immer noch in Ordnung, so dass nur eine erneute Installation von Grub selbst erforderlich war. Nachdem Sie die Festplatte wieder angeschlossen und gestartet haben, scheint alles bis jetzt perfekt zu funktionieren.

Eine wichtige Lektion, die ich daraus gezogen habe, war, dass / sys / Blockdaten für erweiterte Partitionen etwas irreführend sind. Die /sys/block/.../size-Informationen für "sdh2" beanspruchten nur zwei Blöcke, wodurch die tatsächliche Größe der Partition ausgeschlossen wurde, die für "sdh5" (meine logische / Swap-Partition) erforderlich ist.

BEARBEITEN Aus gutem Grund ist die aktuelle fdisk -lAusgabe auf meiner Festplatte (die sich nach dem Neustart nun als "sdi" anstelle von "sdh" wie zuvor bezeichnet hat):

Disk /dev/sdi: 64.0 GB, 64023257088 bytes 255 heads, 63 sectors/track, 7783 cylinders, total 125045424 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: <...>  Device Boot Start End Blocks Id System /dev/sdi1 * 2048 119883775 59940864 83 Linux /dev/sdi2 119883776 125045423 2580824 5 Extended /dev/sdi5 119885824 125044735 2579456 82 Linux swap / Solaris