以下是关于手动恢复已删除分区表的说明。有一些实用程序,例如 gpart 或 TestDisk,可以使这项任务变得相当容易。但是,如果您正在阅读本文是因为您已经运气不佳,那么这就是您必须要做的事情
创建一个至少与您的第一个分区一样大的分区。您可以使其比原始分区大任意量。如果您低估了大小,将会非常痛苦。
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-23361, default 1): <RETURN> Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-22800, default 22800): 13032 Command (m for help): w |
在第一个分区上运行 dumpe2fs,并 grep 输出块计数。
示例
% dumpe2fs /dev/sda1 | grep "Block count:" Block count: 41270953 |
删除您刚刚创建的分区
Command (m for help): d Partition number (1-4): 1 |
创建一个大小与您从块计数中获得的精确大小的新分区。由于您无法在 fdisk 中输入块大小,因此您需要计算出需要请求多少柱面。以下是公式
(number of needed cylinders) = (number of blocks) / (block size) (block size) = (unit size) / 1024 (unit size) = (number of heads) * (number of sectors/cylinder) * (number of bytes/sector) |
考虑以下示例,其中硬盘已划分为四个主分区,分别为 1、2、4 和 8 个柱面。
disk /dev/sda: 16 heads, 63 sectors, 23361 cylinders Units = cylinders of 1008 * 512 bytes Device Boot Start End Blocks Id System /dev/sda1 1 2 976+ 83 Linux /dev/sda2 3 5 1512 83 Linux /dev/sda3 6 10 2520 83 Linux /dev/sda4 11 19 4536 83 Linux |
在其上运行 e2fsck 以验证您可以读取新分区。
对剩余分区重复步骤 1-5。
感谢:Mike Vevea,jedi sys admin,提供基本策略。