一、MBR的概念
主引导扇区位于硬盘的0磁道0柱面1扇区,共512bytes,可存放一小段程序及主分区表,由三大部分组成: 硬盘主引导记录MBR(Master Boot Record)占446bytes 分区表DPT(Disk Partition Table)占64bytes 硬盘有效标志(Magic Number)占2bytes。 硬盘有效标志为AA和55,它们被称为幻数(Magic Number),BOIS读取MBR的时候总是检查最后是不是有这两个幻数,如果没有就被认为是一个没有被分区的硬盘主引导扇区包含的MBR、DPT、MN,这3个区域是操作系统无关的,在每块硬盘上都存在;MBR是一段可执行程序,由各个操作系统写入不同的代码。 MBR的存储空间限制为446字节,MBR所做的唯一的事情就是装载第二引导装载程序。Windows产生的MBR装载运行PBR;GRUB产生的MBR 装载运行grldr
|
![]() |
二、GRUB概念
详情https://blog.csdn.net/woshaguayi/article/details/89602725
三、启动流程:
计算机在接通电源之后首先由BIOS进行自检,即进行所谓的POST(Power On Self Test),然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入“引导块”。 在 PC 中,引导 Linux 是从BIOS 中的地址 0xFFFF0 处开始的。BIOS 的第一个步骤是加电自检(POST)。POST 的工作是对硬件进行检测。BIOS 的第二个步骤是进行本地设备的枚举和初始化。给定 BIOS 功能的不同用法之后,BIOS 由两部分组成:POST代码和运行时服务。当 POST 完成之后,它被从内存中清理了出来,但是 BIOS 运行时服务依然保留在内存中,目标操作系统可以使用这些服务。
要引导一个操作系统,BIOS 运行时会按照 CMOS 的设置定义的顺序来搜索处于活动状态并且可以引导的设备。
引导设备可以是软盘、CD-ROM、硬盘上的某个分区、网络上的某个设备,甚至是 USB 闪存。通常,Linux 都是从硬
盘上引导的,其中主引导记录(MBR)中包含主引导加载程序。MBR 是一个 512 字节大小的扇区,位于磁盘上的第
一个扇区中(0 道 0 柱面 1 扇区)。当 MBR 被加载到 RAM 中之后,BIOS 就会将控制权交给 MBR
BIOS找到第一启动项后,会读取第一启动项的MBR内的Bootloader(即grub的stage1),stage1被载入内存,此时BIOS将控制权交给grub。紧接着Stage1会直接载入stage2,或通过stage1.5间接载入stage2。Stage2是grub的核心,其功能就是加载kernel和initrd。
1. |
主板加载 BIOS 的硬件信息并进行自我测试,并依据BIOS配置取得第一个可启动的装置; |
![]() |
2. |
读取并运行第一个启动装置内 MBR 的 boot Loader (即是 grub, spfdisk 等程序); |
|
3. |
依据 boot loader 的配置加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序; |
|
4. |
在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 资讯; |
|
5. | init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行的作业环境 (如网络、时区等); | |
6. |
init 运行 run-level 的各个服务之启动 (script 方式); |
|