Да, вы можете сделать это с /sys
файловой системой.
/sys
поддельная файловая система, динамически генерируемая ядром и драйверами ядра
В этом конкретном случае вы можете перейти на /sys/block/sda
и вы увидите каталог для каждого раздела на диске. В этих папках есть 2 определенных файла, start
и size
. start
содержит смещение от начала диска и size
размер раздела. Просто удалите разделы и воссоздайте их с теми же размерами и размерами, которые указаны в /sys
.
Например, вот как выглядит мой диск:
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
И это то, что я имею в /sys/block/sda
:
sda1/
start: 2048
size: 131072
sda2/
start: 133120
size: 134207488
sda3/
start: 134340608
size: 840335360
sda4/
start: 974675968
size: 2097200
Я проверил это, чтобы убедиться, что информация верна после изменения таблицы разделов в работающей системе
/dev/sdb/start
. Был ли он переименован вext_range
? Ядро:4.8.15-1-MANJARO
/sys/block/sdb/start
, нет/dev/sdb/start
stat
есть, но нетstart
.fdisk
как он позволяет напрямую вводить количество секторов, и вы можете проверить значения перед записью на диск. Я успешно восстановил диск следующим образом: создал первый раздел, принял существо, затем ввел «+ размер» (сверху) для завершения, второй раздел ввелstart
из / sys ... и снова «+ размер» и т. Д. Проверьте Размер разделов перед записью новой таблицы. Удачи!Я сделал сценарий, чтобы помочь решить эту проблему, без ГАРАНТИИ . (но я проверил на моей виртуальной машине)
Запуск следующего скрипта с поврежденным HD в первом параметре: $ ./repart.sh sda
Вывод в формате sfdisk. Но будьте осторожны , этот файл должен быть изменен для использования. При расширенном типе раздела = 5 увеличьте размер, используя все логическое пространство плюс пространство между началом расширенного и началом первого логического раздела.
Вы должны изменить тип , с XX на номер типа раздела. Поместите загрузочный раздел в первую строку.
Примените эти изменения
Перечитать таблицы разделов
Переустановите личинку
источник
Вы пробовали тестдиск ? Он может сканировать диск и восстанавливать потерянные таблицы разделов, даже после перезагрузки.
Он доступен предварительно упакованным для Debian и, вероятно, для Ubuntu. Вероятно, другие дистрибутивы.
Если вы загружаете gparted CD, вероятно, стоит проверить, установлен ли он на нем.
источник