在尝试如何修复这个问题,我遇到了擦除 MBR 的建议,所以我就这么做了。
dd if=/dev/zero of=/dev/sdb bsize=512 count=1
哎呀。没有分区表。
是的,我有备份,但我仍然想恢复这些分区。我该怎么办?有一些专有产品声称可以神奇地修复分区并恢复数据,但我不相信它们。我可以用普通的 Linux/Windows 命令恢复分区吗?
编辑:假设第一个分区正好是 4MB(特殊启动分区),我能否安全地确定下一个分区至少从哪里开始,并从那里开始工作?
答案1
有一个名为 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。
答案2
如果你还没有重新启动,内核仍然知道旧的布局,可以从中检索/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