本文针对RedHat5 的对于2.6.15.5的内核编译成功
1. 首先从www.kernel.org/pub/linux/utils/kernel链接下下载Linux内核源码,(最好是与你所用的Linux内核版本相差不要太远的,比如不要用2.4内核版本去跑2.6的内核,会出很多问题)放入/usr/src目录下,解压好
2. 安装好module工具
www.kernel.org/pub/linux/utils/kernel/module-init-tools/ 下载module-init-tools-3.2.2.tar
www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/ 下载modutils-2.4.5-1.i386.rpm ,modutils-2.4.5-1.src.rpm, modutils-2.4.5-1.sparc.rpm 这三个包
注意 版本不是问题,在下载modutils-2.4.5-1.src.rpm 时一定要把三个包都下载下来才可以
#rpm –e –nodeps modutils (强行卸载原有的modutils RPM包)
#rpm –ivh modutils-2.4.5-1.src.rpm
#rpm –ivh modutils-2.4.5.1.i386.rpm
#rpm –ivh modutils-2.4.5-1.sparc.rpm
3. 安装module-init-tools
#tar –jxvf module-init-tools-3.2.2.tar
cd module-init-tools-3.2.2
,/configure –prefix=/sbin
make
make install
./generate-modprobe.conf /etc/modprobe.conf
4. 建立软链接
cd /usr/src
ln –s linux-2.6.15.5 linux
cd linux
5. make mrproper 检查依赖关系
6. 开始进行内核的配置
执行命令 make menuconfig
特别注意:
对于第一项 :Code maturity level options (代码成熟等级)中进入后有一项
“Prompt for development and/or incomplete code/dircers”一定不能编译,不然在后面编译时会出错
至于如何把SCSI,EXT3直接编译进去我还没试过
设置完成后下一步
7. 开始编译内核 (生成使用gzip压缩的内核,生成的文件位于/usr/src/linux/arch/i386/boot目录)
对于大内核(比如需要SCSI支持),make bzImage
对于小内核,make zImage
8. make modules modules_install (编译内核模块并安装到/lib/module./2.6.15.5目录)
9. 使用新内核
把/usr/src/linux/arch/i386/boot/目录内新生成的内核文件bzImage/zImage拷贝到/boot目录
mv arch/i386/boot/bzImage /boot/bzImage2.6.15.5
10. 接下来是要修改启动项
加入如下几句:
title Red Hat Linux (2.6.15.5)
root (hd0,0)
kernel /boot/bzImage2.6.15.5 ro root=/dev/sda1 hdc=ide-scsi
initrd /boot/initrd-2.6.15.5.img
11. 当我们编译了一个新的内核,也不要忘了为我们的scsi设备做一个新的initrd映像,因为我们没有把SCSI直接编进内核,而是把他们编成了模块模式,所以我们需要设置initrd,否则将无法进入系统,提示为“VFS: unable to mounting root fs”
语法:
mkinitrd 路径名 内核的目录名
示例:
mkinitrd initrd-2.5.19.img 2.5.19
(initrd-2.5.19.img文件是自己任意取的,但最佳对应自己的内核版本号。
2.5.19是在/lib/modules中的目录名,对应内核的版本。)
12. 为了使用以上mkinitrd命令我们必须安装mkinitrd ,device-mapper,lvm2这三个软件包(注意安装顺序:先是lvm2,再是device-mapper,最后是mkinitrd)
安装成功后,就可以使用了
# mkinitrd /boot/initrd-2.6.15.5.img 2.6.15.5
如果没有成功,就用如下命令:
# mkinitrd /boot/initrd-2.6.15.5.img 2.6.15.5 --without-dmraid
13. # cp /usr/src/linux-2.6.15.5/System.map /boot/System.map-2.6.15.5 (复制内核符号表)
14. 保存,重启 ,选择新的内核就可以了