Linux-升级内核

2022-05-04  本文已影响0人  日垒一砖

将CentOS系统上Linux Kernel从3.10.0升级至5.4.x

执行步骤

yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

yum repolist
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-lt

yum install -y --enablerepo="elrepo-kernel"  kernel-lt-5.4.191-1.el7.elrepo.x86_64
grub2-editenv list

grub2-set-default 5.4.191-1.el7.elrepo.x86_64

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

# check
grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2
grub2-editenv list
image.png
shutdown -r
image.png

附录

验证环境

# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
# uname -r
3.10.0-957.27.2.el7.x86_64
image.png

参考文档

Update Centos Kernel 3.10 to 5.13 latest

How to Upgrade the Linux Kernel on CentOS 7

CentOS7 Docker容器无法ping通宿主机ip问题解决记录 - 平台梦

Centos7升级内核 - 野草博客

Linux 内核升级_Andy杨的博客-CSDN博客_linux内核升级工具

升级 CentOS7.9 的内核版本 - 爱吃桔子的程序羊

下载离线内核rpm包

yum -y install yum-utils

repotrack --arch=x86_64 --repoid=elrepo-kernel  kernel-lt-5.4.191-1.el7.elrepo.x86_64

ls -alh kernel-lt-5.4.191-1.el7.elrepo.x86_64.rpm
image.png
#!/usr/bin/env bash

echo "start $(date)"

cd $HOME
mkdir -p kernel-lt-5.4.191
cd kernel-lt-5.4.191/

repotrack --arch=x86_64 --repoid=elrepo-kernel  kernel-lt-5.4.191-1.el7.elrepo.x86_64

echo "end: $(date)"

ansible playbook

- name: Upgrade Linux Kernel
  hosts: nodes
  vars:
    pkg_kernel: kernel-lt-5.4.191.x86_64.tar.gz
    version_kernel: 5.4.191-1.el7.elrepo.x86_64
    dir_work: /tmp/
    dir_kernel: '{{dir_work}}/kernel-lt-5.4.191.x86_64'
  tasks:
  - debug: 
      msg: "OS distribution: {{ansible_facts['distribution']}}"
    failed_when: "'CentOS' != ansible_distribution"
  - debug:
      msg: "OS distribution_major_version: {{ansible_distribution_major_version}}"
    failed_when: ansible_facts['distribution_major_version'] != "7"
  
  - name: Check if new Kernel has been installed
    shell: grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2
    become: true
    register: grup_info
  - debug:
      msg: "{{grup_info.stdout_lines}}"
    # failed_when: "version_kernel in grup_info.stdout"
  
  - name: Install new kernel
    block:
    - name: create work dir
      file:
        path: '{{dir_work}}'
        owner: '{{ansible_user}}'
        group: '{{ansible_user}}'
        state: directory
      become: true
    - name: Transport and unarchive {{pkg_kernel}} to
      unarchive:
        src: "{{pkg_kernel}}"
        dest: '{{dir_work}}'
    - name: Install new kernel
      shell: yum -y install $(ls)
      become: true
      args:
        chdir: "{{dir_kernel}}"
    when: "version_kernel not in grup_info.stdout"
  
  - name: Show default kernel version
    shell: grub2-editenv list
    become: true
    register: grub_default_info
  - debug:
      msg: "{{grub_default_info.stdout_lines}}" 
    failed_when: "version_kernel in grub_default_info.stdout"

  - name: Set default kernel as new one
    shell: grub2-set-default {{version_kernel}}
    args:
      executable: /bin/bash
    become: true
  - name: grub2-mkconfig
    shell: grub2-mkconfig -o /boot/grub2/grub.cfg
    args:
      executable: /bin/bash
    become: true
  
  - debug: 
      msg: "now the new kernel is installed and configured, start to reboot."

注:kernel-lt-5.4.191.x86_64.tar.gz为kernel离线rpm文件的压缩包

上一篇 下一篇

猜你喜欢

热点阅读