Linux-升级内核
2022-05-04 本文已影响0人
日垒一砖
将CentOS系统上Linux Kernel从3.10.0升级至5.4.x
执行步骤
- 配置ELRepo仓库
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问题解决记录 - 平台梦
Linux 内核升级_Andy杨的博客-CSDN博客_linux内核升级工具
下载离线内核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文件的压缩包