Ich habe ein Skript erstellt, um dieses Problem zu lösen, OHNE GARANTIE . (aber ich habe auf meiner virtuellen Maschine getestet)
Führen Sie das folgende Skript mit beschädigter Festplatte als erstem Parameter aus: $ ./repart.sh sda
#!/bin/bash
HARDDISK=$1
PARTITIONS=$(ls -d /sys/block/${HARDDISK}/${HARDDISK}?/)
echo "unit: sectors"
for i in $PARTITIONS; do
DEVICE=$(basename $i)
START=$(cat $i/start)
SIZE=$(cat $i/size)
echo "/dev/$DEVICE : start=$START, size=$SIZE, type=XX"
done
Die Ausgabe ist ein sfdisk-Format. Aber Vorsicht , diese Datei muss modifiziert werden, um verwendet zu werden. Erhöhen Sie bei erweitertem Partitionstyp = 5 die Größe unter Verwendung des gesamten logischen Speicherplatzes plus des Speicherplatzes zwischen dem Start der erweiterten und dem Start der ersten logischen Partition.
unit: sectors
/dev/sda1 : start=63, size=2040192, type=XX
/dev/sda2 : start=2040255, size=20482875, type=XX
/dev/sda3 : start=22523130, size=19197675, type=XX
/dev/sda4 : start=41720805, size=2, type=XX
/dev/sda5 : start=41720868, size=208782, type=XX
Sie müssen den Typ von XX in die Nummer des Partitionstyps ändern . Stellen Sie die bootfähige Partition in die erste Zeile.
unit: sectors
/dev/sda1 : start=63, size=2040192, type=83, bootable
/dev/sda2 : start=2040255, size=20482875, type=83
/dev/sda3 : start=22523130, size=19197675, type=fd
/dev/sda4 : start=41720805, size=208845, type=5
/dev/sda5 : start=41720868, size=208782, type=82
Übernehmen Sie diese Änderungen
cat repart.sfdisk | sfdisk -f /dev/sda
Partitionstabellen erneut lesen
partprobe
/sbin/blockdev --rereadpt
Maden wieder einbauen
grub-install /dev/sda