Linux PC 开机全过程

1.4 多系统启动规范

Multiboot2 Specification

Multiboot2 Header

header的前4个字节是一个magic number,0xE85250D6。之后的4个字节是处理器架构,0表示32位保护模式下的i386。header_length是整个header的长度,这样Grub2就知道这个header到哪结束。checksum是个很有意思的东西,它和前面的magic、architecture、header_length加起来是0,用于二次校验。之后的tags是Grub2需要传达给kernel的各种参数,内容比较多,请直接看文档吧。
Grub2加载kernel到内存的过程暂时略过,以后补齐。

kernel会检查EAX寄存器的值是否是0x36d76289,这是空降成功的信号。EBX中存放着Grub2给kernel准备的一个物理地址,它指向Multiboo2 information structure。A20地址线一定是开启的。关中断是必须的,此时此刻没人能够响应中断。