CentOS 7升级内核的三种方式(yum/rpm/源码)

背景

在 CentOS 使用过程中,难免需要升级内核,但有时候因为源码编译依赖问题,不一定所有程序都支持最新内核版本,所以以下将介绍两种升级内核方式。

注意事项

关于内核种类: kernel-ml kernel-ml 中的ml是英文【 mainline stable
】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。 kernel-lt kernel-lt 中的lt是英文【 long
term support 】的缩写,elrepo-kernel中罗列出来的长期支持版本。

  1. ML 与 LT 两种内核类型版本可以共存
  2. 但每种类型内核只能存在一个版本

例如: 当系统已存在 LT 内核的 5.4.103 版本时,继续安装 LT 内核的 4.4.215 版本则会提示: package
kernel-lt-5.4.103-1.el7.elrepo.x86_64 (which is newer than
kernel-lt-4.4.215-1.el7.elrepo.x86_64) is already installed

一、yum安装

升级至最新

centos7升级内核,3.1-> 4.4 (4.17.8)

导入仓库源

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

rpm -Uvh
http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

查看可安装的软件包

yum --enablerepo=“elrepo-kernel” list --showduplicates | sort -r | grep kernel-ml.x86_64

选择 ML 或 LT 版本安装

#安装 ML 版本
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
#安装 LT 版本,K8S全部选这个
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y

查看现有内核启动顺序

awk -F\’ ‘$1=="menuentry " {print $2}’ /etc/grub2.cfg
或者
awk -F\’ ‘$1=="menuentry " {print i++ " : " $2}’ /etc/grub2.cfg

修改默认启动项

xxx 为序号数字,以指定启动列表中第x项为启动项,x从0开始计数

grub2-set-default xxxx
#生成配置
grub2-mkconfig -o /etc/grub2.cfg

例如设置以4.4内核启动
则直接输入“grub2-set-default 0”,下次启动即可从4.4启动

#查看内核启动序号
[root@localhost ~] awk -F’ ‘$1=="menuentry " {print $2}’ /etc/grub2.cfg
或者 awk -F’ ’ $1=="menuentry " {print i++ " : " $2}’ /etc/grub2.cfg
CentOS Linux (4.4.179-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-6d4c599606814867814f1a8eec7bfd1e) 7 (Core)
#设置启动序号 [root@localhost ~] grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg
#查看默认内核 grub2-editenv list 或者 grubby --default-kernel
#重启 reboot
#检查内核版本 uname -r

二、安装指定内核版本rpm

本次以安装 LT 内核的 4.415 版本为例。

查找版本

因 ELRepo 源都是最新版本,所以旧版本内核只能手动下载。

查找 kernel rpm
历史版本:http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/

下载内核 RPM

共需要下载三个类型 rpm

wget
http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-4.4.215-1.el7.elrepo.x86_64.rpm
wget
http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-4.4.215-1.el7.elrepo.x86_64.rpm
wget
http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-4.4.215-1.el7.elrepo.x86_64.rpm

安装内核

rpm -ivh kernel-lt-4.4.215-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-4.4.215-1.el7.elrepo.x86_64.rpm

确认已安装内核版本

[root@localhost ~]# rpm -qa | grep kernel
kernel-headers-3.10.0-1160.15.2.el7.x86_64
kernel-devel-3.10.0-1160.49.1.el7.x86_64
kernel-tools-libs-3.10.0-957.el7.x86_64 kernel-3.10.0-957.el7.x86_64
kernel-ml-4.9.9-1.el7.elrepo.x86_64
kernel-lt-4.4.215-1.el7.elrepo.x86_64
kernel-tools-3.10.0-957.el7.x86_64
kernel-lt-devel-4.4.215-1.el7.elrepo.x86_64

设置启动

#查看启动顺序 [root@localhost ~]# awk -F\’ ‘$1=="menuentry " {print i++ " : " $2}’ /etc/grub2.cfg
CentOS Linux (4.4.215-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (4.9.9-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux
(3.10.0-957.el7.x86_64) 7 (Core) CentOS Linux
(0-rescue-b91f945269084aa98e8257311ee713c5) 7 (Core)

#设置启动顺序 [root@localhost ~]# grub2-set-default 0

#重启生效 [root@localhost ~]# reboot

三、源码安装

环境准备

CentOS 7 1804 最小化安装

安装核心软件包

yum install -y gcc make git ctags ncurses-devel openssl-devel yum
install -y bison flex elfutils-libelf-devel bc

创建内核编译目录

使用 home 下的 kernelbuild 目录

mkdir ~/kernelbuild

获取内核源码

清华大学镜像站:https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/?C=M&O=D

  • linux-4.xx.xx.tar.xz
  • linux-4.xx.xx.tar.gz

这两个格式都可以的,tar.xz压缩率更高,文件更小。

wget
https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.17.11.tar.xz

解压内核代码

将其解压后进入源码目录:

tar -xvJf linux-4.17.11.tar.xz

为确保内核树绝对干净,进入内核目录并执行 make mrproper 命令:

cd linux-4.17.11 make clean && make mrproper

内核配置
复制当前的内核配置文件

config-3.10.0-862.el7.x86_64是我当前环境的内核配置文件,根据实际情况修改

cp /boot/config-3.10.0-862.el7.x86_64 .config

高级配置

y 是启用, n 是禁用, m 是需要时启用.
make menuconfig: 老的 ncurses 界面,被 nconfig 取代
make nconfig: 新的命令行 ncurses 界面

编译和安装
编译内核

make -j x
如果你是四核的机器,x可以是8

安装内核

Warning: 从这里开始,需要 root 权限执行命令,否则会失败.

编译完内核后安装:

make modules_install install

设置启动

#查看启动顺序
[root@localhost ~]# awk -F’ ‘$1=="menuentry " {print $2}’ /etc/grub2.cfg CentOS Linux (4.17.11-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (4.9.9-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux
(3.10.0-957.el7.x86_64) 7 (Core) CentOS Linux
(0-rescue-b91f945269084aa98e8257311ee713c5) 7 (Core)

#设置启动顺序
[root@localhost ~]# grub2-set-default 0

#重启生效
[root@localhost ~]# reboot

四、卸载 / 降级 内核

例如:

当系统已存在 LT 内核的 5.4.103 版本时,继续安装 LT 内核的 4.4.215 版本则会提示: package kernel-lt-5.4.103-1.el7.elrepo.x86_64 (which is newer than kernel-lt-4.4.215-1.el7.elrepo.x86_64) is already installed

这时就需要进行内核降级,卸载最新版的内核。

查看系统当前内核版本

[root@localhost ~]# uname -r
5.4.103-1.el7.elrepo.x86_64

查看系统中全部内核

[root@localhost ~]# rpm -qa | grep kernel
kernel-headers-3.10.0-1160.15.2.el7.x86_64
kernel-devel-3.10.0-1160.49.1.el7.x86_64
kernel-tools-libs-3.10.0-957.el7.x86_64 kernel-3.10.0-957.el7.x86_64
kernel-ml-4.9.9-1.el7.elrepo.x86_64
kernel-lt-5.4.103-1.el7.elrepo.x86_64
kernel-tools-3.10.0-957.el7.x86_64
kernel-lt-devel-5.4.103-1.el7.elrepo.x86_64

删除指定内核

此处以删除 LT 内核的 5.4.103 版本为例
注意:无法卸载当前在用的内核版本。

yum remove -y kernel-lt-devel-5.4.103-1.el7.elrepo.x86_64

yum remove -y kernel-lt-5.4.103-1.el7.elrepo.x86_64

卸载完后不一定需要重启
检查卸载后内核版本

[root@localhost ~]# rpm -qa | grep kernel
kernel-headers-3.10.0-1160.15.2.el7.x86_64
kernel-devel-3.10.0-1160.49.1.el7.x86_64
kernel-tools-libs-3.10.0-957.el7.x86_64 kernel-3.10.0-957.el7.x86_64
kernel-ml-4.9.9-1.el7.elrepo.x86_64 kernel-tools-3.10.0-957.el7.x86_64

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果您想在CentOS 8上安装Python 3.6,有两种方法可以使用yum或dnf软件包管理器。在使用这些管理器之前,请确保您具有管理员访问权限。 方法1:使用yum安装Python 3.6 1.安装EPEL存储库 yum install epel-release 2.安装Python3.6 yum install python36 3.查看Python版本号 python3.6 -V 方法2:使用dnf安装Python 3.6 1.启用PowerTools仓库 dnf config-manager --set-enabled PowerTools 2.安装Python3.6 dnf install python3.6 3.查看Python版本号 python3.6 -V 以上两种方法均可在CentOS 8上安装Python3.6,您可以根据自己的需要选择其中一种。使用yum或dnf软件包管理器安装Python 3.6非常方便,并且可以轻松地配置和管理Python解释器。 ### 回答2: CentOS 8作为一个基于Red Hat Enterprise Linux 8开发的Linux发行版,标配的Python版本为Python 3.6以上,所以我们不需要进行安装即可使用。但是,有些特定的项目或应用程序需要安装Python 3.6及以上版本来进行开发和运行。下面以CentOS 8系统为例,介绍安装Python 3.6的方法。 使用YUM安装Python 3.6: 1.首先,通过更新yum仓库,使其更新到最新: sudo dnf update 2.安装Python 3.6的依赖项: sudo dnf install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel xz-devel 3.下载并安装Python 3.6代码: wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz tar xzf Python-3.6.5.tgz cd Python-3.6.5 ./configure --enable-optimizations make altinstall 注意:使用“altinstall”而不是“install”,因为后者将覆盖系统默认的Python版本。 4.验证Python 3.6安装是否成功: python3.6 -V 如果控制台输出Python 3.6.5,则说明已正确安装Python 3.6。 使用dnf安装Python 3.6: 1.添加dnf: sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm 2.启用Remi库: sudo dnf module reset -y python38 sudo dnf module enable python38:remi 3.安装Python 3.6: sudo dnf install python36 4.验证Python 3.6安装是否成功: python3.6 -V 如果控制台输出Python 3.6.5,则说明已正确安装Python 3.6。 注意:如果您想在系统上同时拥有多个Python版本,建议使用Python虚拟环境来管理它们。虚拟环境可完全隔离不同的Python版本和依赖项,方便程序员进行不同版本Python代码的开发、部署和测试。 ### 回答3: 安装Python3.6是CentOS 8的一项基本操作,因为Python 3.6是面向对象编程中最流行的语言之一,有很多应用和库都是使用Python 3.6编写的。要安装Python 3.6的方法有很多种,但是本文将介绍最简单的方法:使用yum/dnf命令来安装Python 3.6的rpm包。 步骤1:更新系统 在安装Python 3.6之前,建议更新你的CentOS 8系统。可以输入以下命令来更新软件包库中的所有软件: sudo dnf update 步骤2:添加EPEL和额外的软件包库 要安装Python 3.6,必须添加EPEL和额外的软件包库。可以使用以下命令进行安装: sudo dnf install epel-release sudo dnf config-manager --set-enabled PowerTools 步骤3:安装Python 3.6.rpm包 已经更新过软件包库并添加了必要的软件包库,可以输入以下命令来安装Python 3.6的rpm包: sudo dnf install python36 步骤4:验证安装 在安装完成后,可以通过输入以下命令来测试Python 3.6是否已成功安装: python3.6 -V 输出的结果应该如下: Python 3.6.x 如果成功安装且输出与预期相同,则说明Python 3.6已经成功安装。 总结: 在CentOS 8上安装Python 3.6非常简单,只需要运行上述命令即可完成安装。当然,如果需要安装其他版本的Python,可以下载代码自行编译安装。无论你选择哪种方法,Python 3.6都是一门非常方便的编程语言,在任何领域都非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值