编译过程如下:
1. 到官方网站下载kernel, 2.6.28.10
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.10.tar.bz2
注意:不能下载linux-2.6.28.tar.bz2,也不知道什么原因,我编译完成后,不能启动,错误信息为:“不能找到/dev/VolGroup00”。
2. 将文件放在/usr/src目录下,并解压得到linux-2.6.28.10,进入该目录开始
3. 编辑Makefile文件,修改“EXTRAVERSION = .10.x86_64”
.10.x86_64是内核的扩展名称,最后生成内核的名称为:2.6.28.10.x86_64,这个名字可以任意定
4. 配置内核
#make menuconfig
这个命令会将系统的config文件拷贝到source目录下,保存为.config文件,并可以通过界面选择内核选项
此时我们根据mmap的需求去掉CONFIG_X86_PAT和CONFIG_STRICT_DEVMEM两个选项
5. 编译内核
#make
6. 编译内核模块
#make modules
7. 安装内核模块
#make modules_install
这时,在/lib/modules下会产生一个目录为,名称为内核版本+EXTRAVERSION。我的是:2.6.28.10.x86_64
8. 拷贝bzImage文件到/boot目录
cp /usr/src/linux-2.6.28.10/arch/x86_64/boot/bzImage /boot/vmlinuz-2.6.28.10.x86_64
注意:内核类型根据自己需求选择,因为内存为16GB,我选择arch/x86_64下的bzImage文件
9. 拷贝System.map文件到/boot目录
cp System.map /boot/System.map-2.6.28.10.x86_64
10. 创建.img文件
mkinitrd /boot/initrd-2.6.28.10.x86_64.img 2.6.28.10.x86_64
其中第二个参数2.6.28.10.x86_64与/lib/modules目录名称一致
11. 添加grub文件条目
#vim /boot/grub/grub.conf
添加如下几行:
title CentOS (2.6.28.10.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.28.10.x86_64 root=/dev/VolGroup00/LogVol00 rhgb quie t
initrd /initrd-2.6.28.10.x86_64.img
其中/dev/VolGroup00/LogVol00根据自己情况配置,我使用的双硬盘,建立在LVM基础上
12. 重新启动
一定要保证kernel和initrd指定的文件名称无误,否则就要要跑到机房去重启机器了~
#reboot
重启之后通过一下命令查看内核版本:
#uname -r
若显示2.6.28.10.x86_64则新内核启动成功