一步步教你如何升级Centos内核(图解)
查看当前系统所使用的内核版本
uname -rs
添加 ELRepo 软件仓库(一个由社区维护的企业级 Linux 软件仓库),依次运行下面命令。
导入 ELRepo 公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装 ELRepo(适用 CentOS 7)
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
安装 ELRepo(适用 CentOS 6)
rpm -Uvh https://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
编辑 ELRepo 配置文件,设置只用它的内核软件包(默认包含了其它类别软件),将[elrepo]
下的 enabled 数值改为 0,[elrepo-kernel]
enabled 数值改为 1。保存后用 yum repolist all
检查软件仓库启用情况。
vi /etc/yum.repos.d/elrepo.repo
考虑之后安装&更新内核都通过 ELRepo 获取,为避免之后运行 yum update 影响默认内核版本设置。建议在 Base.repo 中置不通过 CentOS 自带源更新旧版内核。
在 [updates] 下添加如下一行,排除 kernel 开头的软件包更新。
vi /etc/yum.repos.d/CentOS-Base.repo exclude=kernel*
从 ELRepo 安装新版内核,有两个版本选择,分别是 kernel-lt 长期支持版本和 kernel-ml 最新主线版本。建议选择 kernel-lt 版本。
# 安装 kernel-lt 版本
yum --enablerepo=elrepo-kernel install kernel-lt
# 安装 kernel-ml 版本
yum --enablerepo=elrepo-kernel install kernel-ml
列出系统上已安装的内核版本。
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
设置使用指定内核版本。内核名称用上个命令查询。
grub2-set-default "CentOS Linux (5.4.247-1.el7.elrepo.x86_64) 7 (Core)"
运行 grub2-mkconfig -o /boot/grub2/grub.cfg
命令重新生成启动文件,reboot
重启生效。 重启后再次查看当前内核版本 uname -rs
删除旧版内核和安装内核相关软件包
列出已安装的内核和相关软件包。
rpm -qa kernel\* | sort -V
这里用 package-cleanup
命令删除内核,需要先安装 yum-utils
软件包。
yum -y install yum-utils
删除内核旧版本(默认从最旧的开始删),修改其中数字以设置要保留几个旧内核版本。如果只有一个旧版内核,就不用操作了,建议保留以备不时之需。
package-cleanup --oldkernels --count=1
删除旧版内核相关的软件包。
yum remove kernel-tools-libs kernel-tools
安装新版内核相关软件包。其中 kernel-*-headers
是内核头文件,供 glibc 使用。有些软件需要用到,建议安装。
# 对应 kernel-lt 版本软件包
yum --enablerepo=elrepo-kernel install kernel-lt-tools kernel-lt-headers
# 对应 kernel-ml 版本软件包
yum --enablerepo=elrepo-kernel install kernel-ml-tools kernel-ml-headers
这里在安装kernel-*-headers时有一个报错,是因为与旧版的kernel-*-headers冲突导致的,先删除旧版本再安装就可以了,注意:要把下面的旧内核版本改为你所使用的内核版本
yum remove kernel-headers-3.10.0-1160.90.1.el7.x86_64
运行 grub2-mkconfig -o /boot/grub2/grub.cfg 命令重新生成启动文件,reboot 重启生效。