1. 查看linux内核版本:
# uname -r
2.6.18-194.el5
2. 下载新的内核版本:
去官网上下载最新的内核版本和对应的补丁:
https://www.kernel.org/ 选的是3.2.14
#wget -c http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.14.tar.bz2
3. 解压
将所需文件复制到 /usr/src 下并解压。
(注:如果/usr/src下的空间不够,将源文件放在别的目录下也是一样的)
# cplinux-3.2.14.tar.gz /usr/src/
# cd /usr/src/
将文件解压到 /usr/src/kernels
# tar -xvf linux-3.2.14.tar.gz -C/usr/src/kernels
4. 清理文件
清除掉以前升级留下的一些不正确文件。
# cd/usr/src/kernels/linux-3.2.14
# yum installncurses-devel #升级ncurses
# make mrporper
# cp/boot/config-‘uname -r’ /usr/src/kernels/linux3.2.14/.config #使用原来的配置文件
5. 通过菜单方式配置内核
# cd/usr/src/kernels/linux-3.2.14
# make menuconfig
该步其实就是用菜单的方式来修改.config文件,而且这里由于每个人的要求不同,在菜单中所勾选的模块也不同,这里只是给出了一个常用的模块而已有一个偷懒一点的做法是,将升级好的服务器下的.config文件拷贝到未升级服务器的同样目录下,此时就不需要第五步了,这两台服务器的版本一定要相同才可以哦
6. 编译并安装内核
# make clean // 清除下内核编译的目标文件,等待时间较短
# make bzImage // 编译内核,等待时间较长
# make modules // 编译模块,等待时间较长
# makemodules_install // 安装模块,等待时间较长
# make install // 安装
最后一步可能会出现类似于could not find module ip_tables的错误,原因就是你在配置菜单时没有勾选对应的模块
7. 编辑开机菜单选项grub文件
将 default=1 改为 default=0
# vim/etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub aftermaking changes to this file
# NOTICE: You do not have a /bootpartition. This means that
# all kerneland initrd paths are relative to /, eg.
# root (hd0,0)
# kernel/boot/vmlinuz-version ro root=/dev/sda1
# initrd/boot/initrd-version.img
#boot=/dev/sda
default=0
【保存并退出】
8. 重启
# shutdown-r now
注:有时会重启时间较长,需耐心等待,不要误以为服务器挂了。我有一次就以为挂了,又重新给服务器安装了一次系统
9. 查看内核编译结果
# uname -r
3.2.14-rt24