编译Linux内核2.6.36
一直以来,都是从事Linux用户空间的程序开发,对于Linux的了解仅限于基本Linux内核的经典书籍的阅读。由于目前从事的工作主要是TCP/IP 4层以上的处理,所以对内核的接触也不多。但近日空闲时间较多了,于是决定要好好研究研究Linux内核,主要集中在Linux内核的TCP/IP协议栈。
那么从今天开始,一方面是为了鞭策自己,另一方面也是给自己的学习过程做些记录,我要坚持把学习过程遇到的问题以及自己的收获记录下来。
那么,开始吧。
第一步,自然是编译内核。我选择的是当前最新的稳定版本Linux 2.6.36。我只有在很久之前,大概刚刚毕业的时候编译过内核,当时还是2.4.18呢————这个版本我记得很清楚。所以,具体步骤还得上google搜一下,结果发现大体上都差不多,但是每个人的介绍都有些细微的区别。
恩。。。那么,还是直接看linux的文档为上——这个最官方——其实就是源目录下的README,里面说得很清楚。
1. make mrproper:Make sure you have no stale .o files and dependencies lying around。用于清除以前的编译结果和依赖文件;
2. make O=/home/my_dir/works/linux_kernel/kernel menuconfig: 配置内核的编译选项。
这里的O=/home/my_dir/works/linux_kernel/kernel是指定生成的目录。如果没有该选项,就在默认目录生成。需要注意的是,如果使用了该选项,那么后面的命令中都要带有这个选项。
3. make O=/home/my_dir/works/linux_kernel/kernel:老版本的Linux还要使用make bzImage来生成image。但是新版本的Linux使用make就可以了。这与用户空间的make风格统一了。
这个make就可以生成压缩版本的kernel镜像。
4. make O=/home/my_dir/works/linux_kernel/kernel install: 如果有合适lilo,那么可以直接使用make install来进行镜像的安装。如果没有的话,只能自己动手赋值了。
如果在配置kernel的时候,有任何一个部分是配置成module的形式,那么还需要在make install之前执行make modules_install
到此ok,linux的编译过程其实很简单,重点是在配置内核上。大家根据自己的硬件尝试吧。最好使用虚拟机,这样即使出了问题,也很容易解决。
阅读(1209) | 评论(0) | 转发(0) |