编译带 reiser4 和 ck 补丁的内核
给新电脑安装上 ubuntu 7.10 的最小系统后, 继续 DIY 计划, 启用 reiser4. 但默认的 ubuntu 内核是不带 reiser4 的, 所以要自己编译一个内核.
参见这篇文章.
首先安装编译内核需要的东西:
sudo apt-get install linux-kernel-devel fakeroot kernel-wedge kernel-package
sudo apt-get build-dep linux-source
然后下载内核和补丁, 我用的是2.6.22.6的内核:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.6.tar.bz2
reiser4 for 2.6.22:
ftp://ftp.namesys.com/pub/reiser4-for-2.6/2.6.22/reiser4-for-2.6.22-2.patch.gz
提高桌面性能的 ck 补丁, 貌似以后不会出了:
http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/2.6.22/2.6.22-ck1/patch-2.6.22-ck1.gz
为了保证文件完整, 还下载了 sign 文件进行检验, 如果不知道 gpg 是什么就可以无视这句.
另外, 经过N次失败得出结论: Ubuntu 的 linux-source 包提供的源码是不行的, 一定要 vanilla 内核才可以.
现在材料都准备好, 可以开始:
1. 解压
tar xfv linux-2.6.22.6.tar.bz2 && cd linux-2.6.22.6
2. 打补丁. 注意 ck 补丁直接打是不行的, 要先修改第5160行, 把 "-EXTRAVERSION =" 改成 "-EXTRAVERSION = .6". 然后
zcat /somepath/reiser4-for-2.6.22-2.patch.gz | patch -p1
cat /somepath/patch-2.6.22-ck1 | patch -p1
当然, 保险的做法是要先 --dry-run.
3. 配置并编译
make mrproper
make oldconfig
提示的选项我这样选
Support for prefetching swapped memory (SWAP_PREFETCH) [Y/n/?] y
...
Timer frequency
1. 100 HZ (HZ_100)
2. 250 HZ (HZ_250_NODEFAULT)
> 3. 300 HZ (HZ_300)
4. 1000 HZ (HZ_1000)
5. 1500 HZ (HZ_1500)
6. 2000 HZ (HZ_2000)
7. 3000 HZ (HZ_3000)
8. 4000 HZ (HZ_4000)
9. 5000 HZ (HZ_5000)
10. 7500 HZ (HZ_7500)
11. 10000 HZ (HZ_10000)
choice[1-11?]: 3
...
Reiser4 (EXPERIMENTAL) (REISER4_FS) [Y/n/m/?] y
Enable reiser4 debug mode (REISER4_DEBUG) [N/y/?] n
...
然后
make menuconfig
按需配置. 我删了很多无用的东西, 经实验如果按默认配置编译要44min, 删掉无用的驱动后就只需11min... -_-!..
4. 好了, 现在可以开始编译
(time make-kpkg --rootcmd fakeroot --initrd \
--append-to-version=-ac-20070920 \
kernel_image kernel_headers linux_image linux_headers modules_image) 2>&1 | tee ../makelog
5. 编译成功后, 安装内核和头文件
cd ..
sudo dpkg -i linux-headers-2.6.22.6-ck1-ac-20070920_2.6.22.6-ck1-ac-20070920-10.00.Custom_i386.deb \
linux-image-2.6.22.6-ck1-ac-20070920_2.6.22.6-ck1-ac-20070920-10.00.Custom_i386.deb
重启到新内核, 一切正常 :-) . 接着搞reiser4, 方法参见
http://www.namesys.com/install_v4.html
打了补丁的内核,配置文件,makelog可以在这里找到.