【例6.9】 硬盘死锁故障的修复。
硬盘死锁是指机器在装入操作系统过程中,由于循环分配驱动器符,导致驱动器符用尽使机器陷入死循环状态,无法引导操作系统。
故障现象:一旦将故障硬盘安装到机器中,就无法从硬盘,软盘引导操作系统。
解决方法:在软盘中建立特殊的引导扇区,清除硬盘主引导扇区中死锁故障。
具体方法如下。
(1)取下死锁硬盘,准备一张系统软盘(带DEBUG),和一张空白软盘(已格式化)。
(2)用系统盘启动,执行DEBUG,取出系统盘,放入空白盘(制作特殊引导盘),在DEBUG下操作如下:
(3)将死锁硬盘装入机器中。
(4)加电重启动,软盘引导后又重新启动,关机。
(5)将特殊软盘取出,插入带系统软盘引导系统,成功。
【例6.10】 建立主引导备份执行程序的源程序。
以下是建立主引导备份执行程序的源程序清单(可用A命令输入):
以下是主引导备份程序的程序清单(可用A命令):
【例6.11】 硬盘在启动时显示"Invalid partition table"。
主要原因:分区信息表偏移位置1BE,1CE,1DE,1EE处的值为非0及80H或有2处以上出现80H。
修复过程如下:
在DEBUG下建立如下程序,读取主引导记录。
但此时有可能主引导的程序区部分含有病毒或此区被覆盖丢失,或病毒将原主引导移走。这样就导致出现了新的问题。
(1)如何获得正确的主引导扇区中的程序和建立主引导扇区。
获得正确的主引导程序主要有以下几种方法。
1)由机器的备份中得到,此操作应在无毒下进行。
2)从其他机器中得到。
在其他机器一切正常,即应无毒,包括刚分完区的机器,其方法其本同上。
3)使用命令 FDISK /MBR 可重写硬盘主引导记录;同时也就获得了正确的主引导扇区中的程序。但必须注意:如硬盘分区超过4个,不能用此命令,因储存额外分区信息的区域,会被FDISK /MBR覆盖。
4)根据分析可知在FDISK.COM中含有正常的主引导程序段(限于DOS 外部命令来压缩,例如:DOS 3.30,3.31等中的FDISK.COM文件)。摘取方法如下:
将原主引导扇区中的分区信息表传送到刚建立的文件MBTPRO中的相应位置,而后对其偏移1BE,1CE,1DE,1EE的值进行修改后,再将其写回原主引导的位置。
具体操作如下:
(2)如何查找原正确的主引导扇区。
1)对由于病毒造成的故障(在无毒状态下)修复过程如下:
2)通过该段的程序的分析,查到原主引导扇区所在的位置。
3)通过下列程序段,将0头主引导后面的所有扇区读到内存,然后用D命令去查找原主引导在内存中的位置。
根据返回结果计算本硬盘物理参数之一。
每道扇区数=CL.AND.3F=BF.AND.3F=3FH个扇区/道,也就是CX寄存器的低6Bit 为每道扇区数。
用S命令或用D命令查找也可能查到几处结果,这可能因不同引导型病毒感染所造成的。通过同原始主引导程序段的比较,查到标准的主引导扇区的位置,然后将其传送到300处,并注意最后的2个字节是否为55 AA ,若无或不是,应将其改成55 AA 。
接着操作如下:
【例6.12】 硬盘启动时显示“Error Loading Operation System。”
主要原因:主引导程序在读DOS引导区时出现了物理读硬盘错误(5次读盘未成功)。
分析:读DOS引导区的程序段可以简化成如下程序段:
此段程序调用磁盘中断INT 13读硬盘0道、1头、第一扇区(即DOS引导区)。若反复执行5次仍未成功,则转移到显示程序段,显示错误装入操作系统。
修复方法及过程如下所示。
(1)可采取重新物理低级格式化,然后再重新分区,当然若盘中有一些重要信息,可以在格式化前将其备份出(若软盘引导无法进入C盘,则也可以用其他工具软件进行修复,若无法修复,则可放弃,除非特别重要,可请人编程进行修复)。
(2)对早期硬盘也可以采取移动磁头所在0道的位置,即改变0道位置,跳过坏扇区。
(3)采取跳跃分区技术。原理:在硬盘的前面先分一个较小盘区,为的是跳过坏扇区。小盘区分完后,可以将其置成非DOS分区,然后再用FDISK重新分区,即可达到预期目的。具体操作方法如下:
1)使用DOS下的FDISK先进行分一个足够小的C盘。
A>FDISK
选1建分区,若按柱面给硬盘容量则可取1个柱面,若按容量给参数,则给1M,写盘退出,回到DOS。
2)使用DEBUG修改主引导程序中分区信息表系统类型标志位,将其改成 CD,即非DOS分区。
选1根据需要建立正常分区,也可建立扩展分区(各逻辑盘)。
【例6.13】 硬盘启动显示 “Missing operating system”后死机。
重要原因:DOS引导区中的有效标志55 AA丢失或被覆盖。
(1)常规故障修复过程如下。
(2)对由于病毒造成的故障(在无毒状态下)修复过程如下。
根据返回结果计算本硬盘BIOS参数之一。
每道扇区数=CL.AND.3F=BF.AND.3F=3FH个扇区/道,也就是CX寄存器的低6BIT 为每道扇区数。
用S命令或用D命令查找也可能查到几处结果,这可能因不同引导型病毒感染所造成的。通过同原始DOS引导区比较,查到标准的DOS引导区的位置,然后将其传送到 300处,并注意最后的2个字节是否为55 AA ,若无或不是,应将其改成55 AA 。
接着操作如下:
【例6.14】 硬盘启动时显示信息 “Non-System disk or dirsk error Replace and Strike any when ready”。
主要原因:比较DOS引导区中的两个系统文件名与根目录中的前两个系统文件名不同所引起的。
(1)造成文件名不同的原因之一:DOS引导区被病毒覆盖,但磁盘I/O参数表正确。
1)从Format.com中摘取DOS引导区程序。用同版本的系统软盘启动:
(2)造成文件名不同的原因之二:根目录中前2个文件名被人工修改或病毒覆盖。
【例6.15】 硬盘启动时显示“Disk Boot failure”。
主要原因:DOS引导区程序段读IBMBIO.COM或IO.SYS文件时,产生物理读磁盘错误。
(1)对高版本DOS,可将第一个文件名在DEBUG下用00将其覆盖,但所占磁盘空间并未释放,此时可用DOS外部命令SYS.COM重新传送系统,即可修复。
(2)可采用跳跃分区技术,对该硬盘的重要数据可先备份,然后再重新分区,实践步骤如下。
1)备份重要数据过程略。
2)将该硬盘的主引导扇区清0。
建立一个足够小的分区。(www.xing528.com)
【例6.16】 硬盘启动时显示信息“Bad or missing command interpreter。”
主要原因:在根目录或指定目录中找不到COMMAND.COM或COMMAND.COM磁盘存储有物理缺陷(硬故障)。
(1)将同版本正常的COMMMAND.COM从软盘或其他目录中拷到C 盘的根目录中或
指定的目录中。
(2)若因磁盘物理缺陷(硬故障),可将COMMAND.COM更名(但文件未删除,它所占用的空间也未释放),再将一正常的同版本COMMAND.COM拷贝到指定的目录下即可。
【例6.17】 用软盘引导系统。
A>C: ;键入C:,并回车
显示信息:“Invalid drive specification”。无法进入C:盘。
(1)因使用低版本DOS系统启动,而无法进入C盘,对C盘而言可能自身不能启动,但用同版本或高版本的DOS系统软盘启动,即可进入C盘。
(2)硬盘上DOS基本分区信息表被破坏。
1)因感染病毒而导致分区信息表丢失,手工设计恢复实例。
由DOS系统软盘启动:
根据返回值计算该硬盘BIOS参数:
(DH=1F)+1=20H 头数
CL.AND.3F=3FH 扇区数/头
柱面数高二位=CL.AND.0C0H>>6=BF.AND.0C0>>6=80>>6=2(右移6位则为2)
柱面数=200H+CH+1=200H+6A+1=26BH
读DOS引导区及FAT表:
根据获得的硬盘BIOS参数及找到DOS引导区及文件分配表,计算分区信息表项。
本分区之前占用的扇区数=3FH
本分区使用的扇区数=20*3F*26B=130AA0
本分区起始头号=01H(读DOS引导区时用的)
本分区起始扇区号=01H(读DOS引导区时用的)
本分区起始道号=00H(读DOS引导区时用的)
本分区结束的头号=1FH
本分区结束的扇区号=3FH
本分区结束的道号=26A=26B-1
其中注意结束柱面的高2BIT位应放在结束扇号所占字节的高2位,即3F.OR.80=BF
分区系统类型标志=06H
分区激活标志=80H
因此可得到如下分区信息表:
将分区信息表与主引导程序段合成:主引导程序段可从其他计算机的硬盘中取得,最后将建立的主引导扇区写回即可。举例如下:
2)因病毒而导致分区信息表丢失,从隐藏扇区中查找原主引导扇区的分区信息表。
查找时应该知道该主引导的分区信息表的大致数值(例如上述手工计算的一些常数),这样找时才能确定是否为该硬盘的原主引导扇区。找到后,将其用M命令移到300处。
【例6.18】 由A盘启动系统,转换提示符到C:列目录则显示;“Invalid media type reading drive c Abort,Retry,Fail?”
主要原因:C盘没有高级格式化,或DOS引导区中的I/O参数表被破坏。
1.C盘没有高级格式化
由A盘启动后对C盘进行高级格式化,传系统:
A>FORMAT C:/S
2.因病毒破坏或人为的原因所造成的I/O参数表丢失的修复
(1)因病毒破坏(设此时病毒将DOS引导区移到根目录项最后一扇区中)。利用INT 13中断分别将0道1头,2头,3头,4头,5头……所包括的扇区读到内存,用D命令或S命令查找DOS引导区(注意目录项的最后几个扇区),查找时注意搜索IO SYS 文件,即原在目录项所占的首扇区中,目录项共占20H个扇区。实际操作如下:
(2)因人为或病毒破坏,I/O参数表丢失,该硬盘主引导扇区中的分区信息表是正确的,故可以利用它。手工修复实践如下所示。
1)该盘主引导分区信息表中的某些项,DOS引导区中的I/O参数表可以利用。
01 00 06 3F BF 0B 3F 00-00 00 C1 3C 20 00
本分区之前占用的扇区数=DOS引导区中偏移1C双字单元的内容。
该分区所使用的总扇区数,即主引导区中偏移1CA双字单元中的内容,应与DOS 引导区中偏移20H双字单元相同。
结束头号+1=实际头数与DOS引导区中偏移1A字单元相同
结束扇区号=每道扇区数与DOS引导区中偏移18字单元相同
2)硬盘DOS引导区I/O参数表的一些固定项。
0B字单元=0200 每扇区字节数
0E字单元=0001 保留扇区数
10字节单元=02 FAT表的个数
11字单元=0200 根目录项数
14字节单元=F8 硬盘介质标志
3)通过以上分析可以得出还有2项未确定。
第一,为0D中的每簇扇区数;
第二,为16字单元中的每个FAT所占用的扇区数;
由此可知该硬盘大于1024M,因此选每簇扇区数为40H个扇区.
每个FAT表所占的扇区数实测计算方法如下。
表 6.2
由上面计算可知,每头扇区数为3F,因此,可以从FAT表的起始位置(即第1头的第2个扇区)读2个头的所有扇区(即:3F*2=7E)至内存300H处,并查找是否有2处出现FAT表的起始标志 F8 FF FF。若有则可算出FAT表所占扇区数=(第二显示偏移地-300H)/200H。没有则可继续再读2个头的所有扇区至内存300H处,并继续查找FAT表的起始标志F8 FF FF,若查到后可得FAT表所占扇区数=7E+(第二显示偏移地址-300H)/200H=7E+(900- 300)/200H=7E+3=81H。
操作如下:
将上表与标准DOS引导区合成写回该硬盘DOS引导区,即完成修复工作。
【例6.19】 硬盘启动过程中出现“Incorrect DOS version”。
主要原因:由于在执行COMMAND.COM时,检测与前2个隐含文件的DOS版本不一致所造成。
处理方法:找与两个隐含文件相同版本的COMMMAND.COM拷入硬盘即可。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。