本文主要分析 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)。具体代码如下:  
 
		 图片来源:《Linux 内核完全注释》
图片来源:《Linux 内核完全注释》 图片来源:《Linux 内核完全注释》
图片来源:《Linux 内核完全注释》   图片来源:《深入理解计算机系统》
图片来源:《深入理解计算机系统》