设为首页
收藏本站

 首页|

数据恢复可把待恢复盘为从盘挂在机子上用软件恢复,电脑维修知识网建议最好ghost到另一硬盘再恢复

数据恢复--分区表篇

1.1 基本术语

初买来一块硬盘,我们是没有办法使用的,你需要将它分区、格式化,然后再安装上操

作系统才可以使用。一个完整硬盘的数据应该包括五部分:MBR,DBR,FAT,DIR 区和

DATA区。其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

主引导扇区

主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot

Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否

正确以及确定哪个分区为引导分区,并在程序结束时把该分区的启动程序(也就是操作系统

引导扇区)调入内存加以执行。至于分区表,很多人都知道,以80H 或00H 为开始标志,

以55AAH 为结束标志,共64 字节,位于本扇区的最末端。值得一提的是,MBR是由分区

程序(例如DOS 的Fdisk.exe)产生的,不同的操作系统可能这个扇区是不尽相同。如果你

有这个意向也可以自己去编写一个,只要它能完成前述的任务即可,这也是为什么能实现多

系统启动的原因(说句题外话:正因为这个主引导记录容易编写,所以才出现了很多的引导

区病毒)。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

操作系统引导扇区

OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1 柱面1 扇区

(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分

区的第一个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被

称为BPB(BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,

其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务是判断本分区根目

录前两个文件是否为操作系统的引导文件(例如MSDOS 或者起源于MSDOS 的Win9x/Me

的IO.SYS 和MSDOS.SYS)。如是,就把第一个文件读入内存,并把控制权交予该文件。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

BPB 参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目

录大小、FAT 个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR

由高级格式化程序产生(例如DOS 的Format.com)。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

文件分配表

FAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统,为了数

据安全起见,FAT 一般做两个,第二FAT 为第一FAT 的备份, FAT 区紧接在OBR之后,其

大小由本分区的大小及文件分配单元的大小决定。关于FAT 的格式历来有很多选择,

Microsoft 的DOS 及Windows 采用我们所熟悉的FAT12、FAT16 和FAT32 格式,但除此以

外并非没有其它格式的FAT,像Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文

__件管理方式。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

硬盘分区方式

我们平时说到的分区概念,不外乎三种:主分区、扩展分区和逻辑分区。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

在主分区中,不允许再建立其它逻辑磁盘。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅

为分区表保留了64 个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中

总计可以存储4 个分区的数据。操作系统只允许存储4 个分区的数据,如果说逻辑磁盘就是

分区,则系统最多只允许4 个逻辑磁盘。对于具体的应用,4 个逻辑磁盘往往不能满足实际

需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的

指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储

一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也

就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建

立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁

盘。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

需要特别注意的是,由于主分区之后的各个分区是通过一种单向链表的结构来实现链接

的,因此,若单向链表发生问题,将导致逻辑磁盘的丢失。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

1.2 系统启动流程

各种不同的操作系统启动流程不尽相同,但是第一、二阶段总是一样的。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

第一阶段:系统加电自检POST过程。POST是Power On Self Test的缩写,也就是加电

自检的意思,微机执行内存0ffff:0000H 处的程序(这里是一段固化的ROM程序),对系统

的硬件(包括内存)进行检查。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

第二阶段:读取分区记录和引导记。当微机检查到硬件正常并与CMOS设置相符后,按

照CMOS设置从相应设备启动(我们这里假设从硬盘启动),读取硬盘的分区记录(DPT)

和主引导记录(MBR)。将硬盘第一个扇区 (0头0道1扇区, 也就是Boot Sector)读入内存

地址 0000:7c00 处。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则转去尝试其他启动介质, 如果

没有其他启动介质则显示"No ROM BASIC" 然后halt 死机。如果是则跳转到 0000:7c00 处

执行 MBR 中的程序。MBR 首先将自己复制到 0000:0600 处, 然后继续执行。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

MBR里面存放的是一小段程序以及分区表的数据。在使用WIN9X 和DOS时,这里面

放的代码就把分区表里标记为Active 的分区的第一个扇区(一般存放着操作系统的引导代

码)读入内存并跳转到那里开始执行。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

而在用LILO 引导LINUX 时,有两种选择:

(1) 把LILO 安装在MBR。这时就由BIOS直接把LILO 代码调入内存,然后跳转执

行LILO。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

即: BIOS——>LILO(在MBR中)——>KERNEL

(2) 把LILO 安装在LINUX 分区,并把LINUX 分区设为Active。这时,BIOS 调入

的是

WIN9X/DOS 下的MBR 代码,然后由这段代码来调入LILO 的代码(位于活动分区的

第一个扇区)。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

即: BIOS——>MBR——>LILO(在活动分区的第一个扇区)——>KERNEL 。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

因为在读入及执行MBR时,操作系统还没有起来,所以只能用BIOS提供的INT13 来

进行磁盘操作,而INT13 只能读写硬盘1024 柱面之前的数据,由此可知任何操作系统的引

导代码必须在1024 柱面之前。对于LINUX 来说,不管你使用方式(1)还是方式(2)启动,都

要保证KERNEL 放在1024 柱面之前。只有在KERNEL 起来以后,才有读/写1024 柱面以

后数据的能力。因为LINUX 不使用INT13 来进行硬盘操作。从上面我们也可以看到,不存

在什么“WIN95 可以,而LINUX 不可以”的问题,作为操作系统要能被正确引导,在现有

的BIOS 下,它们的引导部分都必须在1024 柱面之前。如果操作系统本身还是基于INT13

来进行磁盘操作的话,那么它也只能读/写1024 柱面之前的数据。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

软盘的引导扇区相当于硬盘活动分区的引导扇区,它通常用于装入软盘上的操作系统。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

任何一个软盘如果在dos/win95/98下格式化都会有与win85/98的启动分区一样的OBR,

同样在winNT/win200/winxp下格式化的软盘也与winnt 启动分区一样的OBR。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

所以linux 下可以这样导出OBR.

mount /dev/hda1 /win98 -t vfat

dd if=/dev/hda? bs=512 count=1 of=/win98/BOOTSECT.LIN

^^^^root分区的标记

也可以这样构造一个引导盘:

分一个小分区然后把bootdisk导入:

dd if=/mnt/floppy of=/hd??

第三阶段:读取OS 引导记录。微机正确读取分区记录和主引导记录后,如果主引导记

录和分区表校验正确,则执行主引导记录并进一步读取DOS 引导记录(位于每一个主分区

的第一个扇区),然后执行该OS引导记录。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

在主分区表中搜索标志为活动的分区. 如果发现没有活动分区或有不止一个活动分区,

则转停止. 将活动分区的第一个扇区读入内存地址 0000:7c00 处. 检查 (WORD) 0000:7dfe

是否等于 0xaa55, 若不等于则显示 "Missing Operating System" 然后停止, 或尝试

软盘启动. 跳转到 0000:7c00 处继续执行特定系统的启动程序。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

第四阶段:装载系统隐含文件。就是根目录的前两个个文件。这两个文件是可以绝对定

位的,所以即使是目录错误或文件分配表错误而列不出目录时也能顺利启动操作系统。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

附录:

--------------------------------------------------------------------------------

Fdisk的MBR参数

MBR 系 FDISK.COM(EXE) 一项未公布的开关,隐含于 MS DOS 3.30,延至 MS DOS

8.0(Windows ME)。实践中,有籍以修复主引导信息,重点在主引导程序。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

FDISK /MBR 命令流程的分支有二:

读得主引导扇区检验标志(字) AA55h,操作单一,仅向主引导扇区位移 0-1BDH 写入当

前系统固有的主引导程序,安全可靠。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

难能可贵的是它不触动主引导信息其余模块(分区表、检验标志),以及随后的 DOS 引导

信息、文件分配表、根目录,省事许多。检出检验标志非 AA55h,写主引导程序、初始化

分区表及登录检验标志,在 MS DOS 7.0 - 8.0 环境中,常规以系统支持的最大容量分配

给基本 DOS 分区的方式登录分区表。分区表初始化(可能幸存的分区表被清除)的后果不难

想象; 目前硬盘大都设置有其它分区,即使在高版本 DOS 环境中运作,常规建立的分区

表每难能符合实际需求,后续工作量也相当可观。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

不过,它也不触动位于其后的 DOS 引导信息、文件分配表及根目录,高版本 FDISK

/MBR 命令适用于修复仅设基本 DOS 分区的硬盘分区表及检验标志受损,或主引导信息全

毁。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

可见,在运行 FDISK /MBR 命令之前,需查明检验标志是否 AA55h,酌情处理,切忌

盲动。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

经由 DOS 软盘引导,认硬盘,检验标志必健在。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

另外,在 FDSIK 主菜单中选 4. Display Partition Information,列出分区信息,进一步证

实检验标志正常; 若现 No partitition defined,检验标志每变异,而分区表或许尚健在。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

在Win200 的控制台中有FIXMBR命令,与此功能相同,如果你装含win2000的多系统失

败就可以用FIXMBR恢复,但是笔者有过破坏主分区表的经历。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

1.3 二分区表的推算

一般来说分区表是不需要手工推算的,有很多分区工具可以使用例如fdisk、PQMagic、

win2000 的安装程序、linux 的安装程序、win2000/xp 的磁盘管理工具。如果需要自己推算

也不用,例如Pqmagic的partiontableedit,很多磁盘编辑工具都有分区表的摸板可以很方便地

使用。比如Norton Diskedit、WinHex、RunTime DiskExplorer etc.

我的资料也大不分来自他们的帮助。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

值得提醒的是分区工具配合合使用可以达到很多用单一工具难以达到的效果,但是这样会

产生一个不规则的分区表,使硬盘无法作为启动盘而从逻辑上没有任何问题。如果你的硬盘

在dos 下或启动时出奇地慢或根本无法启动而能读取数据可能就是这个问题。这或者是分区

表数据结构本身的问题。总的来说,最可靠的是fdisk,虽然功能少一些但是建立的分区表

是最标准的。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

下面,我们结合各种磁盘编辑器的帮助和摸板来具体分析一下分区表的结构。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

Master Boot Record

The Master Boot Record is located at the physical beginning of a hard disk, editable using the

Disk Editor. It consists of a master bootstrap loader code (446 bytes) and four subsequent,

identically structured partition records. Finally, the hexadecimal signature 55AA completes a valid

Master Boot Record.

硬盘的主引导记录在硬盘的0磁头0 柱面1 扇区。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

主引导记录由三部分组成:

(1)主引导程序;

(2)四个分区表;

(3)主引导记录有效标志字。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

详见表1。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

[表1 主引导记录结构]

位 置 内 容

0000H -00D9H 主引导记录代码区

00DAH -01BDH Win98/me以前为空闲,lwin2000以后或其他引导工具同上.

01BEH -01CDH 分区1 结构信息

01CEH -01DDH 分区2 结构信息

01DEH -01EDH 分区3 结构信息

01EEH -01FDH 分区4 结构信息

01FEH -01FFH 55 AAH 主 引 导 记 录 有 效 标 志

说明:

A,分区表自偏移1BEH 处开始,分区表共64 个字节,表中可填入四个分区信息,每十六

个字节为一个分区说明项,这16 个字节含义详见表2。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

B,必须注意:扇区号的高二位占用柱面号所在字节的最高二位,即柱面号为10 位,扇区

号6 位。电+脑*维+修-知.识_网(w_ww*dnw_xzs*co_m)

The format of a partition record is as follows:

Offset Size Description

0 8 bit A value of 80 designates an active partition.

1 8 bit Partition start head

2 8 bit Partition start sector (bits 0-5)

3 8 bit Partition start track (bits 8,9 in bits 6,7 of sector)

4 8 bit Operating system indicator

5 8 bit Partition end head

6 8 bit Partition end sector (bits 0-5)

7 8 bit Partition end track (bits 8,9 in bits 6,7 of sector)

8 32 bit Sectors preceding partition

C 32 bit Length of partition in sectors

Operating system indicators: (hexadecimal, incomplete list)

00 Empty partition-table entry

01 DOS FAT12

04 DOS FAT16 (up to 32 MB)

05 DOS 3.3+ extended partition

06 DOS 3.31+ FAT16 (over 32 MB)

07 OS/2 HPFS, Windows NT NTFS, Advanced Unix

08 OS/2 v1.0-1.3, AIX bootable partition, SplitDrive

09 AIX data partition

0A OS/2 Boot Manager

0B Windows 95+ FAT32

0C Windows 95+ FAT32 (using LBA-mode INT 13 extensions)

0E DOS FAT16 (over 32 MB, using INT 13 extensions)

0F Extended partition (using INT 13 extensions)

17 Hidden NTFS partition

1B Hidden Windows 95 FAT32 partition

1C Hidden Windows 95 FAT32 partition (using LBA-mode INT 13 extensions)

1E Hidden LBA VFAT partition

42 Dynamic disk volume

50 OnTrack Disk Manager, read-only partition

51 OnTrack Disk Manager, read/write partition

81 Linux

82 Linux Swap partition, Solaris (Unix)

83 Linux native file system (ext2fs/xiafs)

85 Linux EXT

86 FAT16 volume/stripe set (Windows NT)

87 HPFS fault-tolerant mirrored partition, NTFS volume/stripe set

BE Solaris boot partition

C0 DR-DOS/Novell DOS secured partition

C6 Corrupted FAT16 volume/stripe set (Windows NT)

C7 Corrupted NTFS volume/stripe set

F2 DOS 3.3+ secondary partition

下一节

返回


Copyright © 2006-2008 电脑维修知识网 Corporation, All Rights Reserved

WWW.DNWXZS.COM 联系:电脑维修知识网