Можно ли восстановить стертую таблицу разделов MBR на машине, которая не была перезагружена?
Экспериментируя с тем, как это исправить, я натолкнулся на предложение стереть MBR, так и сделал.
dd if=/dev/zero of=/dev/sdb bsize=512 count=1
Упс. Нет таблицы разделов.
Да, у меня есть резервные копии, но я бы хотел вернуть эти разделы обратно. Что я должен делать? Есть несколько проприетарных продуктов, которые утверждают, что магически исправляют разделы и восстанавливают данные, но я им не доверяю. Можно ли восстановить разделы обычными командами Linux/Windows?
РЕДАКТИРОВАТЬ: Учитывая, что первый раздел ровно 4 МБ (специальный загрузочный раздел), я могу безопасно определить, где начинается следующий раздел, по крайней мере, и работать оттуда?
2 ответа
Существует бесплатная кроссплатформенная утилита с открытым исходным кодом под названием TestDisk, которая, похоже, способна сделать это. http://www.cgsecurity.org/wiki/TestDisk - это сайт разработчика, здесь: https://en.wikipedia.org/wiki/TestDisk - статья по WP, а здесь: http://www.geekyprojects.com/storage/how-to-repair-a-damaged-partition-table-or-mbr/ является руководством по обзору / использованию.
Я не пробовал это лично, но так как вам нечего терять на этом этапе..
Обновление: И, о, смотрите - здесь: Vista - вытер MBR и HEAD диска - как восстановить? является суперпользователем вопросов и ответов, включая успешное использование TestDisk.
Если вы еще не перезагрузились, ядро все еще знает старый макет, который можно получить из /sys
,
#!/usr/bin/env bash
dev=${1:-sda}
dev=${dev#/dev/}
for part in /sys/class/block/${dev}[0-9]*; do
num=$(<$part/partition)
start=$(<$part/start)
size=$(<$part/size)
end=$((start+size-1))
echo "# partition $num: start $start, size $size, end $end"
echo "sgdisk /dev/$dev --new=$num:$start:$end"
#echo "parted /dev/$dev mkpart primary $start $end"
done