不丢失数据用fdisk重建MBR
如果出现MBR损坏,则需要重建,下面介绍使用fdisk重建硬盘MBR的方法
(1) 不丢失原有的数据用fdisk重建硬盘MBR的原理
当硬盘的MBR被破坏后,如果简单地采用FDISK/MBR重建,,则会彻底破坏硬盘中的原有数据。这是因为在MBR的重建过程中,尽管不同版本的FDISK的作用范围不一样,但它们都会对硬盘的DOS引导区(DBR)或者FAT表区及文件目录区等关键扇区进行了写入某一固定数据00H、001H或F6H的操作,以确保FORMAT.COM能对磁盘顺利格式化。
因此,在用FDISK重建硬盘MBR过程中,如果能阻止对硬盘DBR区、FAT表区及文件目录区等扇区进行的写固定操作,,就可以在不破坏原来硬盘数据的情况下方便地重建硬盘的MBR。
具体办法是:首先运行一个常驻内存的程序阻止对硬盘除0柱0面1扇区以外的写操作,然后再用FDISK程序对硬盘进行分区,无论在什么情况下,都能迅速、安全而且是较为简单和方便地在受损硬盘上重建MBR。
(2) 阻止对硬盘除0柱0面1扇区以外的写操作的内存驻留程序
根据以上的要求,在执行FDISK之前可以用一个内存驻留程序实现。该程序的具体功能是拦截13H号中断,取消所有对硬盘格式化操作和除对硬盘主引导区(0面0道1扇区)以外的操作。以下就是实现该功能用汇编语言的内存驻留程序CH12。ASM的程序清单:
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 100H
STRAT:JMP BEGIN
INT-13B 04H DUP(0)
RECE1:CMP AH ,05H
JNZ CHK1
CHAN:CMP AH ,03H
JNZ PASS
CMP AX,0301H
JNZ CHAN
CMP CX,0001H
JNZ CHAN
CMP DX,0080H
JNZ CHAN
PASSUSHF
CALL CSWORD PTR[INT-13]
IREF
BEGIN:JMP BEGIN
DISP1B 0DH,0AH ‘程序驻留成功!’,0DH,0AH,24H
DISP2:DB 0DH,0AH’程序已经驻留!‘,0dh,0AH,24H
BEGIN:MOV AX.,3513H
INT 21H
CMP BX,OFFSET RECE1
JNZ LOAD
MOV AX,ES
CMP AX,100H
JL LOAD
MOV AX,CS
MOV ES,AX
MOV AH,09H
LEA DX,DISP2
INT 21H
INT 20H
LOAD:MOV CS :WORD PTR[INT—13+02H],AX
CLI
MOV CS:WORD PTR[INT-13+02H ],AX
CLI
MOV AX,CS
MOV DS,AX
LEA DX,RECE1
MOV AX,2513H
INT 21H
STI
LEA DX,DISP1
MOV AH,09H
INT 21H
DE ENDS
EDN START
将以上的的CH13.ASM编译并接连生成EXE文件,再用DOS命令EXE2BIN或者用DEBUG将其转换成COM文件。这样,内存驻留程序CH13.COM就生成了。
(3) 重建MBR的具体操作步骤
① 准备工具软盘
将生成的CH13。COM文件拷贝到带有DOS引导系统的软盘上,DOS版本最好与硬盘原来的DOS版本相同。同时,再年拷入该DOS版本下的FDISK文件和CHKDSK文件。
② 重建MBR
用以上的工具软盘启动微机,,运行CH13。COM,该程序会驻留内存并在屏幕上给出提示信息,此后,就可能用FDISK .COM重建硬盘的MBR了。
▲ 单个分区硬盘MBR的生成
运行FDISK ,将硬盘分成一个主分区即可。
▲ 有扩展分区的硬盘MBR的重建
对于有扩展分区的硬盘,用户如果记得每个分区的大小,则可直接运行FDISK分区;如果不记得每个分区的大小。应该先运行CHKDSK,读得原来的主分区(即C盘)的大小,然后再运行FDISK对硬盘进行正确的分区。