下面说说我编译内核2.6.38.2的过程,因为中文Wiki有些年代了,所以我搜罗了一些资料,然后才成功完成的编译工作。
1.从http://www.kernel.org/ 下载最新的稳定(stable)源码包(Full source).
2.解压缩到任意一个目录(所在分区可用空间最好有10G左右),不需要放在/usr/src下,不过放在/usr/src下比较方便也符合传统做法,这里我是解压缩到/home/will/下,即源码存在于/home/will/linux-2.6.38.2/下。
3.打开一个终端:
cd /home/will/linux-2.6.38.2
cp /boot/config-strings .config //这里的config-strings指的输入config后用tab键自动补全后的结果
make menuconfig
这个时候将进入内核编译前的配置阶段,按照自己的硬件信息进行常规的优化,缩小编译后的内核尺寸。按空格键进行选择/反选。关于内核config配置的优化,网上一搜就是一大堆,这里仁者见仁,智者见智的事情了。配置完成后一定记得要保存config!(保存为 .config )
4.
make -j4
我是四核CPU,所以用-j4的参数来并行编译,如果你是单核就不用加参数,而双核CPU就用-j2,类似,六核CPU就用-j6参数……
其实这里一般可以直接就用make的,编译器会自动进行并行编译。
编译时间很长,可能要一个小时左右。
5.编译完成后,就进行相关的安装步骤:
su
make modules_install //安装模块(配置中标记为M的选项)到系统根目录。
make install //安装vmlinuz,initrd和system.map以及完成一些必要的操作,openSUSE下编译内核也挺方便的,:-)
make headers_install //安装内核的头文件,如果你从不编译和内核有关的软件的话可以不安装,但是一般还是建议做这一步的。
6.修改好grub的引导文件,启用新内核!(可以使用update-grub或者update-grub2自动更新grub的配置文件)
修改好内核源码目录:
rm -rf /usr/src/linux
ln -s /home/will/linux-2.6.38.2 /usr/src/linux
重启进入新内核,uname -r确认使用的是新内核,确认系统正常,硬件工作正常后,可以开始进行下面的清理工作了。
7.cd进入编译内核的目录后:
make clean
cd /lib/modules/
sudo rm -rf oldkernel //oldkernel指旧内核的Modules文件夹
cd /boot/
sudo rm -f *-old //*-old代指所有旧内核的文件,如vmlinuz和initrd等
8.使用新内核后,闭源的显卡驱动必须要重新手动安装哦~从ATI或者nvidia官网下载最新的驱动资料进行安装吧。我还是使用的KMS开源驱动,现在开源驱动性能已经接近闭源驱动了,www.linuxidc.com反正桌面流畅,正常播放1080P的MKV影片,我也没必要去安装闭源驱动……
晒一晒我编译完成内核2.6.38.2的截图:
内核2.6.38传说是有200行鸡血补丁的,重启后确实感觉桌面性能提升不少啊!当然,你可以试着打上BFS补丁,可能获得更高速度!
我编译出来的initrd居然有20MB!不过vmlinu比原来的要小一点点,4.1MB……好吧,我承认我没有认真的配置config文件。如果童鞋们有耐心的话,推荐弄清楚自己的硬件信息,不要将不必要的硬件驱动编译进入模块(M)或者内核(*)了,这样不仅能缩小内核尺寸,还能加快系统速度。
P.S. 我没有找到apparmor的补丁,而且我在编译内核之前就删除了apparmor的相关软件包,开机时候提示了apparmor的错误信息,所以如果需要保留Apparmor功能的话,可能需要打相关补丁,否则Apparmor可能会工作不正常。
2011-04-06后记:我打上了BFS补丁,并且再次调整了config文件,删掉了更多的压根用不上的模块,initrd缩小到17MB了,但是借助BFS补丁的强大威力,系统速度相当快!本来2.6.38就传言是打了鸡血的内核,加上一直有鸡血补丁的盛名的BFS,啧啧……不说了。。。