硬盘MBR的内容分析

硬盘的0柱面、0磁头、1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR)。该记录占用512个字节,它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统区。

1.MBR的读取

硬盘的引导记录(MBR)是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。

用INT13H的读磁盘扇区功能的调用参数如下:

入口参数:AH=2 (指定功能号)

AL=要读取的扇区数

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

DH=磁头号

CL高2位+CH=柱面号

CL低6位=扇区号

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

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

错误信息:如果出错CF=1 AH=错误代码

用DEBUG读取位于硬盘0柱面、0磁头、1扇区的操作如下:

A>DEBUG

-A 100

XXXX:XXXX MOV AX,0201 (用功能号2读1个扇区)

XXXX:XXXX MOV BX,1000 (把读出的数据放入缓冲区的地址为CS:1000)

XXXX:XXXX MOV CX,0001 (读0柱面,1扇区)

XXXX:XXXX MOV DX,0080 (指定第一物理盘的0磁头)

XXXX:XXXX INT 13

XXXX:XXXX INT 3

XXXX:XXXX (按回车键)

-G=100 (执行以上程序段)

-D 1000 11FF (显示512字节的MBR内容)

2.MBR的组成

一个扇区的硬盘主引导记录MBR由4个部分组成。

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

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

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

结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。


0000-0088

Master Boot Record

主引导程序


主引导

程序


0089-01BD


出错信息数据区


数据区


01BE-01CD


分区项1(16字节)


分区表


01CE-01DD


分区项2(16字节)


01DE-01ED


分区项3(16字节)


01EE-01FD


分区项4(16字节)


01FE


55


结束标志


01FF


AA

3.MBR中的分区信息结构

占用512个字节的MBR中,偏移地址01BEH--01FDH的64个字节,为4个分区项内容(分区信息表)。它是由磁盘介质类型及用户在使用 FDISK定义分区时确定的。在实际应用中,FDISK对一个磁盘划分的主分区可少于4个,但最多不超过4个。每个分区表的项目是16个字节,其内容含义如下表所示。


存贮字节位


内容及含义


第1字节


引导标志。若值为80H表示活动分区,若值为00H表示非活动分区。


第2、3、4字节


本分区的起始磁头号、扇区号、柱面号。其中:

磁头号——第2字节;

扇区号——第3字节的低6位;

柱面号——为第3字节高2位+第4字节8位。


第5字节


分区类型符。

00H——表示该分区未用(即没有指定);

06H——FAT16基本分区;

0BH——FAT32基本分区;

05H——扩展分区;

07H——NTFS分区;

0FH——(LBA模式)扩展分区(83H为Linux分区等)。


第6、7、8字节


本分区的结束磁头号、扇区号、柱面号。其中:

磁头号——第6字节;

扇区号——第7字节的低6位;

柱面号——第7字节的高2位+第8字节。


第9、10、11、12字节

本分区已用的扇区数。

第13、14、15、16字节

本分区的总扇区数。

4.MBR的主要功能及工作流程

在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱面、0磁道、1扇区)读入7C00处,然后将控制权交给主引导代码。主引导代码的任务包括:

扫描分区表,找到一个激活(可引导)分区;

找到激活分区的起始扇区;

将激活分区的引导扇区装载到内存7C00处;

将控制权交给引导扇区代码;

如果主引导代码无法完成上述任务,它将显示以下错误信息之一:

No active partition.

Invalid partition table.

Error loading operating system.

Missing operating system.

机器加电或按reset键后都要进行系统复位,复位后CS=FFFFH,IP=0000H,那么自然就从FFFF:0000H处开始执行指令,这个地方只有一条JMP指令跳转到系统自检程序处,系统自检完成后把软盘的第一个扇区(如果由软盘启动)或者硬盘的第一个扇区,即MBR扇区(如果由硬盘启动)读入到0:7C00H处,然后把控制权交出,从0:7C00H处继续执行。

下面就是硬盘的MBR代码分析:

其中的引导扇区是指硬盘相应分区的第一个扇区,是和操作系统有关的。操作系统的引导是由它来完成的,而MBR并不负责,MBR和操作系统无关。引导扇区的任务是把控制权转交给操作系统的引导程序。

程序流程:

1 将程序代码由0:7C00H移动到0:0600H(注,BIOS把MBR放在0:7C00H处)

2 搜索可引导分区,即80H标志

成功:goto 3

失败:跳入ROM BASIC

无效分区表:goto 5

3 读引导扇区

失败:goto 5

成功:goto 4

4 验证引导扇区最后是否为55AAH

失败:goto 5

成功:goto 6

5 打印错误进入无穷循环

6 跳到0:7C00H进行下一步启动工作

5、硬盘逻辑驱动器的分区表链结构

硬盘是由很多个512字节的扇区组成,而这些扇区会被组织成一个个的“分区”。

硬盘的分区规则是:一个分区的所有扇区必须连续,硬盘可以有最多4个物理上的分区,这4个物理分区可以时个主分区或者3个主分区加一个扩展分区。在DOS/Windows管理下的扩展分区里,可以而且必须再继续划分逻辑分区(逻辑盘)。

扩展分区的信息位于硬盘分区表(DPT)中, 而逻辑驱动器的信息则位于扩展分区的起始扇区, 即该分区的起始地址(面/扇区/磁道)所对应的扇区, 该扇区中的信息与硬盘主引导扇区的区别是不包含MBR, 而16字节的分区信息则表示的是逻辑驱动器的起始和结束地址等。

MBR( Master Boot Record )主引导记录包含两部分的内容,前446字节为启动代码及数据,而从446(0x1BE)开始则是分区表,分区表由四个分区项组成,每个分区项数据为16字节,记录了启动时需要的分区参数。

在启动过程中MBR的主引导程序,扫描分区表,找到一个激活分区;把激活分区的
引导扇区装入内存7C00中,并把控制权教引导扇区。grub不能引导DOS系统的
bootloader,MBR找到激活分区,使用的chainloader+1加载DOS的引导程序。
使用DD把DOS的IMG考入硬盘的分区中,可以引导。在linux不能使用fisk进行扩充
文件系统大小,gparted也不行。还没有找到扩展分区方法

第二部分 MBR修复方法

常见的MBR修复方法有三种
   方法1:首先用光驱引导或者用软驱进入纯dos模式,再用 fdisk /mbr 命令恢复系统固有的主引导程序
   方法2:用xp安装盘,进入恢复控制台, fixmbr x:
   方法3:WinXP以上系统使用Diskpart命令里面的Clean擦出MBR

第三部分 修复MBR命令 Fdisk /mbr 详解

1. 主引导程序受损 
   此乃常见故障, 硬盘不能自举, 微机死锁, 或显示 boot failure-insert system diskette, ……之类; 经由软盘引导, fdisk 命令能列出分区信息。
   取硬盘同版本 dos 软盘或应急盘引导, 运行 a>fdisk /mbr 
  命令,仅向主引导扇区写入当前系统固有的主引导程序, 硬盘即恢复自举能力, 如果 dos 引导信息及系统文件等均正常。
   2. 仅设基本 dos 分区硬盘的主引导信息全损 
   前述表现之外, 执行 a>c:, 显示 invalid drive specification,乃分区表遭毁; fdisk 命令不能列出分区信息。 实践中曾遇两例原仅设基本 dos 分区的硬盘(无扩展dos分区), 主引导扇区面目皆非, 经分别运行原用的 ms dos 7.0 及 7.1 fdisk /mbr命令, 常规重写全套完全适用的主引导信息, 由于其 dos 引导信息、文件分配表、根目录及用户数据完好, c 盘均迅即康复。(常规 fdisk 命令初始化 dos 引导扇区等, 有需后续处理) 
   3. 清除 lilo 信息 
   在以系统自带的 linux load 过程中, 每修改主引导信息, 籍以引导 linux。 需要时, 删除 linux 分区后, 可用 fdisk /mbr 命令恢复系统固有的主引导程序。

要查看 MBR 的内容,请使用下面的命令:

dd if=/dev/hda of=mbr.bin bs=512 count=1 
od -xa mbr.bin

这个 dd 命令需要以 root 用户的身份运行,它从 /dev/hda(第一个 IDE 盘) 上读取前 512 个字节的内容,并将其写入 mbr.bin 文件中。od 命令会以十六进制和 ASCII 码格式打印这个二进制文件的内容。

时间: 2024-10-24 01:33:13

硬盘MBR的内容分析的相关文章

【转载】硬盘MBR详细介绍

原文地址:http://blog.chinaunix.net/uid-15007890-id-106892.html 硬盘MBR详细介绍 硬盘是现在计算机上最常用的存储器之一.我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力.而这些数据都以文件的形式存储在硬盘里.不过,计算机可不像人那么聪明.在读取相应的文件时,你必须要给出相应的规则.这就是分区概念. 分区从实质上说就是对硬盘的一种格式化.当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master

硬盘MBR,GPT分区简介

硬盘分区简介 硬盘相关知识 硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0.1.2开始编号.每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的).每个盘片的划分规则通常是一样的.这样每个盘片的半径均为固定值R的同心圆在逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0.1.2--每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则

硬盘分区表知识——详解硬盘MBR (转)

Ref: http://www.blogjava.net/galaxyp/archive/2010/04/25/319344.html 硬盘是现在计算机上最常用的存储器之一.我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力.而这些数据都以文件的形式存储在硬盘 里.不过,计算机可不像人那么聪明.在读取相应的文件时,你必须要给出相应的规则.这就是分区概念. 分区从实质上说就是对硬盘的一种格式化.当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master

Linux下dd和od命令备份查看硬盘mbr,并用vim修改!

主引导记录(Master Boot Record,MBR),位于一个硬盘的0柱面.0盘面.1扇区,共512字节.具体划分依次为:引导代码区440字节.磁盘签名4字节.空白(Ox0000)2字节.MBR分区表(Disk Partition Table,DPT)64字节.结束标志(Ox55AA)2字节.其中的MBR分区表(DPT)区别于另一种“全局唯一标识分区表(GUID Partition Table,GPT)”.本文今天仅讨论MBR及DPT. 废话不多说了,下面先介绍如何备份.恢复MBR及DPT

Linux下如何备份恢复和查看硬盘MBR与分区表

主引导记录(Master Boot Record,MBR),位于一个硬盘的0柱面.0盘面.1扇区,共512字节.具体划分依次为:引导代码区440字节.磁盘签名4字节.空白(Ox0000)2字节.MBR分区表(Disk Partition Table,DPT)64字节.结束标志(Ox55AA)2字节.其中的MBR分区表(DPT)区别于另一种"全局唯一标识分区表(GUID Partition Table,GPT)".本文今天仅讨论MBR及DPT. 废话不多说了,下面先介绍如何备份.恢复MB

【转】详解硬盘MBR

原文网址:http://hi.baidu.com/waybq/item/a4490f026f9859d21ef046a4 硬盘是现在计算机上最常用的存储器之一.我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力.而这些数据都以文件的形式存储在硬盘里.不过,计算机可不像人那么聪明.在读取相应的文件时,你必须要给出相应的规则.这就是分区概念. 分区从实质上说就是对硬盘的一种格式化.当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Rec

主引导记录MBR/硬盘分区表DPT/主分区、扩展分区和逻辑分区/电脑启动过程

主引导扇区主引导扇区位于整个硬盘的0柱面0磁头1扇区{(柱面,磁头,扇区)|(0,0,1)},bios在执行自己固有的程序以后就会jump到MBR中的第一 条指令.将系统的控制权交由mbr来执行.主引导扇区主要由三部分组成:主引导记录 MBR(Master Boot Record或者Main Boot Record).硬盘分区表 DPT(Disk Partition Table)和结束标志字三大部分组成. 对于硬盘而言,一个扇区可能的字节数为128×2n (n=0,1,2,3).大多情况下,取n

(转)硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程

硬盘结构硬盘有很多盘片组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0.1.2开始编号.每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0.1.2…….每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1.2.3……形成Cylinders×Heads×Sector个扇区. 主引导扇区主引导扇区位于整个硬盘的0柱面0磁头1扇区

MBR, EFI, 硬盘分区表

硬盘MBR详细介绍 http://blog.chinaunix.net/uid-22915173-id-597702.html 结束柱面号(End cylinder)超过1023时怎么处理 http://zhidao.baidu.com/link?url=cb5TsBiAzPRvCcRzAzJAYI1pLThHWOd8icgRW0rpjtaa9rNq3q8mM29h8ObF20pv6uWy6GNRKWVRolAZ-r1pAa grub stage 1 是如何引导grub stage 2 的 ht