
Ich habe gerade die Partitionstabelle der Festplatte meines Systems überschrieben. Ich habe eine cfdisk
auf dem falschen Gerät erstellt ( /dev/sda
statt /dev/sdd
), alle Partitionen gelöscht, eine neue primäre Partition erstellt, die sich über das gesamte Gerät erstreckt, ihren Typ auf 07
(NTFS) eingestellt und auf geklickt write
.
Hier bin ich also mit meinem laufenden System. Bis zum Neustart wird sich hoffentlich/wahrscheinlich nichts ändern – das heißt: Alle meine Daten sind zugänglich (ich erstelle gerade ein dd
Backup des gesamten Geräts und plane, später ein Backup der wichtigsten Daten zu erstellen ). Ich habe .tar.gz
auch gesichert (obwohl es hier wohl eher um Durchsatz und solche Sachen geht ...) und ./proc/partitions
/proc/diskstats
/sys/block/sda/sda?/{start,size}
Einige weitere Dinge, die ich weiß:
- 4 primäre Partitionen
- 1. Partition: ~100 MB, ext3, /boot
- 2. Partition: ~100 MB, „Win7-Bootpartition“, ntfs(?)
- 3. Partition: ~20...30GB, Win7, ntfs
- 4. Partition: ~20...30 GB, luks-verschlüsseltes Gerät
- Die Luks-deDas verschlüsselte Gerät ist ein LVM-PV
- Die
/
,/home
&swap
-Partitionen sind alle LVs auf dem (VG auf dem) oben angegebenen PV
Also meine Fragen:
- Was ist der einfachste Weg, die Partitionstabelle des Kernels auf die Festplatte zu schreiben?
- Was ist der einfachste Weg, aus den oben genannten (und möglicherweise weiteren, mir unbekannten ...) Daten die Partitionstabelle zu erstellen?
- Gibt es irgendwelche Probleme im Zusammenhang mit Luks und/oder LVM, die beachtet werden müssen?
- Gibt es Daten, die ich vor dem Neustart sichern sollte (also Sachen vom Kernel [/sys/..., /proc/...] usw., die mir bei der Neugenerierung der Partitionstabelle helfen könnten)?
Antwort1
Nicht zu schwierig. Hoffentlich.
Notieren Sie sich zunächst die Größe und Reihenfolge aller Ihrer Partitionen auf /dev/sda:
challenger:/home/michael # grep . /sys/block/sda/sda*/{start,size}
/sys/block/sda/sda1/start:63
/sys/block/sda/sda2/start:228690000
/sys/block/sda/sda3/start:257040
/sys/block/sda/sda1/size:256977
/sys/block/sda/sda2/size:83885760
/sys/block/sda/sda3/size:228432960
Führen Sie fdisk auf /dev/sda aus und ändern Sie die Einheiten in Sektoren:
Command (m for help): u
Changing display/entry units to sectors
Beginnen Sie dann mit der Partitionierung. Verwenden Sie für jede Partition die entsprechenden Zahlen start
und .size
Vermeiden Sie einen Off-by-one-Fehler – subtrahieren Sie eins von, size
bevor Sie es in fdisk eingeben.
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-312581807, default 63):
Using default value 63
Last sector, +sectors or +size{K,M,G} (63-312581807, default 312581807): +256976
Command (m for help): p
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x02b002af
Device Boot Start End Blocks Id System
/dev/sda1 63 257039 128488+ 83 Linux
Vergessen Sie nicht, Ihre Partitions-IDs festzulegen und das Boot-Flag auf der richtigen Partition umzuschalten
Installieren Sie jetzt Ihren MBR neu und schon sollte alles bereit sein.
Natürlich können Sie dies alles mit Ihrem bevorzugten Partitionseditor tun ... Parted funktioniert auch einwandfrei.
Wenn Sie die Informationen zum Start/Ende von Partitionen verloren haben, bietet parted „Rettungs“-Optionen, um die Festplatte nach verlorenen Partitionen zu durchsuchen. Diese sollten Sie jedoch nicht benötigen.
Antwort2
Wenn die Partitionstabelle beschädigt ist, würde ich vorschlagen, eine Bootdiskette von RIP zu verwenden (unter Linux ist eine Rettung möglich), um testdisk auszuführen. Vielleicht können Sie testdisk von Ihrem laufenden System aus ausführen, um Partitionen zu scannen und wiederherzustellen, aber das würde ich nicht versuchen, weil ich nicht weiß, was es mit einem laufenden System mit offenen Dateien machen würde.
Wenn Sie versuchen möchten, wichtige Daten zu sichern (Sie haben noch keines?), wäre jetzt ein guter Zeitpunkt dafür …