一、获取内核源码
登录linux内核官方网站http://www.kernel.org,可以随时获取当前版本的Linux源代码,可以是完整的压缩形式(使用tar命令创建的一个压缩文件),也可以是增量补丁形式。除特殊情况下需要Linux源码的旧版本外,一般都希望拥有最新的代码。kernel.org是源码的库存处,那些领导潮流的内核开发者所发布的增量补丁也放在这里。
二、安装内核源代码内核源码一般安装在/usr/src/linux目录下。但请注意,不要把这个源码树用于开发,因为编译你的C库所用的内核版本就链接到这棵树。此外,不要以root身份对内核进行修改,而应当是建立自己的主目录,仅以root身份安装新内核。即使在安装新内核时,/usr/src/linux目录都应当原封不动。
三、内核源码树
四、编译源码
内核提供了各种不同的工具来简化内核配置。
字符界面下的命令行工具:$ make config
基于ncurse库编制的图形界面工具:$ make menuconfig
基于gtk+的图形工具: $ make gconfig
内核配置完成后,就可以使用一个简单的命令来编译它了: $ make
减少编译的垃圾信息
$ make > /dev/null
衍生多个编译作业
$ make -jn
make程序能把编译过程拆分成多个并行的作业。其中的每个作业独立并发地运行,这有助于极大地加快多处理器系统上的编译过程,也有利于改善处理器的利用率,因为编译大型源代码树也包括I/O等待所花费的时间。
五、安装新内核
在内核编译好后,还需要安装它。怎么安装和体系结构以及启动引导工具(boot loader)息息相关了——查阅启动引导工具的说明,按照它的指导将内核映像拷贝到合适的位置,并且按照启动要求安装它。一定要保证随时有一个或两个可以启动的内核,以防新编译的内核出现问题。例如,在使用grub的x86系统上,可能需要把编译的内核文件拷贝到/boot目录下,像vmlinuz-version这样命名它,并且编辑/etc/grub/grub.conf文件,为新内核建立一个新的启动项。安装模块$ make modules_install把所有已编译的模块安装到正确的主目录/lib/modules下。
六、内核开发的特点
相对于用户空间内应用程序的开发,内核开发有一些独特之处。最重要的差异包括以下几种:1. 内核编程时既不能访问C库也不能访问标准的C头文件。2. 内核编程时必须使用GNU C。3. 内核编程时缺乏像用户空间那样的内存保护机制。4. 内核编程时难以执行浮点运算。5. 内核给每个进程只有一个很小的定长堆栈。6. 由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发。7. 要考虑可移植性的重要性。
新闻热点
疑难解答