[Linux]CentOS7.6更新内核

环境

  • 平台:virtualbox虚拟机
  • 系统:CentOS 7.6
  • 旧内核:3.10.0-957.5.1.el7.x86_64
  • 安装的新内核:4.4.176-1.el7.elrepo.x86_64

步骤

  1. 查看当前内核

    1
    uname -a
  2. 查看系统版本

    1
    cat /etc/redhat-release
  3. 查看已安装的内核

    1
    rpm -qa | grep kernel

    已安装的内核图片

  4. 查看是否有关于内核的源,elrepo(RPM repository for Enterprise Linux package),其实是个企业级Linux的仓库,这里只用到内核包,所以称为内核源

    1
    yum repolist

    repolist图片

  5. 安装内核源,官网 http://elrepo.org/tiki/tiki-index.php

    1
    yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

    安装完后重新执行yum repolist就能看到内核源已经安装好了
    已安装内核源图片

  6. 查看内核源配置文件,会发现针对内核的仓库是默认关闭的,enable属性的值为0,所以要不就是设置为1,要不就是yum搜索、查询、安装的时候加上--enablerepo=elrepo-kernel参数

    1
    cat /etc/yum.repos.d/elrepo.repo

    内核仓库关闭图片

  7. 查看新的内核包,lt表示longterm(长时间支持版本),ml表示mainline(主线版本),一般服务端的话还是longterm,出了问题能获得更多的官方支持

    1
    yum search --enablerepo=elrepo-kernel lt

    yum搜索内核包图片

  8. 查看kernel-lt和kernel-ml的信息,可以发现当前lt版本是4.4.176,而ml版本是5.0.0。在写这篇文章的前一天看还只是4.10.xxx,隔一天就有5.0.0版本,哈哈哈,但是我还是装的lt版本

    1
    yum info --enablerepo=elrepo-kernel kernel-lt kernel-ml

    kernel-lt信息图片

  9. 删除旧版本的kernel-tools和kernel-tools-libs,不然在安装时会出现包冲突错误

    1
    yum remove kernel-tools-3.10.0-957.5.1.el7.x86_64 kernel-tools-libs-3.10.0-957.5.1.el7.x86_64

    不删除出现的错误如下
    不删除tools和tools-libs包的冲突错误图片

  10. 安装kernel-lt、kernel-lt-headers、kernel-lt-devel、kernel-lt-tools、kernel-lt-tools-libs,其中只安装kernel系统就能跑了,其他的有可能其他软件需要使用到的而已,看个人选择。文章后面有不同包的一些说明

    1
    yum install --enablerepo=elrepo-kernel -y kernel-lt kernel-lt-headers kernel-lt-devel kernel-lt-tools kernel-lt-tools-libs
  11. 查看当前可用的内核列表

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

    可用内核列表图片

  12. 查看当前使用的内核,查看GRUB_DEFAULT属性,该值对应的数字就是第11步内核列表前面的序号,这里是save,表示上次开机记住的,由于之前还没有新的内核,所以这里是使用1 : CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)这个版本的内核

    1
    cat /etc/default/grub

    当前使用的内核图片

  13. 如果当前使用的内核不是所希望的,可使用grub2-set-default命令进行设置,不要直接修改/etc/default/grub文件,这里设置为0表示下次重启使用0 : CentOS Linux (4.4.176-1.el7.elrepo.x86_64) 7 (Core)这个内核(PS:如果是CentOS 7.0以下的,使用grub来做系统引导的)

    1
    grub2-set-default 0
  14. 重启,使内核配置生效

    1
    reboot
  15. 重新查看内核版本,就会发现内核已经是刚刚下载的4.4.176内核(kernel-lt版本)

    1
    uname -a
  16. 删除旧内核(可选操作),通过rpm -qa | grep kernel查看已有内核,接着使用yum remove进行删除

    1
    yum remove kernel-3.10.0-957.5.1.el7.x86_64 kernel-devel-3.10.0-957.5.1.el7.x86_64
  17. 重建grub2的配置文件(可选操作)

    1
    grub2-mkconfig -o /boot/grub2/grub.cfg

    这时重新查看可用的内核列表,就没有了旧内核可以选择了
    可用内核列表


内核相关的包说明

  • kernel-lt
    • The Linux kernel. (The core of any Linux-based operating system.)
    • 最核心的包,所有Linux系统的基础
  • kernel-lt-devel
    • Development package for building kernel modules to match the kernel.
    • 内核开发包,更多是提供给内核开发人员开发内核的一些功能模块
  • kernel-lt-doc
    • Various bits of documentation found in the kernel sources.
    • 内核包的指引文档
  • kernel-lt-headers
    • Header files of the kernel, for use by glibc.
    • 内核的头文件,一般其他应用需要调用内核能力就要引入这些头文件
  • kernel-lt-tools
    • Assortment of tools for the kernel.
    • 内核级别的一些工具
  • kernel-lt-tools-libs
    • Libraries for the kernel tools.
    • 内核级别工具所依赖的包
  • kernel-lt-tools-libs-devel
    • Development package for the kernel tools libraries.
    • 内核级别工具开发所需的依赖包

(•̀ᴗ•́)و ̑̑

Share