Tak, możesz to zrobić z systemem /sys
plików.
/sys
to fałszywy system plików generowany dynamicznie przez jądro i sterowniki jądra.
W tym konkretnym przypadku możesz przejść do, /sys/block/sda
a zobaczysz katalog dla każdej partycji na dysku. W tych folderach potrzebujesz 2 określonych plików start
i size
. start
zawiera przesunięcie od początku dysku i size
jest wielkością partycji. Wystarczy usunąć partycje i odtworzyć je z dokładnie takimi samymi początkami i rozmiarami, jak w /sys
.
Na przykład tak wygląda mój dysk:
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
I to właśnie mam /sys/block/sda
:
sda1/
start: 2048
size: 131072
sda2/
start: 133120
size: 134207488
sda3/
start: 134340608
size: 840335360
sda4/
start: 974675968
size: 2097200
Przetestowałem to, aby zweryfikować poprawność informacji po zmodyfikowaniu tabeli partycji w działającym systemie
/dev/sdb/start
. Czy zmieniono jego nazwę naext_range
? Jądro:4.8.15-1-MANJARO
/sys/block/sdb/start
, not/dev/sdb/start
stat
tam, ale niestart
.fdisk
ponieważ pozwala on bezpośrednio wprowadzić liczbę sektorów i możesz sprawdzić wartości przed zapisaniem na dysk. Pomyślnie przywróciłem dysk: tworząc pierwszą partycję, akceptując bycie, a następnie wpisując „+ size” (od góry) dla końca, drugą partycję wchodzącstart
z / sys ... i „+ size” ponownie i tak dalej ... Sprawdź rozmiar partycji przed zapisaniem nowej tabeli. Powodzenia!Stworzyłem skrypt, który pomoże rozwiązać ten problem, BEZ GWARANCJI . (ale testowałem na mojej maszynie wirtualnej)
Uruchamianie następującego skryptu z uszkodzonym HD przy pierwszym parametrze, jak w:
Treść
repart.sh
:Dane wyjściowe mają format sfdisk. Ale uwaga , ten plik musi zostać zmodyfikowany, aby go użyć. Przy typie partycji rozszerzonej = 5, zwiększ rozmiar, używając całej przestrzeni logicznej plus spacji między początkiem partycji rozszerzonej a początkiem pierwszej partycji logicznej.
Musisz zmienić typ , z XX na liczbę typów partycji. Umieść partycję startową w pierwszej linii.
Zastosuj te zmiany
Odczytaj tabele partycji
Zainstaluj ponownie grub
źródło
Próbowałeś już testdisk ? Może skanować dysk i odzyskać utracone tabele partycji, nawet po ponownym uruchomieniu.
Jest dostępny w pakiecie dla Debiana i prawdopodobnie również dla Ubuntu. Prawdopodobnie inne dystrybucje.
Jeśli uruchamiasz płytę CD z partycjami, prawdopodobnie warto sprawdzić, czy jest na niej wstępnie zainstalowana.
źródło