分类: LINUX
2008-09-04 16:27:51
=================================
概述
本攻略详细讲述了如何在Fedora Core 4的环境下编译内核。
其中需要注意的是,在进行以下操作前请做好备份。
提示:
完成这些操作你可能需要有大约350-400MB的空闲空间。
具体时间视你的机器速度和编译配置而定.
所有操作需要在root身份登录下完成
0.备份重要文件
备份以下这些文件可以在系统发生错误或崩溃时,能较快速的恢复系统原来的状态。
备份内核和启动文件
# cd /
# tar cvzf boot.tar.gz boot
备份系统函数头文件
# cd /usr/include
# tar cvzf linux.tar.gz linux
备份模块中的库文件
# cd /lib/modules
# tar cvzf 2.6.11-1.1369_FC4.tar.gz 2.6.11-1.1369_FC4
备份linux源码(如果有的话)
# cd /usr/src
# tar cvzf linux-2.x.x-x.tar.gz linux-2.x.x-x
备份重要配置目录
# cd /
# tar cvzf etc.tar.gz etc
1.准备工作
为了备份现有kernel源代码并获得目前的配置文件,我们需要把Fedora Core 4 kernel源代码安装到我们的机器上.
用root登录
找出源码盘第4张,找到kernel-2.6.11-1.1369_FC4.src.rpm并复制到 /usr/src/下.
[root@Tony src]# uname -r
2.6.11-1.1369_FC4
[root@Tony src]# rpm -ivh kernel-2.6.11-1.1369_FC4.src.rpm
1:kernel ########################################### [100%]
[root@Tony src]# rpmbuild -bp --target=noarch /usr/src/redhat/SPECS/kernel-2.6.spec
这样原代码就放在 /usr/src/redhat/BUILD/kernel-2.6.11/
做以上操作的目的是得到原.config 文件,作为重新编译内核的配置基础.
2.下载新内核
假设你想重新编译基于2.6.15.1的内核(目前最新的稳定版本)
从下载,注意要下载full版本不要path版本
大小约为39M
拷贝到 /usr/src/下(以linux-2.6.15.1.tar.bz2为例)
[root@Tony src]# tar -jxvf linux-2.6.15.1.tar.bz2
[root@Tony src]# cd linux-2.6.15.1
如需要打path执行
[root@Tony linux-2.6.15.1]# patch -p0 < kernel.patch
如需要清除之前的编译信息
[root@Tony linux-2.6.15.1]# make mrproper
3.建立软联接linux
[root@Tony src]# ln -s linux-2.6.15.1 linux
4.获得初始.config文件
.config文件包含了你所编译的内核的所有的特定配置。你必须有一个可以开始配置的.config文件,否则,这将会使对不同的选项进行正确的设定变得非常的困难。
可以使用在先前在fedora的kernel.src.rpm中的.config文件,它将成为你自定义内核的起点。
[root@Tony src]# ls /usr/src/redhat/BUILD/kernel-2.6.11/linux-2.6.11/configs/
看到如下显示:
kernel-2.6.11-i586.config kernel-2.6.11-ppc64iseries.config
kernel-2.6.11-i686.config kernel-2.6.11-ppc.config
kernel-2.6.11-i686-smp.config kernel-2.6.11-ppc-smp.config
kernel-2.6.11-i686-xen0.config kernel-2.6.11-s390.config
kernel-2.6.11-i686-xenU.config kernel-2.6.11-s390x.config
kernel-2.6.11-ia64.config kernel-2.6.11-x86_64.config
kernel-2.6.11-ppc64.config kernel-2.6.11-x86_64-smp.config
[root@Tony src]# uname -m
显示:
i686
[root@Tony src]# cd /usr/src/linux
[root@Tony linux]# cp /usr/src/redhat/BUILD/kernel-2.6.11/linux-2.6.11/configs/kernel-2.6.11-i686.config .config
5.(可选)修改自己编译内核的版本名
打开 /usr/src/linux/Makefile
看到:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 15
EXTRAVERSION = .1
NAME=Sliding Snow Leopard
可修改为(例子)
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 15
EXTRAVERSION = 1.tony.FC4
NAME=Sliding Snow Leopard
这样新内核将被命名为2.6.151.tony.FC4
6.配置内核
可使用的命令包括:
text based questions: make config
text based GUI: make menuconfig
GTK based GUI: make gconfig
QT based GUI: make xconfig (推荐)
注意:要运行make xconfig,你必须安装有qt-devel的RPM包。
禁用或启用任何你不想要或者你想要的特征.当你对你不熟悉的选项作出改变的时候,你一定要“非常小心”.如果你不知道你修改的时什么,请保持其默认值.
保存.config文件.
7.编译和安装
[root@Tony src]# cd linux
[root@Tony linux]# make all
如果这样没有用,请重新检查错误,试着在上面的配置步骤中禁用一些惹麻烦的模块.如果一切顺利,你就可以安装了.
如果配置的可加载模块,你需要执行
[root@Tony linux]# make modules_install
最后
[root@Tony linux]# make install
8. 用新kernel引导系统
顺利完成以上步骤后我们可以执行
[root@Tony src]# ls /boot/
看到显示:
config-2.6.11-1.1369_FC4 System.map
grub System.map-2.6.11-1.1369_FC4
initrd-2.6.11-1.1369_FC4.img System.map-2.6.151.tony.FC4
initrd-2.6.151.tony.FC4.img vmlinuz
lost+found vmlinuz-2.6.11-1.1369_FC4
memtest86+-1.55.1 vmlinuz-2.6.151.tony.FC4
其中System.map-2.6.151.tony.FC4和vmlinuz-2.6.151.tony.FC4就是新内核启动文件和bzImage文件的映射.
另外你还可以查看/boot/grub/grub.conf
看到在引导列表中新增加了如下几行:
title Fedora Core (2.6.15.1.tony.FC4)
root (hd0,6)
kernel /vmlinuz-2.6.151.tony.FC4 ro root="LABEL"=/ rhgb quiet
initrd /initrd-2.6.151.tony.FC4.img
如果有多系统引导(如默认为windows)的情况.你可以根据实际情况修改default的值.
例外我的windows为默认系统,现在排在第3个
则
default=2
存盘退出