操作系统的启动过程

GRUB加载内核的具体步骤如下:

  1. 启动和初始化:
    • 计算机启动时,BIOS会加载MBR(主引导记录)到内存中,MBR包含GRUB的启动代码。
    • GRUB启动代码会加载并执行GRUB的启动脚本,通常位于硬盘的第二个扇区。
  2. 配置GRUB:
    • 启动脚本会加载GRUB配置文件,该文件定义了启动选项,如内核文件的位置、启动参数等。
    • GRUB会根据配置文件读取内核映像和参数。
  3. 加载内核:
    • GRUB读取内核映像,内核映像通常是一个ELF格式的文件。
    • GRUB将内核映像加载到内存中,并将其ELF头解析为multiboot_t结构体。
  4. 设置环境:
    • GRUB将multiboot_t结构体的指针(地址)存储在ebx寄存器中。
    • GRUB设置内核的启动环境,包括页表、中断向量表等。
  5. 启动内核:
    • GRUB将控制权传递给内核,内核从multiboot_t结构体中读取启动参数,并进行初始化。
    • 内核开始执行,启动操作系统。

GRUB的加载过程是多启动规范的一部分,它允许GRUB加载和启动多种不同的操作系统,而无需知道每个操作系统的具体细节。多启动规范定义了内核映像和参数的格式,GRUB根据这些规范加载内核并启动操作系统。

从目前的认识来看,计算机会寻找第一个扇区以“55 AA”结尾的外存,也就是MBR所在的地方。

MBR(Master Boot Record,主引导记录)是位于硬盘上的一个特殊的扇区,通常位于硬盘的第一个扇区。MBR的作用是在计算机启动时被加载到内存中,并执行其中的启动代码,从而引导计算机启动过程。
MBR包含以下关键信息:

当计算机启动时,BIOS(基本输入输出系统)会读取硬盘的第一个扇区(MBR),并执行其中的引导加载程序。引导加载程序会读取分区表,找到包含操作系统的分区,并从该分区加载内核映像,从而启动操作系统。
需要注意的是,MBR的引导加载程序通常不会直接加载内核映像,而是加载GRUB等引导加载程序,然后由GRUB负责加载内核映像。因此,MBR中的引导加载程序是启动过程的一部分,而不是直接启动操作系统的程序。

MBR会启动GRUB(通常位于第二个扇区),GRUB启动之后会读取配置,然后加载os内核,os内核是个elf格式,GRUB会读取elf头,并将elf信息放在multiboot_t结构体中,然后把multiboot_t结构体的地址放在ebx中。最后再把控制权转交给操作系统。

评论