CentOS 更换内核
Linux 系统
包含两个版本,一个是 Linux 发行版
的版本(如 CentOS 7.6
),另一个是内核版本(如 3.10.0-957
),本文介绍了更换两者的方法。
Linux 系统
包含两个版本,一个是 Linux 发行版
的版本(如 CentOS 7.6
),另一个是内核版本(如 3.10.0-957
),通过以下命令可以查看两个的版本:
# 查看 CentOS 发行版的版本
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
# 查看内核版本
$ uname -r
3.10.0-957.el7.x86_64
一、更换 CentOS 发行版本
前往 CentOS Vault 仓库
寻找自己需要的版本,这里包括基本所有需要的 CentOS 历史版本
,但需要注意它通常不包括 LTS 版本
(长期支持,如 CentOS 7.9
,这类版本会存储于 CentOS 主仓库
)。
这里以 7.6.1810 版本为例,需要执行以下命令:
# 下载安装包
$ wget https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/x86_64/Packages/centos-release-7-6.1810.2.el7.centos.x86_64.rpm
# 安装
$ rpm -ivh centos-release-7-6.1810.2.el7.centos.x86_64.rpm --force
# 查看目前的所有版本
$ rpm -qa | grep -i centos-release
centos-release-7-8.2003.0.el7.centos.x86_64
centos-release-7-6.1810.2.el7.centos.x86_64
# 卸载原有版本
$ rpm -ev centos-release-7-8.2003.0.el7.centos.x86_64
# 重启系统
$ reboot
二、更换内核版本
首先下载内核包括两种方法,一种是基于 Vault 源
,另一种是基于 ELRepo 源
:
1. 基于 YUM 源
如果想更换的内核正好属于某个 CentOS 发行版本
的默认内核(对应关系如下表),则可以通过替换 YUM 源
的方式进行,具体步骤如下:
CentOS 版本 | 发行时间 | 默认 Linux 内核版本 |
---|---|---|
7.0.1406/ | 07-Apr-2015 15:36 | kernel-3.10.0-123.el7.src.rpm |
7.1.1503/ | 13-Nov-2015 13:01 | kernel-3.10.0-229.el7.src.rpm |
# 追加 vault 仓库到源中
$ echo "# C7.6.1810
[C7.6.1810-base]
name=CentOS-7.6.1810 - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/\$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1" >> /etc/yum.repos.d/CentOS-Vault.repo
# 更新源
$ yum makecache
# 查看可安装的内核版本
$ yum list kernel --showduplicates
Installed Packages
kernel.x86_64 3.10.0-957.el7 @base
kernel.x86_64 3.10.0-1160.el7 @anaconda
Available Packages
kernel.x86_64 3.10.0-957.el7 C7.6.1810-base
kernel.x86_64 3.10.0-1160.el7 base
kernel.x86_64 3.10.0-1160.el7 updates
kernel.x86_64 3.10.0-1160.2.1.el7 updates
# 之后只需安装需要的版本即可
$ yum install kernel-3.10.0-957.el7
# 查看当前拥有的内核版本
$ cat /boot/grub2/grub.cfg | grep menuentry
menuentry 'CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.el7.x86_64-advanced-8add9029-af05-4660-8c1c-37e6fd7b1ac5' {
menuentry 'CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.el7.x86_64-advanced-8add9029-af05-4660-8c1c-37e6fd7b1ac5' {
# 更换默认内核
$ grub2-set-default "CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)"
# 重启
$ reboot
2. 基于 ELRepo
如果希望下载最新的内核版本,可以使用 ELRepo 源
进行安装,具体如下:
# 导入 ELRepo 仓库的公共密钥
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 ELRepo 仓库的 yum 源
$ yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# 替换为清华 ELRepo 源
$ sed -e "s|mirrorlist=|#mirrorlist=|g" \
-e "s|elrepo.org/linux|mirrors.tuna.tsinghua.edu.cn/elrepo|g"\
-i.bak \
/etc/yum.repos.d/elrepo.repo
# (可选) 更新 yum 缓存
$ yum makecache
# 查看可用的内核版本,kernel-ml(mainline stable):稳定主线版本,kernel-lt(long term support):长期支持版本
$ yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Available Packages
kernel-lt.x86_64 5.4.202-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.202-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.202-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.202-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.202-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.202-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.202-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 5.18.8-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.18.8-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.18.8-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.18.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.18.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.18.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.18.8-1.el7.elrepo elrepo-kernel
# 升级为主线版本
$ yum --enablerepo=elrepo-kernel install kernel-ml -y
# 查看当前拥有的内核版本
$ cat /boot/grub2/grub.cfg | grep menuentry
menuentry 'CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.el7.x86_64-advanced-8add9029-af05-4660-8c1c-37e6fd7b1ac5' {
menuentry 'CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.el7.x86_64-advanced-8add9029-af05-4660-8c1c-37e6fd7b1ac5' {
# 更换默认内核
$ grub2-set-default "CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)"
# 重启
$ reboot