CentOS7.9升级3.10内核至5.4

打印 上一主题 下一主题

主题 681|帖子 681|积分 2043

CentOS7.9升级3.10内核至5.4

在 CentOS 使用过程中,不免需要升级内核,但有时候因为源码编译依赖题目,不一定全部步伐都支持最新内核版本,所以以下将介绍三种升级内核方式。
关于内核种类:
kernel-ml 中的ml是英文【 mainline stable 】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。
kernel-lt 中的lt是英文【 long term support 】的缩写,elrepo-kernel中罗列出来的长期支持版本。
YUM

检查内核版本

  1. uname -r
复制代码
  1. [root@node1 ~]# uname -r
  2. 3.10.0-1160.119.1.el7.x86_64
复制代码
表现为3.10,查看关于内核的包
  1. rpm -qa |grep kernel
复制代码
  1. [root@node1 ~]# rpm -qa |grep kernel
  2. kernel-3.10.0-1160.119.1.el7.x86_64kernel-3.10.0-1160.el7.x86_64kernel-tools-libs-3.10.0-1160.119.1.el7.x86_64kernel-tools-3.10.0-1160.119.1.el7.x86_64
复制代码
添加阿里源

  1. cat <<EOF > /etc/yum.repos.d/elrepo.repo
  2. [elrepo]
  3. name=elrepo
  4. baseurl=https://mirrors.aliyun.com/elrepo/archive/kernel/el7/x86_64
  5. gpgcheck=0
  6. enabled=1
  7. EOF
复制代码
重修yum缓存

  1. yum clean all && yum makecache
复制代码
查看yum堆栈中的内核包

  1. yum list --showduplicate kernel*
复制代码
安装内核

  1. yum install -y kernel-lt kernel-lt-devel
复制代码
查看启动内核

  1. cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
复制代码
  1. [root@node1 ~]# cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
  2. awk: warning: escape sequence `\'' treated as plain `''0 : CentOS Linux (5.4.278-1.el7.elrepo.x86_64) 7 (Core)1 : CentOS Linux (3.10.0-1160.119.1.el7.x86_64) 7 (Core)2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)3 : CentOS Linux (0-rescue-89ca0c0544ae4eabb7417e2850f8025d) 7 (Core)
复制代码
设置启动内核

  1. grub2-set-default 0
复制代码
重启,查看是否见效
  1. reboot
  2. uname -r
复制代码
RPM

检查内核版本

  1. uname -r
复制代码
查找版本

因 ELRepo 源都是最新版本,所以旧版本内核只能手动下载。
查找 kernel rpm 历史版:
http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/
下载文件

  1. wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm
  2. wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm
  3. wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm
复制代码
安装内核

  1. rpm -ivh kernel-lt-4.4.215-1.el7.elrepo.x86_64.rpm
  2. rpm -ivh kernel-lt-devel-4.4.215-1.el7.elrepo.x86_64.rpm
  3. # 或者一键安装所有
  4. rpm -Uvh *.rpm
复制代码
查看启动内核

  1. [root@node1 ~]# rpm -qa | grep kernel
  2. kernel-3.10.0-1160.119.1.el7.x86_64
  3. kernel-3.10.0-1160.el7.x86_64
  4. kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64
  5. kernel-lt-5.4.226-1.el7.elrepo.x86_64
  6. kernel-tools-libs-3.10.0-1160.119.1.el7.x86_64
  7. kernel-tools-3.10.0-1160.119.1.el7.x86_64
  8. kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64
复制代码
设置启动内核

查看启动顺序
  1. cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
复制代码
  1. [root@node1 ~]# cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
  2. awk: warning: escape sequence `\'' treated as plain `''0 : CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)1 : CentOS Linux (3.10.0-1160.119.1.el7.x86_64) 7 (Core)2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)3 : CentOS Linux (0-rescue-89ca0c0544ae4eabb7417e2850f8025d) 7 (Core)
复制代码
设置启动顺序
  1. grub2-set-default 0
复制代码
重启见效
  1. reboot
复制代码
源码安装

安装核心软件包

  1. yum install -y gcc make git ctags ncurses-devel openssl-devel
  2. yum install -y bison flex elfutils-libelf-devel bc
复制代码
创建内核编译目录

使用 home 下的 kernelbuild 目录
  1. mkdir ~/kernelbuild
复制代码
获取内核源码

清华大学镜像站:https://mirror.tuna.tsinghua.edu.cn/kernel/
其他源码安装包下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/
   linux-4.xx.xx.tar.xz
linux-4.xx.xx.tar.gz
这两个格式都可以的,tar.xz压缩率更高,文件更小。
  在线下载:
  1. wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.266.tar.xz
复制代码
解压内核代码

将其解压后进入源码目录:
  1. tar -xvJf linux-5.4.266.tar.xz
复制代码
为确保内核树绝对干净,进入内核目录并实行 make mrproper 命令:
  1. cd linux-5.4.266
  2. make clean && make mrproper
复制代码
内核配置

复制当前的内核配置文件
config-3.10.0-1160.el7.x86_64是我当前环境的内核配置文件,根据实际情况修改
  1. cp /boot/config-3.10.0-1160.el7.x86_64 .config
复制代码
高级配置
y 是启用, n 是禁用, m 是需要时启用.
  1. make menuconfig  # 老的 ncurses 界面,被 nconfig 取代
  2. make nconfig  # 新的命令行 ncurses 界面
复制代码
编译和安装

编译内核
如果你是四核的机器,x可以是8
  1. make -j x
复制代码
安装内核
编译完内核后安装:Warning: 从这里开始,需要 root 权限实行命令,否则会失败.
  1. make modules_install install
复制代码
查看启动内核

  1. [root@localhost ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
  2. CentOS Linux (4.17.11-1.el7.elrepo.x86_64) 7 (Core)
  3. CentOS Linux (4.9.9-1.el7.elrepo.x86_64) 7 (Core)
  4. CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
  5. CentOS Linux (0-rescue-b91f945269084aa98e8257311ee713c5) 7 (Core)
复制代码
设置启动内核

  1. grub2-set-default 0
复制代码
重启见效
  1. reboot
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

伤心客

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表