硬盘MBR常识和修复MBR的方法解析

简介:

1 MBR常识介绍

MBR(Master Boot Record),是硬盘的主引导记录,在主引导扇区,位于硬盘的cylinder 0, head 0, sector 1 (Sector是从1开始的)。MBR可以通过FDISK创建,通过INT 13h的fun 2来读取。

引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节(偏移0--偏移1BDH),DPT占64个字节(偏移1BEH--偏移1FDH),最后两个字节“55AA”(偏移1FEH--偏移1FFH)是硬盘有效标志。 
 
MBR功能 
检查分区表

搜索可引导分区

加载活动分区的第一扇区(DOS Boot Record)
 
MBR组成 
一个扇区的硬盘主引导记录MBR由4个部分组成:

•主引导程序:偏移地址0000H--0088H,它负责从活动分区中装载,并运行系统引导程序。

•出错信息数据区:偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。

•分区表(DPT,DiskPartitionTable):含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。

•结束标志字:偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。   
MBR结构 
0 字节 分区状态: 如0-->非活动分区,80--> 活动分区

1 字节 该分区起始头(HEAD)

2 字节 该分区起始扇区和起始柱面

4 字节 该分区类型,如82--> Linux Native分区,83--> Linux Swap 分区

5 字节 该分区终止头(HEAD)

6 字节 该分区终止扇区和终止柱面

8 双字节 该分区起始绝对分区

C 双字节 该分区扇区数

最后的两个标志“55 AA”是分区表的结束标志,如果这两个标志被修改(有些病毒就会修改这两个标志),则系统引导时将报告找不到有效的分区表。   
读取MBR 
入口参数:AH=2 (指定功能号)

AL=要读取的扇区数

DL=磁盘号(0、1-软盘;80、81-硬盘)

DH=磁头号

CL高2位+CH=柱面号

CL低6位=扇区号

CS:BX=存放读取数据的内存缓冲地址

出口参数:CS:BX=读取数据存放地址

错误信息:如果出错CF=1 AH=错误代码   
修复MBR 
fdisk /mbr :重写硬盘主引导区,注意中间有个空格。

命令适用于:

1. 主引导程序受损

常见故障,硬盘不能自举,微机死锁,或显示 boot failure-insert system diskette; 经由软盘引导, fdisk 命令能列出分区信息。取硬盘同版本 dos 软盘或应急盘引导, 运行 a>fdisk /mbr 命令,仅向主引导扇区写入当前系统固有的主引导程序, 硬盘即恢复自举能力, dos 引导信息及系统文件等均正常。

2. 清除嵌入式主引导型病毒

此类病毒常见, 它们仅以先导模块嵌入主引导程序, 不触动分区表及检验标志。首选以检出此类病毒的软件清除。

遇杀毒软件不效, 简洁高效的对策是以硬盘同版本 dos 软盘引导, 运行 a>fdisk /mbr 命令, 向硬盘单一地写入当前系统固有的主引导程序, 病毒“先导”模块被覆盖, 分藏它处的残部随之丧失作用。

以常规 fdisk 命令进行分区, 难能清除此类病毒, 原因是当它读得检验标志完好, 自动逾越主引导程序写操作, 仅登录分区表。硬盘格式化后不能自举。行之有效的措施是运行 a>fdisk /mbr命令。

3. 仅设基本 dos 分区硬盘的主引导信息全损

前述表现之外, 执行 a>c:, 显示 invalid drive specification,分区表遭毁; fdisk 命令不能列出分区信息。

分别运行原用的 ms dos 7.0 及 7.1 fdisk /mbr命令, 常规重写全套完全适用的主引导信息, 由于其 dos 引导信息、文件分配表、根目录及用户数据完好, c 盘均迅即康复。

4. 清除 lilo 信息

在以系统自带的 linux load 过程中, 每修改主引导信息, 籍以引导 linux。

需要时, 删除 linux 分区后, 可用 fdisk /mbr 命令恢复系统固有的主引导程序。

5. 清除主引导程序“空闲”字节中的外加信息

既往所见各版本 dos 登录的主引导程序基本相同, 其末段均为大于200 字节的“空闲”(00h); ms dos 7.1 / 8.0 使用新版主引息程序, “空闲”字节数大减。

上述“空闲”字节有被利用登录开机密码、软件鉴别信息之类。若有需要, 也可用 fdisk /mbr 命令复原, 即予清除。

 

2 修复MBR方法

硬盘,在BIOS里正常识别,但是用低格软件和Winxp 格式化功能都不行,提示:MBR读取错误。应该是引导扇区读不出来了.

请用以下方法解决:

方法1:首先用光驱引导或者用软驱进入纯dos模式,再用 fdisk /mbr 命令恢复系统固有的主引导程序

方法2:用xp安装盘,进入恢复控制台, fixmbr x:

方法3:WinXP以上系统使用Diskpart命令里面的Clean擦出MBR



本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/387927,如需转载请自行联系原作者

相关文章
|
22天前
|
机器学习/深度学习 存储 PyTorch
Pytorch中in-place操作相关错误解析及detach()方法说明
Pytorch中in-place操作相关错误解析及detach()方法说明
39 0
|
27天前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
126 0
|
29天前
|
敏捷开发 开发框架 数据可视化
|
1月前
|
C语言
【C语言】大小写字母的相互转化:多种方法解析及原理说明
【C语言】大小写字母的相互转化:多种方法解析及原理说明
93 0
|
1月前
|
机器学习/深度学习 数据采集 自然语言处理
岭回归与LASSO回归:解析两大经典线性回归方法
岭回归与LASSO回归:解析两大经典线性回归方法
岭回归与LASSO回归:解析两大经典线性回归方法
|
3月前
|
存储 C#
C# 方法详解:定义、调用、参数、默认值、返回值、命名参数、方法重载全解析
方法是一段代码,只有在调用时才会运行。 您可以将数据(称为参数)传递给方法。 方法用于执行某些操作,也被称为函数。 为什么使用方法?为了重用代码:定义一次代码,然后多次使用。
39 1
|
13天前
|
存储 缓存 监控
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
|
13天前
|
存储 算法
从动态规划到贪心算法:最长递增子序列问题的方法全解析
从动态规划到贪心算法:最长递增子序列问题的方法全解析
15 2
|
20天前
|
算法 项目管理 开发者
【Conan 入门教程 】深入解析Conan中的依赖关系的定义方法(In-depth Analysis of Dependency Definition Methods in Conan)
【Conan 入门教程 】深入解析Conan中的依赖关系的定义方法(In-depth Analysis of Dependency Definition Methods in Conan)
34 0
|
25天前
|
算法 Unix Linux
【C/C++ 疑难解决】深入解析C++链接错误:实用的调试技巧和方法
【C/C++ 疑难解决】深入解析C++链接错误:实用的调试技巧和方法
13 1

推荐镜像

更多