Boot Sector结构、系统启动过程简介 解决困扰已久的系统启动过程,可以帮助使多系统共存,而不影响各自启动! Boot Sector 结构、系统启动过程简介 一. Boot Sector 的组成 Boot Sector 也就是硬盘的第一个扇区 (注 1 : 0 柱面, 0 磁道, 1 扇区) (注 2
Boot Sector结构、系统启动过程简介
解决困扰已久的系统启动过程,可以帮助使多系统共存,而不影响各自启动!Boot Sector结构、系统启动过程简介
一.Boot Sector的组成
Boot Sector也就是硬盘的第一个扇区(注1:0柱面,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.将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)
读入内存地址0000:
4.检查(WORD) 0000:7dfe是否等于0xaa55,若不等于
则转去尝试其他启动介质,如果没有其他启动介质则显示
"No ROM BASIC"然后死机.
5.跳转到0000:
6. MBR首先将自己复制到0000:0600处,然后继续执行.
7.在主分区表中搜索标志为活动的分区.如果发现没有活动
分区或有不止一个活动分区,则转停止.
8.将活动分区的第一个扇区读入内存地址0000:
(注4:在分区表的四个记录中,一般来说有且只有一个记录的标记是活动的,MBR(主要负责从活动分区中装载并运行系统引导程序)会去找到这个分区记录,根据记录的起始扇区加载该分区的逻辑0扇区(起始扇区)的内容到0x
Boot SectorUnix系统
,电脑资料
《Boot SectorUnix系统》(https://www.unjs.com)。控制权切换到BOOT RECORD。BOOT RECORD(包括boot loader如grub或lilo等)以linux为例,它会读取linux内核镜像到地址0x9000:0000,然后开始切换到0x9000:0000继续运行。以MS-DOS为例,则它会读取文件系统根目录下的IO.SYS和MSDOS.SYS两个文件然后加载到内存中继续运行。)9.检查(WORD) 0000:7dfe是否等于0xaa55,若不等于则
显示"Missing Operating System"然后停止,或尝试
软盘启动.
10.跳转到0000:
11.启动系统...
以上步骤中2,3,4,5步是由BIOS的引导程序完成. 6,7,8,9,10
步由MBR中的引导程序完成.
一般多系统引导程序(如SmartFDISK, BootStar, PQBoot等)
都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序
之前让用户选择要启动的分区.
而某些系统自带的多系统引导程序(如lilo, NT Loader等)
则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux
中即为SuperBlock (其实SuperBlock是两个扇区).
注:以上各步骤中使用的是标准MBR,其他多系统引导程序的引导过程与此不同.
注5:一些早期的引导型病毒,以及某些bootloader,还有些硬盘加密卡,他们会修改MBR,做个“钩子”出来。原文转自:http://www.ltesting.net