标题:硬盘分区消失 重建MBR、分区表 出处:Felix021 时间:Thu, 06 Nov 2008 23:40:22 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?1255 内容: 详细说一下feli遇到的问题。 首先需要了解一下,硬盘的0柱面0磁道1扇区保存了一个512Bytes的结构信息,叫做MBR(Main Boot Record),中文名为“主引导记录”。我们的电脑启动的时候,在开机POST自检后就会将MBR载入内存,然后运行MBR中的代码。在MBR前446个字节是引导代码,接下来的64个字节叫做硬盘分区表(Partition Table),其中保存了一个包含4个16字节记录的结构,每个记录里保存了硬盘中一个分区的信息(起始地址、分区类型、可否引导等),最后再跟上两个字节0x55 0xAA表示MBR结束。因此硬盘最多可以有4个分区,可以是4个主分区,也可以最多是3个主分区和1个扩展分区;每个扩展分区又可以分成数个逻辑分区。每个分区的第一个扇区(512Bytes)也保存了一个类似MBR的文件结构,叫做DBR,如果是逻辑分区的DBR,还包含了下一个逻辑分区的信息(起始地址等);这样就构成了我们平时见到的所有的硬盘分区方式。 windows在安装过程中会修改MBR的内容,把启动代码替换成它自己的启动代码,同时会把它的引导文件(NTLDR, NTDETECT.COM, BOOT.ini)放到一个主分区中,并且在MBR的记录中标记这个分区是可启动的,然后就会通过BIOS->MBR->可引导分区DBR->NTLDR(读取boot.ini的配置)->Windows 这样的顺序启动Windows。所以在安装windows的时候,必须要有一个主分区是windows可以识别并读写的,比如fat16/fat32/ntfs等。 feli的硬盘分区比较奇怪,第一个主分区是linux的swap分区,剩下的是一个扩展分区,里面包含了2个linux的ext3分区和一个ntfs分区。这样的分区结构是不适合直接安装windows的,他把XP安装到了那个ntfs分区中,于是在安装完以后,系统就根本无法启动了,在启动的时候显示类似 Invalid ooxx 之类的错误;启动Ubuntu 8.10 LiveCD的Partition Editor,发现整个硬盘的分区结构已经消失了,变成一整个未分区的硬盘。 分析可知是windows修改了MBR中的分区表,可能是改成了从那个swap分区启动,也可能是修改成了从那个ntfs分区启动,总而言之是无法正常启动的;但是肯定没有修改其他分区的结构,也就是说只要重建了分区表就OK。于是到我的机器上找了一下,发现在深山红叶V30里面有一个MHDD硬盘修复软件,可以自动搜索分区并写入分区表,重建MBR的结构。 于是刻了一张盘,到Feli的机器上,从CD启动,选择引导到DOS工具箱,引导到帮助菜单以后,输入MHDD,回车,进入这个软件,会提示(英文)你硬盘上没有分区,是否需要搜索,选择yes,然后会问你是自动(Auto)还是交互式(Interactive),以及取消。最好是选择Interactive,然后会在搜索到一个分区以后显示分区的起始位置以及大小,并提示你是否需要保存到分区表,大概对比一下你的硬盘结构,如果是,就选择save。很快就会把硬盘搜索完,然后会进入它的主界面,就可以看到恢复出的硬盘结构。选择第一个菜单(貌似是General),选择Save,退出,重启,Oh yeah,见到了熟悉的Ubuntu 8.10 ^^ Generated by Bo-blog 2.1.0