完整内核编译 2.6.28.10

来源:互联网 发布:外国玩翻译软件 编辑:程序博客网 时间:2024/05/06 04:51

编译过程如下: 
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则新内核启动成功