linux在前不久刚发布了最新的3.0内核,在linux的学习中,了解内核的编译是一个必不可少的功课。前几天,学习了linux内核的编译流程,在此总结下,大家来一起学习。
以最新的3.0内核为例,我下载的是linux3.0.1 下载地址:http://www.kernel.org
前提条件:1.确定你的linux有装Development Tools ,Development Libraris,他们是实现编译的前提工具,如果没有请使用yum groupinstall安装
2.下载内核源码文件并拷贝进虚拟机里
内核编译的原则:1.编译时需要一个新版本,漏洞少一点
2.尽可能选择和自己硬件对应的驱动模块,兼容性好
3.服务器一般不用过新的内核,因为它没有发现一些bug,有可能不稳定
--------------------------------------------------------------------------------------------------------------------------
第一步:将您的内核文件复制到/usr/src/目录下,解压缩内核源码文件,以为的电脑为例
[root@server56 src]# ls busybox-1.18.5 linux linux-3.0.1.tar.bz2 [root@server56 src]# tar -xf linux-3.0.1.tar.bz2 # 解压缩过程比较长,耐心等待 [root@server56 src]# ls busybox-1.18.5 linux linux-3.0.1 # 这就是源待码文件目录
第二步:进入源代码目录,拷贝/boot/config-2.6.18-164.el5 到源代码目录并改名为.config
[root@server56 src]# cd linux-3.0.1 [root@server56 linux-3.0.1]# cp /boot/config-2.6.18-164.el5 ./.config
## 这里需要做一个说明:由于我们是初次编译内核,而内核的选项多达上千条,所有我们以redhat官方提供的内核版本配置文件为蓝本,在它的基础上配置,保证内核的稳定性,而redhat内核的配置文件就是/boot/config-`uname-r` uname-r指的是当前系统的版本号,我的是2.6.18-164.el5,编译时,系统会将你的配置保存在.config文件中
第三步:输入make menuconfig 进去编译配置界面 (其实有很多中方式,这里只介绍一种常用的)
[root@server56 linux-3.0.1]# make menuconfig
可以看到,这里面有很多内核选项。里面的选项对应的翻译可以查看这个链接:http://lamp.linux.gov.cn/Linux/kernel_options.html
*号表示编译进内核, M表示编译成模块,按空格键选择 ,回车键进入选择分支,我们已经使用了.config文件,所以可以直接编译,当然你可以选择自己想要的功能。
作者:金步国,国内有名的linuxer,翻译过很多linux书籍
选择接受后按按下面的ESC,弹出的界面选yes保存
第四步:使用make命令编译内核 #!需要注意的是,这个过程相当漫长,大概需要几十分钟到一个多小时的时间,而且最好不要在终端内进行,任何断开连接都会造成编译失败,建议这一步在虚拟机控制台内进行
[root@server56 linux-3.0.1]# make
第五步:编译结束后,安装模块
[root@server56 linux-3.0.1]# makemake modules_install
第六步:安装内核,这一步会将内核信息写入到你的grub里,(可以手动编辑grub.conf文件去掉)你可以用现有的虚拟机体验新版本内核(前提不出错,内核出错会在启动时显示kernel panic!内核恐慌,可能是选择的模块没有对应的依赖关系,只能重新编译)
[root@server56 linux-3.0.1]# make install
在完成编译后,内核文件会存放在/boot目录下
[root@server56 boot]# ls System.map initrd-2.6.18-164.el5.img vmlinuz-2.6.18-164.el5 System.map-2.6.18-164.el5 initrd-2.6.28.10.img vmlinuz-2.6.28.10