2. 设备树启动

内核在 code32_start 处有一个单一的 32 位入口点,即解压缩程序(实模式入口点在切换到保护模式后也会跳转到同一个 32 位入口点)。该入口点支持一种调用约定,记录在 Linux/x86 启动协议 中。设备树块的物理指针通过 setup_data 传递,这至少需要 2.09 版本的启动协议。type 字段定义如下

#define SETUP_DTB 2

此设备树用作“启动页”(boot page)的扩展。因此,它不会解析或考虑那些已被启动页涵盖的数据。这包括内存大小、保留范围、命令行参数或 initrd 地址。它仅保存那些无法通过其他方式获取的信息,例如中断路由或 I2C 总线后的设备列表。