首页 / 技术类 / 调研 / 折腾了一天的硬盘

折腾了一天的硬盘

2008-09-14 23:18:00

昨天又开始折腾电脑了。早上心里规划着哪个盘装啥系统,手上按钮一点删除了第二块硬盘的主分区(E)。之后 F 还健在,G、H、I 却跟着消失了,顿时傻了眼……

马上找工具。。。据说 DiskGenius 有个重建分区表比较好用,下来试,可是它也找不到原来的分区了;又试了下 Partition Magic,根本没用,有一点点错误连磁盘基本信息也不显示了。试着用 DiskGen 创建分区,原先都是 51200MB 一个区分的,现在也填个 51200,重启还是不行,又把这几个分区删掉,这下越来越完了,心里慌得厉害……发现 DiskGen 分区有个选项可以填写柱面磁道扇区的,可是我又无从得知这些数据。。。再找来个 EasyRecover,这个似乎不能恢复分区表,只能恢复文件。后来发现它的高级恢复功能里可以找出分区的,找到以后里面的文件跟我原来的一模一样,但是就是不能把分区表写进硬盘。。。我 C、D 也只有 80G,还有一半在用着,如果当文件来恢复估计是放不下的……

不过从 EasyRecover 中知道了原来分区的信息:
前面空了 2048 个扇区
主分区从 2048 扇区开始,大小为 104857600 扇区(这两个共 104859648)
再空了 2048 个扇区
第一个逻辑分区大小为 104857600 扇区(到此共 209719296)
又空了 2048 个扇区
第二个逻辑分区大小为 104857600 扇区(到此共 314578944)
空 2048 个扇区
第三个逻辑分区大小为 104857600 扇区(到此共 419438592)
空 2048 个扇区
第四个逻辑分区大小为 68954112(到此共 488394752)
第 488394752 扇区到最后(488397168)空着

然后又在 DiskGen 里面分区,想填写柱面、磁道、扇区凑出上面的扇区号,可是又凑不起来。。

后来找到这篇文章:http://zhidao.baidu.com/question/63787793.html
了解了点 MBR、EBR 的数据结构
文中的例子是 63 扇区开始就是正是的分区范围了的,我的都隔了 2048。
不管怎么说,尝试一下总是好的,开始手工写 MBR:
第 0 扇区写
80 01 01 00 07 FE FF FF 00 08 00 00 00 00 40 06(主分区)
(80:活动分区;01 01 00、FE FF FF CHS 寻址方式的开始、结束位置,现在都是 LBA 寻址了的,可以不管,就填这个;中间的 07 表示 NTFS 文件系统的逻辑分区;后面的 00 08 00 00,即800h,2048,分区开始前占的位置;00 00 40 06,即 640000h,104857600,本分区大小)
00 01 01 00 05 FE FF FF 00 08 40 06 70 51 DC 16(扩展分区)
(00:非活动分区;第五个数 05 表示扩展分区;00 08 40 06,即 6400800h,104859648,分区开始前占的位置,相对于整个硬盘的 0 扇区;71 51 DC 16,16DC5170h,383537520,本分区大小,488394168(总扇区数)-104859648(主分区所占扇区))
后面两行都 0,最后 55 AA 结束

这两个一开始就写对了的。后面的逻辑分区的 EBR 一开始是这样写的:

第一个逻辑分区

00 01 01 00 07 FE FF FF 00 08 00 00 00 00 40 06

(00 08 00 00,800h,2048,开始前的扇区数;00 00 40 06,640000h,104857600,本分区大小)

00 01 01 00 05 FE FF FF 00 08 40 06 70 49 9C 10

(00 08 40 06,6400800h,开始前的扇区数;70 49 9C 10,109C4970h,488394168(总扇区数)-209719296(前面两分区所占扇区)

后面两行都 0,最后 55 AA 结束。

第二个逻辑分区

00 01 01 00 07 FE FF FF 00 08 00 00 00 00 40 06

(00 08 00 00,800h,2048,开始前的扇区数;00 00 40 06,640000h,104857600,本分区大小)

00 01 01 00 05 FE FF FF 00 08 40 06 70 41 5C 0A

(00 08 40 06,6400800h,开始前的扇区数;70 41 5C 0A,0A5C4170h,488394168(总扇区数)-314578944(前面三分区所占扇区)

后面两行都 0,最后 55 AA 结束。

第三个逻辑分区

00 01 01 00 07 FE FF FF 00 08 00 00 00 00 40 06

(00 08 00 00,800h,2048,开始前的扇区数;00 00 40 06,640000h,104857600,本分区大小)

00 01 01 00 05 FE FF FF 00 08 40 06 70 39 1C 04

(00 08 40 06,6400800h,开始前的扇区数;70 39 1C 04,41C3970h,488394168(总扇区数)-314578944(前面四分区所占扇区)

后面两行都 0,最后 55 AA 结束。

第四个逻辑分区

00 01 01 00 07 FE FF FF 00 08 00 00 00 28 1C 04

(00 08 00 00,800h,2048,开始前的扇区数;00 28 1C 04,41C2800h,本分区大小)

后面三行都 0,最后 55 AA 结束。

搞完之后心里乐滋滋的,以为一个完美的分区链被我重构起来了,于是重启。
结果,系统停在启动画面进不来了!!!

可能是因为分区链有误,形成了类似于逻辑锁的东西了,让系统傻掉了

没办法了,把那块好的硬盘先拿下来,找出了很久没用的雨浪飘零启动盘——

里面的 Windows PE、MS-DOS、基于 MS-DOS 启动的磁盘维护工具都启动不起来了,找呀找,发现有个看起来像非 MS 的 ROM-DOS……果然可以启用,fdisk /mbr,想想应该是可以把 MBR 修复了,至少把我写的破坏掉——结果也不行(何况那部分我写的本来就没错)

在光盘上找到 diskedit.exe 以及 ptedit.exe。那个 diskedit 用了下,只读的(其实是我没看它提示怎么去掉只读),那个 ptedit 只能改 MBR,不能改 EBR,而且是一个框一个框让我填的,看到三四两行都是 0,我把第二行也填成 0,这样就只有一个主分区了,至少它不会往下找下一个分区了。

重启,果然可以进 MS-DOS 和 PE 了。光盘上还有个 DOS 版的 DiskGen 的,可以拿来看看分区是否正确;pqmagic 就不行了,估计是按老的 CHS 来算的,那部分本来就是填通用值的,它只会报错。接下来就是改 EBR,尝试来尝试去,搞到晚上十点多,最后的结论是,上面的红字部分有误,那篇文章也没说清楚。

逻辑分区 EBR 中的第二项(指向下一个扩展分区的项)的开始不是相对于本逻辑分区的,而是相对于本扩展分区(也就是 MBR 中的第二项指定的部分)的,后面的大小不是剩余大小,而是本分区(也就是下个逻辑分区)的大小:

第一个逻辑分区

00 01 01 00 07 FE FF FF 00 08 00 00 00 00 40 06
00 01 01 00 05 FE FF FF 00 08 40 06 00 08 40 06 (相对于扩展分区开始)

后面两行都 0,最后 55 AA 结束。

第二个逻辑分区

00 01 01 00 07 FE FF FF 00 08 00 00 00 00 40 06
00 01 01 00 05 FE FF FF 00 10 80 0C 00 08 40 06 (相对于扩展分区开始)

后面两行都 0,最后 55 AA 结束。

第三个逻辑分区

00 01 01 00 07 FE FF FF 00 08 00 00 00 00 40 06
00 01 01 00 05 FE FF FF 00 18 C0 12 00 08 40 06 (相对于扩展分区开始)

后面两行都 0,最后 55 AA 结束。

第四个逻辑分区

00 01 01 00 07 FE FF FF 00 08 00 00 00 28 1C 04 (相对于扩展分区开始)

后面三行都 0,最后 55 AA 结束。

现在文件都能正常显示读写了,啦啦啦

不过中间有几次试着分区的操作,可能会把哪里给写了

(上面的关于 MBR、EBR 的虽然我本人试了,但是可能是侥幸得逞,不排除理解有误,非特殊情况勿试)


首发:https://blog.csdn.net/cnStreamlet/article/details/2929876



NoteIsSite/0.4