以下的内容来自于http://www.cyberciti.biz/tips/compiling-linux-kernel-26.html,原文为英语,针对平台是Debian,但在Ubuntu之下依然可行。
网上各种讲解编译内核的文章大多比较繁琐,但这一篇则较为简单,所以我将其意译为简体中文,加入了一些自己的理解,有兴趣的可以阅读一下。
第一步,得到Linux内核源代码包。
获得Linux源码的办法很多,如果你现在在windows平台之下,那么你可以访问http://kernel.org/获得内核的稳定版源码包。
如果你在Ubuntu或者Debian发行版上,那么你可以用wget来获得源码包:
$ cd /usr/src
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-x.y.z.tar.bz2
源码包通常命名是linux-x.y.z.tar.bz2。其中的x、y、z都是版本号,偶数为稳定版,奇数为测试版。
第二步,解压源码包。
下载好的源码包是经过一次打包和一次压缩的,可以分别使用bzip2和tar先解压再解包,也可以直接一步到位:
# tar -xjvf linux-2.6.25.tar.bz2
第三步,配置编译内核所需工具。
编译源码之前需要一些必备的工具,首先就是编译器和链接器。一般选用gcc:
# apt-get install gcc
为了在设置配置文件的时候使用一个简略的图形化界面,还可以安装ncurses:
# apt-get install libncurses5-dev
第四步,设置编译配置文件。
编译之前必须设置好配置文件。如果在第三步中已经安装好了ncurses,那么就可以开始设置配置了:
$ make menuconfig
这时你会进入一个简略的图形选项界面。这个界面当中已经有很多选项是配置好的了,如果没有你需要做改动的地方,那么直接退出保存即可。
第五步,编译内核。
首先,编译内核本身:
$ make
其次,编译内核模块:
$ make modules
第六步,组装新内核。
首先将编译好的模块组装到内核:
$ su -
# make modules_install
然后开始安装新内核:
# make install
第七步,生成initrd文件。
# cd /boot
# mkinitramfs -o initrd.img-x.y.z x.y.z
注意替换版本号。
第八步,修改grub启动项配置。
# update-grub
第九步,重新启动计算机。
# reboot