系统:KUbuntu 10.10(Ubuntu、Lubuntu、Xubuntu都一样)
我古老的硬件:P4 2.0A,QDI 845E,2 x 1G DDR,GF FX5200,40G PATA硬盘x2,无光驱、软驱
1、下载内核源码包,linux-2.6.37.tar.bz2
代码:mkdir kernel
cd kernel
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.tar.bz2
2、下载传说中的BFS补丁,2.6.37-sched-bfs-363.patch
代码:wget http://ck.kolivas.org/patches/bfs/2.6.37/2.6.37-sched-bfs-363.patch
3、安装编译工具
代码:sudo apt-get install build-essential kernel-package libncurses5-dev
4、解压源码,打上BFS补丁
代码:tar -jxf linux-2.6.37.tar.bz2
cd linux-2.6.37
patch -p1 < ../2.6.37-sched-bfs-363.patch
注:解压到任何目录都可以,不一定是教程中常用的/usr/src,但可用空间要达到2.5G
5、确保源代码目录是“干净的”,可省略
代码:make mrproper
6、载入当前的内核模块配置,将为接下来的配置节约大量时间
代码:make localmodconfig
期间会提示未配置过的项目(新功能)的选择,不明白的输入”?”可以看说明。
提示(N/y/?)时N掉即可(绝大多数);
提示(Y/n/?) 时最好先看一下,比如第一个问题“是否开启BFS”当然要选Y;
有些不确定的可以选”m”将其编译为模块,但并不是所有选项都有”m”可选;还有些选项会提示输入数值,一般会提供默认值作参考。
7、开始详细配置
代码:make menuconfig
打BFS补丁,这几个是必须注意的
* Processor type and features -> Tickless System (Dynamic Ticks) 留空(不选)
* Processor type and features -> Preemption Model -> 选 Preemptible Kernel (Low-Latency Desktop)
* Processor type and features -> Timer frequency -> 选1000Hz
(这里我觉得选300Hz也可以,体会不出和1000Hz的差别,而1000Hz会让CPU发热量更大一些,对于笔记本而言则是耗电量明显增加。反正用的是老机器,愿不愿意折腾就看个人了)
第一次我精简得比较凶,连SCSI驱动都去掉了,直接导致提示无法进系统(找不到UUID xxxx/找不到sda),这才想起来Linux的磁盘策略,添加回来后重新编译一切正常。
对于我的古董机,我把多核支持、SATA、PCI-E,以及大量的驱动去掉了,编译后header和image的deb包加起来不到11M。感觉还是有精简的空间。
8、清理
代码:sudo make-kpkg clean
9、编译
代码:sudo make-kpkg –initrd –append-to-version -abc kernel_image kernel_headers
“-abc”换成你自己的
编译之前最好把不用的程序通通关掉,乃至注销,按Ctrl+Alt+F1进入命令行界面(Alt+F7回到图形界面)
可以使用fakeroot代替sudo,我比较懒,直接用sudo了
在我的机器上,编译耗时约一小时。
10、安装
代码:cd ../
sudo dpkg -i *.deb
11、安装完毕,重启
代码:sudo reboot
与其它教程中所述不同的是,按上述步骤Ubuntu 10.10会自动mkinitramfs并update-grub,所以直接重启即可使用
GRUB引导时默认使用新内核,因此在远程机器上也可轻松操作。
跟原来的“通用”内核比,个人感觉,GNOME快了,刚好超过了一个感觉上的临界点,一下子舒适了许多;KDE也快了不少,但是开了特效依然有点卡;XFCE和LXDE就不用说了,本来就很快。