Es besteht die Möglichkeit, die Partitionstabelle wiederherzustellen, es müssen jedoch zwei Bedingungen erfüllt sein:
- Sie haben Ihren Computer nicht neu gestartet.
- Das Laufwerk war zum Zeitpunkt des Tabellenwechsels in Gebrauch.
Dies funktioniert so, dass der Kernel das Partitionslayout im Speicher behält. Wenn eine Partition verwendet wird, muss sie wissen, wo die Partition beginnt, damit sie das erneute Laden der neuen Tabelle verweigert, bis sie nicht mehr verwendet wird.
Wie macht man das:
Gehe zu /sys/block/sda
. Im Innern gibt es ein Verzeichnis für jede Partition (siehe sda1
, sda2
usw.). In jedem von diesen befindet sich eine Datei namens start
und size
(so /sys/block/sda/sda1/start
). Wenn Sie Ihre Partitionstabelle mit genau denselben Startpositionen und -größen neu erstellen, ist dies in Ordnung.
Beachten Sie, dass der Partitionstyp nicht beibehalten wird. Linux kümmert sich nicht um diese Informationen. Nach der Neuerstellung müssen Sie sich also merken, auf welchen Partitionstyp eingestellt wurde (NTFS oder was auch immer).
Beispiel
Originalscheibe:
# fdisk -l / dev / sdc
Festplatte / dev / sdc: 8006 MB, 8006926336 Byte, 15638528 Sektoren
Einheiten = Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch / physisch): 512 Bytes / 512 Bytes
E / A-Größe (Minimum / Optimum): 512 Bytes / 512 Bytes
Festplattenkennung: 0x000ce29c
Gerätestart Start Ende blockiert ID-System
/ dev / sdc1 2048 2099199 1048576 83 Linux
/ dev / sdc2 2099200 15638527 6769664 83 Linux
# mount | grep sdc
/ dev / sdc2 on / mnt / tmp Typ xfs (rw)
# cat / mnt / tmp / world
Hallo
Löschen der Partitionstabelle
# fdisk / dev / sdc
Willkommen bei fdisk (util-linux 2.22.2).
Änderungen bleiben nur im Speicher, bis Sie sie schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl verwenden.
Befehl (m für Hilfe): d
Partitionsnummer (1-4): 1
Partition 1 wird gelöscht
Befehl (m für Hilfe): d
Ausgewählte Partition 2
Partition 2 wird gelöscht
Befehl (m für Hilfe): p
Festplatte / dev / sdc: 8006 MB, 8006926336 Byte, 15638528 Sektoren
Einheiten = Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch / physisch): 512 Bytes / 512 Bytes
E / A-Größe (Minimum / Optimum): 512 Bytes / 512 Bytes
Festplattenkennung: 0x000ce29c
Gerätestart Start Ende blockiert ID-System
Befehl (m für Hilfe): w
Die Partitionstabelle wurde geändert!
Aufruf von ioctl () zum erneuten Lesen der Partitionstabelle.
WARNUNG: Das erneute Lesen der Partitionstabelle ist mit Fehler 16 fehlgeschlagen: Gerät oder Ressource belegt.
Der Kernel verwendet weiterhin die alte Tabelle. Die neue Tabelle wird bei verwendet
beim nächsten Neustart oder nachdem Sie partprobe (8) oder kpartx (8) ausgeführt haben
Festplatten synchronisieren.
Beachten Sie, dass es immer noch gemountet und zugänglich ist:
# cat / mnt / tmp / world
Hallo
Holen Sie sich die Offsets
# cd / sys / class / block / sdc
# ls
align_offset device @ events_poll_msecs power / ro Slaves /
bdi @ discard_alignment ext_range queue / sdc1 / stat
Inhaber von Fähigkeitsereignissen / Bereich sdc2 / Subsystem @
dev events_async inflight entfernbare Größe uevent
# cat sdc1 / start
2048
# cat sdc1 / size
2097152
# cat sdc2 / start
2099200
# cat sdc2 / size
13539328
Stellen Sie die Partitionstabelle wieder her
# fdisk / dev / sdc
Willkommen bei fdisk (util-linux 2.22.2).
Änderungen bleiben nur im Speicher, bis Sie sie schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl verwenden.
Befehl (m für Hilfe): n
Partitionstyp:
p primär (0 primär, 0 erweitert, 4 frei)
e verlängert
Wählen Sie (Standard p): p
Partitionsnummer (1-4, Standard 1): 1
Erster Sektor (2048-15638527, Standard 2048): 2048
Letzter Sektor, + Sektoren oder + Größe {K, M, G} (2048-15638527, Standard 15638527): +2097151
Partition 1 vom Typ Linux und von Größe 1 GiB ist gesetzt
Befehl (m für Hilfe): n
Partitionstyp:
p primär (1 primär, 0 erweitert, 3 frei)
e verlängert
Wählen Sie (Standard p): p
Partitionsnummer (1-4, Standard 2): 2
Erster Sektor (2099200-15638527, Standard 2099200): 2099200
Letzter Sektor, + Sektoren oder + Größe {K, M, G} (2099200-15638527, Standard 15638527): +13539327
Partition 2 vom Typ Linux und von Größe 6,5 GiB ist festgelegt
Befehl (m für Hilfe): p
Festplatte / dev / sdc: 8006 MB, 8006926336 Byte, 15638528 Sektoren
Einheiten = Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch / physisch): 512 Bytes / 512 Bytes
E / A-Größe (Minimum / Optimum): 512 Bytes / 512 Bytes
Festplattenkennung: 0x000ce29c
Gerätestart Start Ende blockiert ID-System
/ dev / sdc1 2048 2099199 1048576 83 Linux
/ dev / sdc2 2099200 15638527 6769664 83 Linux
Befehl (m für Hilfe): w
Die Partitionstabelle wurde geändert!
Aufruf von ioctl () zum erneuten Lesen der Partitionstabelle.
WARNUNG: Das erneute Lesen der Partitionstabelle ist mit Fehler 16 fehlgeschlagen: Gerät oder Ressource belegt.
Der Kernel verwendet weiterhin die alte Tabelle. Die neue Tabelle wird bei verwendet
beim nächsten Neustart oder nachdem Sie partprobe (8) oder kpartx (8) ausgeführt haben
Festplatten synchronisieren.
!! Beachten Sie, dass wir bei der Angabe des letzten Sektors die Größe 1 verwenden. !!
Nachprüfung
Lassen Sie uns das Laufwerk partprobe
aushängen , ausführen , um den Kernel anzuweisen, die neue Tabelle aufzunehmen, dann erneut einhängen und überprüfen, ob wir noch zu unserer Datei gelangen.
# umount / mnt / tmp /
# partprobe / dev / sdc
# mount / dev / sdc2 / mnt / tmp
# cat / mnt / tmp / world
Hallo
testdisk
.