linux内核移植读书笔记<1>
2011-01-06 12:01
最近在看《嵌入式linux应用开发完全手册》,前一阵在看关于Uboot的启动流程分析,可忘记把读书笔记给记录下来,现在在读移植linux内核,我想应该记录一些东西,以加深理解
16.1 linux版本及特点
2.6.36.2 :主板本是2.6,次版本36,修订版本2
16.2.2 内核源码结构及Makefile分析
一,arch:体系结构相关的代码,对于每个架构的cpu,arch目录下有一个对应的子目录,arch/arm,arch/i386
block:块设备相关的通用函数
crypo:加密和散列算法
drivers:所有设备的驱动程序,里面的每一个子目录对应一类驱动程序
fs:linux内核所支持的文件系统
include:内核头文件,有基本的头文件(include/linux/下),各种驱动或功能部件的头文件,各种体系相关的头文件,
init:内核的初始化代码,main。c是内核引导后的第一各函数
ipc:进程间通信的代码
kernel:内核管理的核心代码,与处理器相关的核心代码在arch/arm/kernel/下
lib:内核用到的一些库函数代码,与处理器相关的库函数代码在arch/arm/lib/下
mm:内存管理代码,与处理器相关的内存管理代码在arch/arm/mm/下
net:网络支持代码,每个子目录代表网络的一个方面
security:安全,密钥相关的代码
sound:音频设备的驱动程序
usr:用来制作一个压缩的cpio归档文件:initrd的镜像,它可以作为内核启动后链接的第一各文件系统,一般用不到
Documentation:内核文档
scripts:用于配置,编译内核的脚本文件
二:Linux Makefile分析
内核中的文件有2万多个,仅与s3c2410,s3c2440相关的文件就有1万多个,这么多的文件,在内核编译时哪些文件将被编译,他们是怎么被编译的,他们的连接顺序如何,哪个文件在前面,哪个文件在后面?这些都是有Makefile文件来管理的,简单来说,makefile文件主要完成一下3个方面的工作
a,决定编译哪些文件
b,怎样编译这些文件
c,怎样连接这些文件,以及他们的连接顺序
在linux内核目录下有很多Makefile文件,这些Makefile文件又要包含其他的一些配置信息文件和通用规则文件等,这些文件一起构成了linux的makefile体系,这个体系中的文件可以分为如下5类a,顶层的makefile文件,它是所有makefile文件的核心,从总体上控制着内核的编译,连接
b,.config文件,在配置内核时生成,所有makefile文件都是根据.config文件来决定使用哪些文件c,arch/arm/makefile,对应arm体系结构的makefile,用来决定与arm体系结构相关的哪些文件参与内核的生成
d,scripts/makefile.*,makefile共用的通用规则,脚本等
e,Kbuild Makefiles ,各级子目录下的Makefile,被上一层makefile调用来编译当前目录下的文件
(1)决定编译哪些文件
a,顶层makefile决定内核根目录下哪些子目录将背编译进内核