CentOS 5.3编译安装2.6.28.10内核

最近需要使用mmap()来对内存进行映射,访问内核部分的内存,在本地测试成功,上传到服务器上时出现错误:操作不允许。
很明显是权限不够。
之前在本地编译时也出现过类似情况,原因参考(Ubuntu 9.04, Kernel 2.6.28.10中mmap()使用):http://blog.csdn.net/wangjingfei/archive/2009/10/09/4646425.aspx
于是乎决定重新编译内核。
本地和服务器端配置分别如下:
Local:
Ubuntu 9.04, kernel 2.6.28.10
Disk: single
CPU: 1*1 core
Memory: 1.5GB(32 bit address)
Server:
CentOS 5.3, kernel 2.6.18-128(不知道这个是怎么命名的)
Disk: Dual 500GB
CPU: 2*4 cores
Memory: 16GB

到CentOS的官方网站下载一个相同的内核,运行menuconfig,却没有发现CONFIG_X86_PAT和CONFIG_STRICT_DEVMEM两个选项,编译尝试之后发现仍然不能访问,出错信息相同。

无奈之下决定放弃2.6.18内核,换用和本地相同的2.6.28内核。
编译过程如下:
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则新内核启动成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值