Ja, das geht mit dem /sys Dateisystem.
 /sys ist ein gefälschtes Dateisystem, das vom Kernel und den Kernel-Treibern dynamisch generiert wird. 
 In diesem speziellen Fall können Sie zu /sys/block/sda gehen und Sie sehen ein Verzeichnis für jede Partition auf dem Laufwerk. Es gibt 2 spezifische Dateien in diesen Ordnern, die Sie benötigen, start und size . start enthält den Offset vom Anfang des Laufwerks und size ist die Größe der Partition. Löschen Sie einfach die Partitionen und erstellen Sie sie mit genau den gleichen Starts und Größen wie in /sys .
Zum Beispiel sieht mein Laufwerk so aus:
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      133119       65536   83  Linux
/dev/sda2   *      133120   134340607    67103744    7  HPFS/NTFS/exFAT
/dev/sda3       134340608   974675967   420167680   8e  Linux LVM
/dev/sda4       974675968   976773167     1048600   82  Linux swap / Solaris
 Und das habe ich in /sys/block/sda :
sda1/
 start: 2048
 size: 131072
sda2/
 start: 133120
 size: 134207488
sda3/
 start: 134340608
 size: 840335360
sda4/
 start: 974675968
 size: 2097200
 
 Ich habe dies getestet, um zu überprüfen, ob die Informationen korrekt sind, nachdem die Partitionstabelle auf einem laufenden System geändert wurde 
Ich habe ein Skript erstellt, um dieses Problem zu lösen, ohne KEINE GEWÄHRLEISTUNG .(aber ich habe es auf meiner virtuellen Maschine getestet)
Ausführen des folgenden Skripts mit beschädigtem HD am ersten Parameter, wie in:
[email protected]:~$ ./repart.sh sda
 Inhalt von repart.sh :
#!/bin/bash
echo "unit: sectors" 
for i in /sys/block/$1/$1?/; do
    printf '/dev/%s : start=%d, size=%d, type=XX\n' "$(basename $i)" "$(<$i/start)" "$(<$i/size)"
done
Die Ausgabe ist ein sfdisk-Format. Aber Vorsicht , muss diese Datei modifiziert werden, um verwendet zu werden. Erhöhen Sie die Größe beim erweiterten Partitionstyp =5, indem Sie den gesamten logischen Speicherplatz plus den Speicherplatz zwischen dem Beginn der erweiterten und dem Beginn der ersten logischen Partition verwenden.
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 ändern , von XX bis Nummer des Partitionstyps. Legen Sie die bootfähige Partition in der ersten 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
Grub neu installieren
grub-install /dev/sda
Testdisk schon probiert? Es kann die Festplatte scannen und verlorene Partitionstabellen wiederherstellen, selbst nachdem Sie neu gestartet haben.
Es ist vorkonfiguriert für Debian und vermutlich auch für Ubuntu erhältlich. Wahrscheinlich andere Distributionen.
Wenn Sie eine gparted-CD booten, lohnt es sich wahrscheinlich zu prüfen, ob sie darauf vorinstalliert ist.