CentOS 6.4 升级到 3.x Kernel
条评论1.前言
好吧,虽然这是一个关于微软平台的技术日志,但是并不限于Win,最近手头有些事情需要用到 Linux/Unix 等非 Win 系统,所以还是在这里开个分类目录记录下来,有备无患嘛。
2.准备工作
CentOS 6.4 发布出来有一段时间了,最近才用上,可是发现内核还是 2.6.32,是不是也太旧了点,于是乎打算将其内核升级到 3.x。
以下是准备工作:
2.1. 安装组件:
1 | yum groupinstall "Development Tools" #这样做会确定你拥有编译时所需的一切工具。 |
2.2. 安装 wget
1 | yum -y install wget #安装 wget 下载工具 |
2.3. 下载 Kernel 内核源码包,这里用的是北京交大的镜像,你也可以直接去 www.kernel.org 获取
1 | wget http://mirror.bjtu.edu.cn/kernel/linux/kernel/v3.x/linux-3.2.21.tar.xz |
3.编译/安装内核
3.1. 解压缩源码包
1 | xz -d linux-3.2.21.tar.xz |
3.2. 配置内核选项
1 | cd linux-3.2.21 |
在其中选择你想取消或者启动的选项,但注意别精简得太多,否则很容易出现各种错误甚至无法引导系统,比如来个 kernel panic not syncing attempted to kill init
之类的错误,这里提供我的一份 .config 文件
下载后注意改名,另外还应该对照你自己的环境做些修改。(这个适用于搭建在 Intel CPU上面的 VMware 虚拟机)
3.3. 开始编译
1 | make bzImage modules modules_install |
编辑 GRUB引导菜单,将 default=1 改成 default=0vi /etc/grub.conf
你还可以将 hiddenmenu 前面用#注释掉,这样开始会显示引导菜单
reboot
#重启
至此,CentOS 6.4 升级到 3.x Kernel 完成。
4.补充
如果你的 CentOS 是安装在 VMware 上的话,在最后 make install 这一步的时候有可能会看到这样的警告:
ERROR: modinfo: could not find module vmware_balloon
从字面上来看,是找不到 vmware_balloon 模块,这个 vmware_balloon 实际上被称之为内存释放或者气球膨胀(参见这篇文章),可能的原因有2个:
首先,确认你的 .config 文件里面有 **CONFIG_VMWARE_BALLOON=m **这一行,或者你可以用 make menuconfig 进去内核编译菜单,选中 Device Drivers -> MISC devices -> VMware Balloon Driver 为 M 或者 *
其次,而这个模块在后面的版本中,已经更名为 vmw_balloon,所以 可以用下面的命令来解决:
1 | cd /lib/modules/3.x.xx/kernel/drivers/misc #将版本号改成你自己的 |
Tips:
如果你最后 make install 的时候有很多 could not find module xxxx 的错误,而你又不知道其对应的是 .config 中哪一项的时候,可以用这条命令:grep -R --include=Makefile '\bNAME\.o\b'