计算机启动分析
计算机的启动一般分为四个阶段:
- BIOS
- 主引导记录
- 硬盘启动
- 进入系统
BIOS
BIOS程序为开机自检程序,是固化在ROM芯片中。正如其英文表达意思,Basic Input/Output System(基本输入输出系统)。
硬件自检
当计算机开机后,首先运行BIOS程序,检查计算机的硬件是否满足运行的初始化条件。若硬件出现问题,则主机会通过蜂鸣器发出不同含义的信号,而启动终止命令;若没问题,则会在屏幕上打印CPU、内存、硬盘等信息。
启动顺序
在自检结束之后,BIOS会将控制权给下一阶段启动程序。所以,一般在BIOS中的程序内存小,只负责初始化工作。此外,BIOS需要知道下一阶段启动程序放在哪。故通过设置外部存储设备的启动顺序,来优先转交其控制权。
主引导记录
当控制权转移到优先级第一的存储设备上后,计算机会读取该设备的第一个扇区,即最前面512个字节。
观察512个字节中最后2个字节:0x55和0xAA;
若是,则表示设备可正常启动;否则,控制权会转移到下一个存储设备。
主引导记录结构
主引导记录只有512个字节,它主要是为了告诉计算机,操作系统存在硬盘的哪个位置。其主要由三部分组成:
1-446字节,调用操作系统机器码;
447-510字节,存放分区表(将硬盘分成若干区);
511-512字节,主引导记录签名(0x55和0xAA)。分区表
硬盘分区之后,每个分区可以安装不同的操作系统,故主引导程序必须知道将控制权转交给哪个分区。
分区表只有64字节,其被分成4项,每项16字节。故一个硬盘最多只能由4个一级分区,也叫“主分区”。每个分区由16字节组成:
1字节:若是0x80,则表示该分区为激活的,控制权要转交给此分区。其中,4个主分区只能有1个是激活的;
2-4字节:主分区第一个扇区的物理位置(柱面、磁头、扇区号等);
5字节主分区类型;
6-8字节:主分区最后一个扇区的物理位置;
9-12字节:该主分区第一个扇区的逻辑地址;
13-16字节:主分区的扇区总数,决定了主分区的长度,扇区总数最多不超过2^32。若每个扇区为512字节,则单个分区不超过2TB。由于扇区逻辑地址是32位,则硬盘可以用最大空间不超过2TB。若使用更大硬盘,则需提高扇区字节数或增加扇区总数。
硬盘启动
此时,控制权需移交给硬盘某分区,有三种途径:
卷引导记录
四个分区只有一个处于激活状态,计算机会读取激活分区第一个扇区,即为卷引导记录VBR。其作用是为了告诉计算机,操作系统在分区中的位置,然后就去加载操作系统。扩展分区和逻辑分区
若硬盘越来越大,此时主分区不够,故需规定有且仅有一个分区被定义为扩展分区。其中,扩展分区表示在这个区中又可分多个区。这些分区里的分区,称为逻辑分区。
若使用扩展分区,则计算机会先读取第一个扇区,即扩展引导记录EBR,其里面包含一张64字节分区表,但最多只有2项(2个逻辑分区)。在此之后,计算机又会读取第二个逻辑分区的第一个扇区,再从分区表中找出第三个逻辑分区的位置,以此类推,知道某逻辑分区只包含自身为止,即它只有一个分区项。所以说,扩展分区可以有很多个逻辑分区。启动管理器
若通过此种方式,则计算机会读取主引导记录前446字节机器码后,不再将控制权转交给某分区,而是运行预先安装好的启动管理器。这样,由用户自己选择启动哪个操作系统。
操作系统
当控制权交给操作系统后,操作系统内核会先被载入内存。然后,内存加载成功后,则运行第一个进程。如linux上的init进程,然后再用init进程加载系统的各个模块,如串口程序、网络程序及login程序,跳出登录界面为止,等待用户输入用户名和密码。