系统引导过程简介

来源:互联网 发布:网页缺少对象js 编辑:程序博客网 时间:2024/05/12 03:50

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 正文 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 一、系统引导过程简介系统引导过程主要由以下几个步骤组成(以硬盘启动为例) 1、 开机; 2、 BIOS加电自检(POST---Power On Self Test),内存地址为0fff:0000; 3、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处; 4、 检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介质,则显示 ”No ROM BASIC” ,然后死机; 5、 跳转到0000:7c00处执行MBR中的程序; 6、 MBR先将自己复制到0000:0600处,然后继续执行; 7、 在主分区表中搜索标志为活动的分区.如果发现没有活动分区或者不止一个活动分区,则停止; 8、 将活动分区的第一个扇区读入内存地址0000:7c00处; 9、 检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示 “Missing Operating System”,然后停止,或尝试软盘启动; 10、 跳转到0000:7c00处继续执行特定系统的启动程序; 11、 启动系统. 以上步骤中(2),(3),(4),(5)步由BIOS的引导程序完成;(6),(7),(8),(9),(10)步由MBR中的引导程序完成. 一般多系统引导程序(如Smart Boot Manager, BootStar, PQBoot等)都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序之前让用户选择想要启动的分区.而某些系统自带的多系统引导程序(如 LILO,NT Loader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux中即为两个扇区的SuperBlock. 注:以上步骤中使用的是标准的MBR,多系统引导程序的引导过程与此不同. 二、硬盘结构及参数 3D参数(Disk Geometry):CHS(Cylinder/Head/Sector) C-Cylinder柱面数表示硬盘每面盘片上有几条磁道,最大为1024(用10个二进制位存储);H-Head磁头数表示硬盘总共有几个磁头,也就是几面盘片,最大为256(用8个二进制位存储);S-Sector扇区数表示每条磁道上有几个扇区,最大为63(用6个二进制位存储). 1、引导扇区 Boot Sector组成 Boot Sector也就是硬盘的第一个扇区,它由MBR(Master Boot Record), DPT(Disk Partition Table) 和 Boot Record ID三部分组成. MBR又称为主引导记录,占用Boot Sector的前446个字节(0~0x1BD),存放系统主引导程序(它负责从活动分区中装载并且运行系统引导程序). DPT即主分区表占用64个字节(0x1BE~0x1FD),记录磁盘的基本分区信息.主分区表分为四个分区项,每项16个字节,分别记录每个主分区的信息(因此最多可以有四个主分区). Boot Record ID即引导区标记占用两个字节(0x1FE~0x1FF),对于合法引导区,它等于0xaa55,这是判别引导区是否合法的标志). Boot Secor具体结构如图: 2、分区表结构简介分区表由四个分区项构成,每一项结构如下: BYTE State:分区状态,0=未激活,0x80=激活(注意此项); BYTE StartHead:分区起始磁头号; WORD StartSC:分区起始扇区和柱面号,底字节的底6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位; BYTE Type:分区类型,如0x0B=FAT32,0x83=Linux等,00表示此项未用; BYTE EndHead:分区结束磁头号; WORD EndSC:分区结束扇区和柱面号,定义同前; DWORD Relative:在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址); DWORD Sectors:分区大小(总扇区数). 在DOS或Windows系统下,基本分区必须以柱面为单位划分(Sectors*Heads个扇区),如对于CHS为764/256/63的硬盘,分区的最小尺寸为256*63*512/1048576=7.875MB. 由于硬盘的第一个扇区已经被引导扇区占用,所以一般来说,硬盘的第一个磁道(0头0道)的其余62个扇区是不会被分区占用的.某些分区软件甚至将第一个柱面全部空出来. 扩展分区结构如图: 附录:《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》《实例解说 fdisk 使用方法》《在Fedora core 4.0 加载NTFS和FAT32分区详述》《合理规划您的硬盘分区》《系统引导过程及硬盘分区结构论述》《Fedora Core 4.0 HAL配置即插即用移动存储(USB及1394)的实践》

 

 

 

系统引导过程及硬盘分区结构论述


摘要: 本文是理论性文档,主要讲述系统引导过程以及硬盘的物理结构;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一、系统引导过程简介
系统引导过程主要由以下几个步骤组成(以硬盘启动为例)
1、 开机;
2、 BIOS加电自检(POST---Power On Self Test),内存地址为0fff:0000;
3、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处;
4、 检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介质,则显示 ”No ROM BASIC” ,然后死机;
5、 跳转到0000:7c00处执行MBR中的程序;
6、 MBR先将自己复制到0000:0600处,然后继续执行;
7、 在主分区表中搜索标志为活动的分区.如果发现没有活动分区或者不止一个活动分区,则停止;
8、 将活动分区的第一个扇区读入内存地址0000:7c00处;
9、 检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示 “Missing Operating System”,然后停止,或尝试软盘启动;
10、 跳转到0000:7c00处继续执行特定系统的启动程序;
11、 启动系统. 以上步骤中(2),(3),(4),(5)步由BIOS的引导程序完成;(6),(7),(8),(9),(10)步由MBR中的引导程序完成.
一般多系统引导程序(如Smart Boot Manager, BootStar, PQBoot等)都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序之前让用户选择想要启动的分区.而某些系统自带的多系统引导程序(如 LILO,NT Loader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux中即为两个扇区的SuperBlock. 注:以上步骤中使用的是标准的MBR,多系统引导程序的引导过程与此不同.
二、硬盘结构及参数
3D参数(Disk Geometry):CHS(Cylinder/Head/Sector) C-Cylinder柱面数表示硬盘每面盘片上有几条磁道,最大为1024(用10个二进制位存储);H-Head磁头数表示硬盘总共有几个磁头,也就是几面盘片,最大为256(用8个二进制位存储);S-Sector扇区数表示每条磁道上有几个扇区,最大为63(用6个二进制位存储).

1、引导扇区

Boot Sector组成
Boot Sector也就是硬盘的第一个扇区,它由MBR(Master Boot Record), DPT(Disk Partition Table) 和 Boot Record ID三部分组成. MBR又称为主引导记录,占用Boot Sector的前446个字节(0~0x1BD),存放系统主引导程序(它负责从活动分区中装载并且运行系统引导程序). DPT即主分区表占用64个字节(0x1BE~0x1FD),记录磁盘的基本分区信息.主分区表分为四个分区项,每项16个字节,分别记录每个主分区的信息(因此最多可以有四个主分区). Boot Record ID即引导区标记占用两个字节(0x1FE~0x1FF),对于合法引导区,它等于0xaa55,这是判别引导区是否合法的标志). Boot Secor具体结构如图:

2、分区表结构简介
分区表由四个分区项构成,每一项结构如下:
BYTE State:分区状态,0=未激活,0x80=激活(注意此项);
BYTE StartHead:分区起始磁头号;
WORD StartSC:分区起始扇区和柱面号,底字节的底6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位;
BYTE Type:分区类型,如0x0B=FAT32,0x83=Linux等,00表示此项未用;
BYTE EndHead:分区结束磁头号;
WORD EndSC:分区结束扇区和柱面号,定义同前;
DWORD Relative:在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址);
DWORD Sectors:分区大小(总扇区数).
在DOS或Windows系统下,基本分区必须以柱面为单位划分(Sectors*Heads个扇区),如对于CHS为764/256/63的硬盘,分区的最小尺寸为256*63*512/1048576=7.875MB.
由于硬盘的第一个扇区已经被引导扇区占用,所以一般来说,硬盘的第一个磁道(0头0道)的其余62个扇区是不会被分区占用的.某些分区软件甚至将第一个柱面全部空出来. 扩展分区结构如图:
附录:
《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》
《实例解说 fdisk 使用方法》
《在Fedora core 4.0 加载NTFS和FAT32分区详述》
《合理规划您的硬盘分区》
《系统引导过程及硬盘分区结构论述》
《Fedora Core 4.0 HAL配置即插即用移动存储(USB及1394)的实践》

硬件不同了

3D参数(Disk Geometry):CHS(Cylinder/Head/Sector) C-Cylinder柱面数表示硬盘每面盘片上有几条磁道,最大为1024(用10个二进制位存储);H-Head磁头数表示硬盘总共有几个磁头,也就是几面盘片,最大为256(用8个二进制位存储);S-Sector扇区数表示每条磁道上有几个扇区,最大为63(用6个二进制位存储).

应该注明以上是以前的磁盘结构。比如我的硬盘就只有两个盘面,单盘,但是有257heads, 磁道:7297 cylinders。扇区为63。

 

 

另一篇文章::::

 

硬盘分区表详解

蓝森林 http://www.lslnet.com 2000年12月13日 16:26

 


硬盘主引导扇区 = 硬盘主引导记录(MBR)+ 硬盘分区表(DPT)
--------------------------------------------------------------
物理位置:0面0道1扇区(clindyer 0, side 0, sector 1)
大小: 512字节
其中:MBR 446字节(0000--01BD),DPT 64字节(01BE--01FD),结束标志2字节(55 AA)
功能:MBR通过检查DPT分区信息引导系统跳转至DBR;
读取: 使用NORTON DISKEDIT, 在OBJECT菜单中选择DRIVE——>PHYSICAL DISK-—HARD DISK,
然后, 在OBJECT菜单中选择DISK PARTITION TABLE即可读取, 并使用TOOLS菜单中的WRITE OBJECT TO 选项存入指定文件备份;
写入: 使用NORTON DISKEDIT, 在OBJECT菜单中选择DRIVE——>FLOOPY DISK, 选择备份的DPT
文件, 然后使用TOOLS菜单中的WRITE OBJECT TO——>PHYSICAL SECTOR 选项写入001
(clindyer 0, side 0, sector 1);

详解:
000H--08AH MBR启动程序(寻找开机分区)
08BH--0D9H MBR启动字符串
0DAH--1BCH 保留("0")
1BEH--1FDH 硬盘分区表
1FEH--1FFH 结束标志(55AA)


活动分区主引导扇区(DBR)
--------------------------
物理位置:1面0道1扇区(clindyer 0, side 1, sector 1)
大小: FAT16 1扇区 512字节
FAT32 3扇区 1536字节
功能:包含机器CMOS等信息(0000--0059), 核对该信息并引导指定的系统文件, 如NTLDR等;
读取: 使用NORTON DISKEDIT, 在OBJECT菜单中选择DRIVE——>LOGICAL DISK-—DISK C,
然后, 在OBJECT菜单中选择BOOT RECORD即可读取, 并使用TOOLS菜单中的
WRITE OBJECT TO 选项存入指定文件备份;
写入: 使用NORTON DISKEDIT, 在OBJECT菜单中选择DRIVE——>FLOOPY DISK, 选择备份的DBR
文件, 然后使用TOOLS菜单中的WRITE OBJECT TO——>PHYSICAL SECTOR 选项写入011
(clindyer 0, side 1, sector 1);


详解:

000H--002H 3 BYTE的跳转指令(去启动程序, 跳到03EH)
003H--03DH BIOS参数区
03EH--19DH DOS启动程序
19EH--1E5H 开机字符串
1E6H--1FDH 文件名(IO.SYS, MSDOS.SYS)
1FEH--1FFH 结束标记(55AA)


硬盘分区表(DPT)
---------------------
偏移地址 字节数 含义分析

01BE 1 分区类型:00表示非活动分区:80表示活动分区;其他为无效分区。

01BF~01C1 3 *分区的起始地址(面/扇区/磁道),通常第一分区的起始地址开始
于1面0道1扇区,因此这三个字节应为010100

01C2 1 #分区的操作系统的类型。

01C3~01C5 3 *该分区的结束地址(面/扇/道)

01C6~01C9 4 该分区起始逻辑扇区

01CA~01CD 4 该分区占用的总扇区数

注释: * 注意分区的起始地址(面/扇区/磁道)和结束地址(面/扇/道)中字节分配:

00000000 01000001 00010101
~~~~~~~~ ==^^^^^^ ========

~ 面(磁头) 8 位
^ 扇区 6 位
= 磁道 10 位

# 分区的操作系统类型(文件格式标志码)

4---DOS FAT16<32M
5---EXTEND
6---DOS FAT16>32M
7---NTFS(OS/2)
83---LINUX>64M


DPT 总共64字节(01BE--01FD), 如上所示每个分区占16个字节, 所以可以表示四个分区, 这也
就是为什么一个磁盘的主分区和扩展分区之和总共只能有四个的原因.


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


所以, 在磁盘仅含有一个主分区, 一个扩展分区(包含多个逻辑驱动器)的情况下, 即使由于病毒
或其他原因导致硬盘主引导扇区的数据丢失(包括DPT), 也可以通过逻辑驱动器的数据来恢复整个硬盘.

例如: 以下是一个硬盘的分区情况.

道 面 扇 道 面 扇 起始扇(逻辑) 结束扇 总共扇区
MBR 0 0 1 - - - - - -
C 0 1 1 276 239 63 63 4,188,239 4,188,177
扩 277 0 1 554 239 63 4,188,240 8,391,599 4,203,360
D 277 1 1 554 239 63 4,188,303 8,391,599 4,203,297


如果主分区表损坏, 则可以通过手工查找扩展分区表中所包含的逻辑驱动器数据, 在本例中就是D盘所对应的数据, 然后将其起始扇(逻辑)减去63就是所对应的扩展分区的起始扇(逻辑), 将其起始地址(面/扇区/磁道)改为0面就是扩展分区的起始地址. 然后通过扩展分区就可以得到主分区C的信息, 然后就可以使用FDISK/MBR命令和手工填写分区表恢复整个硬盘.

实际使用这种方法比较麻烦, 如果知道每个分区的大小, 则可以通过使用PQ MAGIC 5 将磁盘重新分区为原来大小(注意: 千万不能应用, 我们只是通过它来获得数据), 并查看INFO来获得以上
数据, 记录以后取消该分区操作, 然后使用NORTON DISK2000手工修改DPT表, 恢复整个硬盘.

该例所对应的分区表数据:

80 01
01 00 06 EF 7F 14 3F 00 00 00 11 E8 3F 00 00 00
41 15 05 EF BF 2A 50 E8 3F 00 60 23 40 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA

扩展分区表数据:
00 01
41 15 07 EF BF 2A 8F E8 3F 00 21 23 40 00


注意: 逻辑起始扇区和总共分区数是左边为低位, 如该例的扩展分区的起始地址为50 E8 3F 00转换十进制时要先变为00 3F E8 50, 总共占用分区数60 23 40 00要先变为00 40 23 60, 同理当手工填写该值时也要进行高低位转换.

 

原创粉丝点击