本文主要分析 Linux 0.11 内核引导程序setup.s
关键部分。《Linux 内核完全注释》和《Linux 内核设计的艺术》两书将作为主要参考资料。
setup 模块已由 bootsect 模块加载至 0x90200 处,并且指令指针已指向该位置(boot/bootsect.s -> jmpi 0,SETUPSEG)。需要注意的是,setup 模块目前仍工作在实模式。
加载机器系统数据
setup 模块首先是将机器系统数据加载到内存 0x90000~0x901FD
区域(510B)即原 bootsect 模块所在地方(0x90000~0x901FF,共 512B)。这样就覆盖了原 bootsect 模块,并且只有 2 个字节没有使用到(512B - 510B)。具体代码如下: