Boot Sector结构、系统启动过程简介

Boot Sector结构、系统启动过程简介

解决困扰已久的系统启动过程,可以帮助使多系统共存,而不影响各自启动


一.
Boot Sector的组成

  Boot Sector
也就是硬盘的第一个扇区(注10柱面,0磁道,1扇区)(注2 1磁道=16扇区,1扇区=512字节), 它由MBR (Master Boot Record), DPT (Disk Partition Table)Boot Record ID三部分组成.
  MBR
又称作主引导记录占用 Boot Sector 的前 446 个字节 ( 0 to 0x1BD ),
存放系统主引导程序 (它负责检查硬盘分区表、寻找可引导分区并负责将可引导分区的引导扇区(DBR)装入内存).
  DPT
即主分区表占用 64 个字节 (0x1BE to 0x1FD), 记录了磁盘的基本分区
信息. 主分区表分为四个分区项, 每项 16 字节, 分别记录了每个主分区的信息
(
因此最多可以有四个主分区).
  Boot Record ID
即引导区标记占用两个字节 (0x1FE and 0x1FF), 对于合法
引导区, 它等于 0xAA55, 这是判别引导区是否合法的标志.
  Boot Sector
的具体结构如下图所示:
    0000  |------------------------------------------------|
          |                                                |
          |                                                |
          |             Master Boot Record                 |
          |                                                |
          |                                                |
          |            
主引导记录(446字节)                |
          |                                                |
          |                                                |
          |                                                |
    01BD  |                                                |
    01BE  |------------------------------------------------|
          |                                                |
    01CD  |            
分区信息  1(16字节)                |
    01CE  |------------------------------------------------|
          |                                                |
    01DD  |            
分区信息  2(16字节)                |
    01DE  |------------------------------------------------|
          |                                                |
    01ED  |            
分区信息  3(16字节)                |
    01EE  |------------------------------------------------|
          |                                                |
    01FD  |            
分区信息  4(16字节)                |
          |------------------------------------------------|
          | 01FE                | 01FF                     |
          |         55          |           AA             |
          |------------------------------------------------|

. 系统启动过程简介

系统启动过程主要由一下几步组成(以硬盘启动为例):

  1.
开机
  2. BIOS
加电自检 ( Power On Self Test -- POST )
内存地址为 0ffff:0000
  3.
将硬盘第一个扇区 (001扇区, 也就是Boot Sector)
读入内存地址 0000:7c00 .(注3:遇到最后两个字节55 AA读入内存执行
  4.
检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于
则转去尝试其他启动介质, 如果没有其他启动介质则显示
     "No ROM BASIC"
然后死机.
  5.
跳转到 0000:7c00 处执行 MBR 中的程序.
  6. MBR
首先将自己复制到 0000:0600 , 然后继续执行.
  7.
在主分区表中搜索标志为活动的分区. 如果发现没有活动
分区或有不止一个活动分区, 则转停止.
  8.
将活动分区的第一个扇区读入内存地址 0000:7c00 .

(注4在分区表的四个记录中,一般来说有且只有一个记录的标记是活动的,MBR主要负责从活动分区中装载并运行系统引导程序)会去找到这个分区记录,根据记录的起始扇区加载该分区的逻辑 0 扇区(起始扇区)的内容到 0x07C0:0000,并且执行 JUMP 0x07C0:0000(按照规范,BOOT RECORD也应该从 0x07C0:0000 处开始执行,所以 MBR 通常都要先将自己搬移,以腾出位置去加载BOOT RECORD)。控制权切换到BOOT RECORDBOOT RECORD(包括boot loadergrub或lilo ) linux 为例,它会读取 linux 内核镜像到地址 0xArray000:0000,然后开始切换到 0xArray000:0000 继续运行。 MS-DOS 为例,则它会读取文件系统根目录下的 IO.SYS MSDOS.SYS 两个文件然后加载到内存中继续运行。
  Array. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则
显示 "Missing Operating System" 然后停止, 或尝试
软盘启动.
  10.
跳转到 0000:7c00 处继续执行特定系统的启动程序.
  11.
启动系统 ...

以上步骤中 2,3,4,5 步是由 BIOS 的引导程序完成. 6,7,8,Array,10
步由MBR中的引导程序完成.

一般多系统引导程序 ( SmartFDISK, BootStar, PQBoot )
都是将标准主引导记录替换成自己的引导程序, 在运行系统启动程序
之前让用户选择要启动的分区.
而某些系统自带的多系统引导程序 ( lilo, NT Loader )
则可以将自己的引导程序放在系统所处分区的第一个扇区中, Linux
中即为 SuperBlock (其实 SuperBlock 是两个扇区).
: 以上各步骤中使用的是标准 MBR, 其他多系统引导程序的引导过程与此不同.

5:一些早期的引导型病毒,以及某些 bootloader,还有些硬盘加密卡,他们会修改 MBR,做个钩子出来。


原文转载自:华夏名网

“华夏名网” http://www.sudu.cn 和 http://www.bigwww.com 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构webhosting.info评价为十大IDC服务商之一。

你可能感兴趣的:(linux,Boot,MBR,sector,系统启动,DPT)