因为要安装K8S集群的缘故,想在安装前把Linux内核升级到主线最新版本

  • 第一步. 升级前版本为:

    1
    2
    $ uname -a
    Linux kube-node1 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  • 第二步. 导入公钥、安装软件库

    1
    2
    3
    4
    5
    6
    $ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    $ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    取http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    准备中... ################################# [100%]
    正在升级/安装...
    1:elrepo-release-7.0-3.el7.elrepo ################################# [100%]
  • 第三步. 列出可用的内核包

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $ yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    加载插件:fastestmirror
    elrepo-kernel | 2.9 kB 00:00:00
    elrepo-kernel/primary_db | 1.7 MB 00:00:02
    Determining fastest mirrors
    * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
    可安装的软件包
    kernel-lt.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
    kernel-lt-devel.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
    kernel-lt-doc.noarch 4.4.113-1.el7.elrepo elrepo-kernel
    kernel-lt-headers.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
    kernel-lt-tools.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
    kernel-lt-tools-libs.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
    kernel-lt-tools-libs-devel.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
    kernel-ml.x86_64 4.14.15-1.el7.elrepo elrepo-kernel
    kernel-ml-devel.x86_64 4.14.15-1.el7.elrepo elrepo-kernel

    $ yum --enablerepo=elrepo-kernel install kernel-ml #安装主线版本
    --> 正在检查事务
    ---> 软件包 kernel-ml.x86_64.0.4.14.15-1.el7.elrepo 将被 安装
    --> 解决依赖关系完成

    依赖关系解决

    ======================================================================================$====================
    Package 架构 版本 源 大小
    ======================================================================================$====================
    正在安装:
    kernel-ml x86_64 4.14.15-1.el7.elrepo elrepo-kernel 43 M

    事务概要
    ==========================================================================================================
    安装 1 软件包
  • 第四步. 设置GRUB默认启动的内核版本

    1
    2
    3
    4
    5
    6
    7
    8
    $ cat /etc/default/grub
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
    GRUB_DISABLE_RECOVERY="true"
    • 默认GRUB_DEFAULT值是saved
    • GRUB2从环境变量 /boot/grub2/grubenv中LOAD内核定义

      1
      2
      3
      cat /boot/grub2/grubenv 
      # GRUB Environment Block
      saved_entry=CentOS Linux (4.4.159-1.el7.elrepo.x86_64) 7 (Core)
    • grub2-set-default命令可以升级 GRUB2的环境变量

    • 默认情况下新装的内核会被自动设置成默认启动内核,但我发现如果在大版本升级有刚有时则不会

      1
      2
      3
      4
      5
      6
      7
      cat /etc/sysconfig/kernel 
      # UPDATEDEFAULT specifies if new-kernel-pkg should make
      # new kernels the default
      UPDATEDEFAULT=yes

      # DEFAULTKERNEL specifies the default kernel package type
      DEFAULTKERNEL=kernel
    • 更改启动内核

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      $ awk -F\' /^menuentry/{print\$2} /etc/grub2.cfg
      CentOS Linux (4.4.159-1.el7.elrepo.x86_64) 7 (Core)
      CentOS Linux (3.10.0-862.14.4.el7.x86_64) 7 (Core)
      CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
      CentOS Linux (0-rescue-b8276906e93a4616bbc11991a0924085) 7 (Core)

      $ grub2-set-default CentOS Linux (4.4.159-1.el7.elrepo.x86_64) 7 (Core)

      $ cat /boot/grub2/grubenv
      # GRUB Environment Block
      saved_entry=CentOS Linux (4.4.159-1.el7.elrepo.x86_64) 7 (Core)
  • 第五步. 重新创建内核配置

    1
    2
    3
    4
    5
    6
    7
    $ grub2-mkconfig -o /boot/grub2/grub.cfg
    $ systemctl reboot

    $ uname -a
    Linux kube-node1 4.14.15-1.el7.elrepo.x86_64 #1 SMP Tue Jan 23 20:28:26 EST 2018 x86_64 x86_64 x86_64 GNU/Linux

    yum autoremove kernel-3.10.0-327.28.3.el7.x86_64 #删除旧内核

最后更新: 2023年08月27日 03:06

原始链接: https://blog.icanwen.com/2018/01/26/centos7_upgrade/