一、获取源代码
1、使用git获取
git clone git:://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
git pull
2、安装内核源代码
3、使用补丁
1)、在Linux内核社区中,补丁是通用语。可以以补丁的形式发布对代码的修改,也可以以补丁的形式接受其他人所做的修改。
2)、要应用增量补丁,从你的内核源代码树开始,只需要运行:
patch -pl < . . ./patch-x.y.z
二、内核源码树(P11-12 表2-1)
三、编译内核
1、配置内核
1)、内核可以配置各种选项;以CONFIG_FEATURE形式表示,其前缀为CONFIG。配置既可以用来决定那些文件编译进内核,也可以通过预处理命令处理代码。
2)、配置选项要么二选一,要么三选一。二选一就是yes或no。三选一可以是yes、no或module。module意味着该配置项被选定了,但编译的时候这部分功能的实现代码是
以模块的形式生成的。在三选一的情况下,yes选项表示把代码编译进主内核映像中,而不是作为一个模块。
3)、内核配置工具
I、字符界面:make config
II、基于ncuese库编制的图形界面:make menuconfig
III、基于gtk+的图形工具:make gconfig
IV、默认配置:make defconfig
V、验证和更新配置:make oldconfig
4)编译(make)
2、减少编译的垃圾信息
1)、make > . . ./detritus:尽量少看到垃圾信息,却又不希望错过错误报告与警告信息。
2)、make > /dev/null:吧无用的输出信息重定向到永无返回值的黑洞/dev/null。
3、衍生多个编译作业
1)、make程序能把编译过程拆分成多个并行的作业。
2)、为了以多个作业编译内核,使用命令:make -jn,其中n是要衍生的作业树。
4、安装新内核
1)、模块的安装是自动的,也是独立于体系结构的。以root身份,只需运行:make modules_install。
四、内核开发的特点
I、内核编程时既不能访问C库也不能访问标准的C头文件。
II、内核编程时必须使用GUN C。
III、内核编程时缺乏像用户空间那样的内存保护机制。
IV、内核编程时难以执行浮点运算。
V、内核给每个进程只有一个很小的定长栈堆。
VI、由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发。
VII、要考虑可移植的重要性。