FC5的原始内核版本是2.6.15(可以用uname -r来查看),在http://download.fedora.redhat.com/pub/fedora/linux/core/5/source/SRPMS/kernel-2.6.15-1.2054_FC5.src.rpm下载kernel-2.6.15-1.2054_FC5.src的安装包之后,编译内核源代码:
#rpm –Uvh kernel-2.6.15-1.2054_FC5.src.rpm
#cd /usr/src/redhat/SPECS
#rpmbuild -bp --target $(uname -m) kernel-2.6.spec
建立源码树的符号连接
# cd /usr/src
#mkdir kernels
# cd kernels/
# ln -s ../redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686/ 2.6.15-1.2054_FC5-i686
# cd 2.6.15-1.2054_FC5-i686/
# cp configs/kernel-2.6.15-i686.config .config
cp:是否覆盖“.config”? y
#rpm –Uvh kernel-2.6.15-1.2054_FC5.src.rpm
#cd /usr/src/redhat/SPECS
#rpmbuild -bp --target $(uname -m) kernel-2.6.spec
建立源码树的符号连接
# cd /usr/src
#mkdir kernels
# cd kernels/
# ln -s ../redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686/ 2.6.15-1.2054_FC5-i686
# cd 2.6.15-1.2054_FC5-i686/
# cp configs/kernel-2.6.15-i686.config .config
cp:是否覆盖“.config”? y
修正Makefile
#uname –r (得到2.6.15-1.2054_FC5)
那么就要将Makefile中的
EXTRAVERSION = -prep
换成
EXTRAVERSION = -1.2054_FC5
继续编译:
#make mrproper
#make oldconfig
#make
#make modules_install
到此内核编译完成。
在编译用户自己的模块时,需要在Makefile文件里以如下形式指定内核源码树的路径:
make -C $(KERNELDIR) M=$(PWD) modules
这里变量KERNELDIR在前面定义成内核源码树的路径,参数M后面指的是模块源文件所在的目录。
我用yum update把FC5的内核升级到2.6.20以后,系统仍然没有包含2.6.20的源代码,因此我使用同样的方法获得源码树并编译安装。
ftp://ftp.uni-bayreuth.de/pub/linux/drivers/linux-ntfs/kernel-2.6.20-1.2320.fc5.src.rpm