中国科学技术大学计算机系 陈香兰(0551-3606864) xlanchen@ustc.edu.cn Spring 2009 Linux内核源代码导读 中国科学技术大学计算机系 陈香兰(0551-3606864) xlanchen@ustc.edu.cn Spring 2009
基于I386的Linux启动代码分析 源码:Linux 2.6.26 了解linux的源码组织 了解linux的内核代码结构 看目录结构 了解linux的内核代码结构 看Makefile 了解基于x86的linux的boot image的结构
考虑Arch为x86,了解源码组织 观察Linux源码的根目录 观察arch目录 观察arch下的x86目录
阅读Makefile 找到缺省目标all 找到vmlinux目标,并阅读
主要目标的编译 vmlinux 不妨以core-y为例,观察体系相关和体系无关部分的代码是如何被包含进来的
注意: vmlinux-init vmlinux-main vmlinux-dirs
x86的启动文件 根据vmlinux-init找到head-y, init-y ??关于BITS的定义
链接情况 链接描述文件? 链接顺序: vmlinux-init vmlinux-main
考虑boot Image Make bzImage … 在arch/x86/Makefile中 到boot目录下的Makefile z代表压缩;b代表大内核 压缩 还是 非压缩
以bzImage为例 以bzImage为例搜索boot/Makefile
小结 1)生成根目录下的vmlinux,包括体系结构相关部分和体系结构无关部分 2)压缩,并加上解压缩头 headXX.S misc.c + 压缩后的vmlinux 3)加上启动头 setup.bin
预习 基于x86的Linux的启动,主要涉及如下内容 Header.S Compressed目录下的head_32.S Kernel目录下的head_32.S, head32.c Init目录下main.c
Thanks! The end.