【openEuler】内核热升级


一、实验要求

1、硬件要求

  • 目前仅支持arm64架构

2、环境要求

  • 操作系统openEuler-22.03-LTS-everything-aarch64

3、软件要求

所需材料
下载链接
openEuler-22.03-LTS-everything-aarch64-dvd.isohttps://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS/ISO/aarch64/openEuler-22.03-LTS-everything-aarch64-dvd.iso
kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpmhttps://repo.openeuler.org/openEuler-22.09/everything/aarch64/Packages/kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpmhttps://repo.openeuler.org/openEuler-22.09/everything/aarch64/Packages/kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpm

4、参考资料

安装与部署 (openeuler.org)

openEuler内核热升级介绍(2022-10-11)_哔哩哔哩_bilibili

终于有论坛了内核热升级相关的内容可以在这里更新和提问了 - 互助交流区 - openEuler 论坛

【openEuler 21.03】kernel rpm包安装失败 报错需要headers · Issue #I3AIZP · openEuler/kernel - Gitee.com

update2101补丁版本内核升级失败 · Issue #I2O8M4 · src-openEuler/kernel - Gitee.com

二、实验准备

1、安装openEuler-22.03-LTS

​ 查看以下内核版本

[root@openEuler2203 ~]# uname -r
5.10.0-60.18.0.50.oe2203.aarch64
[root@openEuler2203 ~]#

2、根据软件要求里的表格下载所需材料

[root@openEuler2203 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS/ISO/aarch64/openEuler-22.03-LTS-everything-aarch64-dvd.iso
--2023-01-17 10:53:43--  https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-22.03-LTS/ISO/aarch64/openEuler-22.03-LTS-everything-aarch64-dvd.iso

[root@openEuler2203 ~]# wget https://repo.openeuler.org/openEuler-22.09/everything/aarch64/Packages/kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
--2023-01-17 10:53:52--  https://repo.openeuler.org/openEuler-22.09/everything/aarch64/Packages/kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
正在解析主机 repo.openeuler.org (repo.openeuler.org)... 49.0.230.196
正在连接 repo.openeuler.org (repo.openeuler.org)|49.0.230.196|:443... 已连接。
已发出 HTTP 请求正在等待回应... 200 OK
长度40952781 (39M) [application/x-redhat-package-manager]
正在保存至: “kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm”

kernel-5.10.0-106.18.0.68.oe2 100%[=================================================>]  39.05M   957KB/s  用时 15s

2023-01-17 10:54:07 (2.59 MB/s) - 已保存 “kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm” [40952781/40952781])

[root@openEuler2203 ~]# wget https://repo.openeuler.org/openEuler-22.09/everything/aarch64/Packages/kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
--2023-01-17 10:54:48--  https://repo.openeuler.org/openEuler-22.09/everything/aarch64/Packages/kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
正在解析主机 repo.openeuler.org (repo.openeuler.org)... 49.0.230.196
正在连接 repo.openeuler.org (repo.openeuler.org)|49.0.230.196|:443... 已连接。
已发出 HTTP 请求正在等待回应... 200 OK
长度14167393 (14M) [application/x-redhat-package-manager]
正在保存至: “kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpm”

kernel-devel-5.10.0-106.18.0. 100%[=================================================>]  13.51M  1.17MB/s  用时 6.3s


2023-01-17 10:54:55 (2.15 MB/s) - 已保存 “kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpm” [14167393/14167393])

[root@openEuler2203 ~]#

3、挂载iso文件并配置

1、挂载openEuler的iso文件

[root@openEuler2203 ~]# mount openEuler-22.03-LTS-everything-aarch64-dvd.iso /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
[root@openEuler2203 ~]#

2配置本地yum源

[root@openEuler2203 ~]# vim /etc/yum.repos.d/local.repo

​ 配置内容如下

[local]
name=local
baseurl=file:///mnt
gpgcheck=1
enabled=1

3将RPM数字签名的GPG公钥导入系统

[root@openEuler2203 ~]# rpm --import /mnt/RPM-GPG-KEY-openEuler
[root@openEuler2203 ~]#

4、确认安装的系统版本并且关闭selinux

​ 运行以下命令

[root@openEuler2203 ~]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"

[root@openEuler2203 ~]#

1关闭selinux

[root@openEuler2203 ~]# setenforce Permissive
[root@openEuler2203 ~]#

2更新selinux配置

[root@openEuler2203 ~]# vim /etc/selinux/config

​ 修改以下配置项

SELINUX=permissive

5、安装nvwa并确认版本

1安装nvwa

[root@openEuler2203 ~]# dnf install nvwa -y
local                                                                                    94 MB/s |  16 MB     00:00
Last metadata expiration check: 0:00:05 ago on 2023年01月17日 星期二 11时03分24秒.
Dependencies resolved.
========================================================================================================================
 Package                     Architecture             Version                             Repository               Size
========================================================================================================================
Installing:
 nvwa                        aarch64                  0.2-3.oe2203                        update                  1.8 M
Installing dependencies:
 criu                        aarch64                  3.16.1-2.oe2203                     local                   480 k
 libnet                      aarch64                  1.2-1.oe2203                        local                    43 k
 protobuf-c                  aarch64                  1.4.0-2.oe2203                      update                  113 k

Transaction Summary
========================================================================================================================
Install  4 Packages

Total size: 2.4 M
Total download size: 1.9 M
Installed size: 9.1 M
Downloading Packages:
(1/2): protobuf-c-1.4.0-2.oe2203.aarch64.rpm                                            1.2 MB/s | 113 kB     00:00
(2/2): nvwa-0.2-3.oe2203.aarch64.rpm                                                    7.1 MB/s | 1.8 MB     00:00
------------------------------------------------------------------------------------------------------------------------
Total                                                                                   7.5 MB/s | 1.9 MB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                1/1
  Installing       : protobuf-c-1.4.0-2.oe2203.aarch64                                                              1/4
  Installing       : libnet-1.2-1.oe2203.aarch64                                                                    2/4
  Running scriptlet: libnet-1.2-1.oe2203.aarch64                                                                    2/4
  Installing       : criu-3.16.1-2.oe2203.aarch64                                                                   3/4
  Installing       : nvwa-0.2-3.oe2203.aarch64                                                                      4/4
  Running scriptlet: nvwa-0.2-3.oe2203.aarch64                                                                      4/4
  Verifying        : criu-3.16.1-2.oe2203.aarch64                                                                   1/4
  Verifying        : libnet-1.2-1.oe2203.aarch64                                                                    2/4
  Verifying        : nvwa-0.2-3.oe2203.aarch64                                                                      3/4
  Verifying        : protobuf-c-1.4.0-2.oe2203.aarch64                                                              4/4

Installed:
  criu-3.16.1-2.oe2203.aarch64 libnet-1.2-1.oe2203.aarch64 nvwa-0.2-3.oe2203.aarch64 protobuf-c-1.4.0-2.oe2203.aarch64

Complete!
[root@openEuler2203 ~]#

​ 检查版本

[root@openEuler2203 ~]# rpm -qi nvwa
Name        : nvwa
Version     : 0.2
Release     : 3.oe2203
Architecture: aarch64
Install Date: 2023年01月17日 星期二 11时03分34秒
Group       : Unspecified
Size        : 7325772
License     : MulanPSL-2.0 and Apache-2.0 and MIT and MPL-2.0
Signature   : RSA/SHA1, 2023年01月11日 星期三 15时07分50秒, Key ID d557065eb25e7f66
Source RPM  : nvwa-0.2-3.oe2203.src.rpm
Build Date  : 2023年01月11日 星期三 15时08分30秒
Build Host  : obs-worker-backend-test-arm-0005
Packager    : http://openeuler.org
Vendor      : http://openeuler.org
URL         : https://gitee.com/openeuler/nvwa
Summary     : a tool used for openEuler kernel update
Description :
A tool used to automate the process of seamless update of the openEuler.
[root@openEuler2203 ~]#

2安装其他相关工具

[root@openEuler2203 ~]# dnf install criu kexec-tools -y
Last metadata expiration check: 0:01:09 ago on 2023年01月17日 星期二 11时03分36秒.
Package criu-3.16.1-2.oe2203.aarch64 is already installed.
Package kexec-tools-2.0.23-4.oe2203.aarch64 is already installed.
Dependencies resolved.
========================================================================================================================
 Package                      Architecture             Version                            Repository               Size
========================================================================================================================
Upgrading:
 kexec-tools                  aarch64                  2.0.23-8.oe2203                    update                  339 k

Transaction Summary
========================================================================================================================
Upgrade  1 Package

Total download size: 339 k
Downloading Packages:
kexec-tools-2.0.23-8.oe2203.aarch64.rpm                                                 2.9 MB/s | 339 kB     00:00
------------------------------------------------------------------------------------------------------------------------
Total                                                                                   2.9 MB/s | 339 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                1/1
  Running scriptlet: kexec-tools-2.0.23-8.oe2203.aarch64                                                            1/1
  Upgrading        : kexec-tools-2.0.23-8.oe2203.aarch64                                                            1/2
  Running scriptlet: kexec-tools-2.0.23-8.oe2203.aarch64                                                            1/2
  Running scriptlet: kexec-tools-2.0.23-4.oe2203.aarch64                                                            2/2
  Cleanup          : kexec-tools-2.0.23-4.oe2203.aarch64                                                            2/2
  Running scriptlet: kexec-tools-2.0.23-4.oe2203.aarch64                                                            2/2
  Verifying        : kexec-tools-2.0.23-8.oe2203.aarch64                                                            1/2
  Verifying        : kexec-tools-2.0.23-4.oe2203.aarch64                                                            2/2

Upgraded:
  kexec-tools-2.0.23-8.oe2203.aarch64

Complete!
[root@openEuler2203 ~]#

3运行nvwa

[root@openEuler2203 ~]# systemctl enable nvwa
Created symlink /etc/systemd/system/nvwa.service → /usr/lib/systemd/system/nvwa.service.
Created symlink /etc/systemd/system/multi-user.target.wants/nvwa.service → /usr/lib/systemd/system/nvwa.service.
[root@openEuler2203 ~]# systemctl start nvwa
[root@openEuler2203 ~]# systemctl status nvwa
● nvwa.service - NVWA server
     Loaded: loaded (/usr/lib/systemd/system/nvwa.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2023-01-17 11:06:11 CST; 11s ago
   Main PID: 5687 (nvwa)
      Tasks: 7 (limit: 5552)
     Memory: 10.5M
     CGroup: /system.slice/nvwa.service
             └─5687 /usr/bin/nvwa -server 1

117 11:06:11 openEuler2203 systemd[1]: Starting NVWA server...
117 11:06:11 openEuler2203 systemd[1]: Started NVWA server.
[root@openEuler2203 ~]#

6、安装内核RPM包

​ 刚刚下载了两个内核RPM包

[root@openEuler2203 ~]# ll | grep "kernel"
-rw-r--r--. 1 root root  40M  930 09:12 kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
-rw-r--r--. 1 root root  14M  930 09:06 kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
[root@openEuler2203 ~]#

​ 首先安装kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm

[root@openEuler2203 ~]# rpm -ivh kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:kernel-5.10.0-106.18.0.68.oe2209 ################################# [100%]
Error! echo
Your kernel headers for kernel 5.10.0-106.18.0.68.oe2209.aarch64 cannot be found at
/lib/modules/5.10.0-106.18.0.68.oe2209.aarch64/build or /lib/modules/5.10.0-106.18.0.68.oe2209.aarch64/source.
Error! echo
Your kernel headers for kernel 5.10.0-106.18.0.68.oe2209.aarch64 cannot be found at
/lib/modules/5.10.0-106.18.0.68.oe2209.aarch64/build or /lib/modules/5.10.0-106.18.0.68.oe2209.aarch64/source.
[root@openEuler2203 ~]#

​ 根据update2101补丁版本内核升级失败 · Issue #I2O8M4 · src-openEuler/kernel - Gitee.com文章的说明环境上安装了dkms并且用dkms编译了kmod-kvdo。然后在升级kernel的时候,不同时升级kernel-devel包才会复现。

​ 所以我才说要下载kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpm这个包

[root@openEuler2203 ~]# rpm -ivh kernel-devel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:kernel-devel-5.10.0-106.18.0.68.o################################# [100%]
[root@openEuler2203 ~]#

​ 然后再安装kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm就不会报错了。

[root@openEuler2203 ~]# rpm -ivh kernel-5.10.0-106.18.0.68.oe2209.aarch64.rpm
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
        软件包 kernel-5.10.0-106.18.0.68.oe2209.aarch64 已经安装
[root@openEuler2203 ~]#

​ 然后查看一下/boot目录

[root@openEuler2203 ~]# ll /boot
总用量 108M
-rw-r--r--. 1 root root 180K  924 08:00 config-5.10.0-106.18.0.68.oe2209.aarch64
-rw-r--r--. 1 root root 179K  327  2022 config-5.10.0-60.18.0.50.oe2203.aarch64
drwxr-xr-x. 2 root root 4.0K  216  2022 dracut
drwxr-xr-x. 2 root root 4.0K  117 11:10 dtb-5.10.0-106.18.0.68.oe2209.aarch64
drwxr-xr-x. 2 root root 4.0K  115 22:18 dtb-5.10.0-60.18.0.50.oe2203.aarch64
drwx------. 3 root root 4.0K  11  1970 efi
drwx------. 2 root root 4.0K  115 22:20 grub2
-rw-------. 1 root root  24M  117 11:11 initramfs-5.10.0-106.18.0.68.oe2209.aarch64.img
-rw-------. 1 root root  25M  115 22:20 initramfs-5.10.0-60.18.0.50.oe2203.aarch64.img
-rw-------. 1 root root  30M  115 22:21 initramfs-5.10.0-60.18.0.50.oe2203.aarch64kdump.img
drwxr-xr-x. 3 root root 4.0K  115 22:18 loader
drwx------. 2 root root  16K  115 22:13 lost+found
-rw-r--r--. 1 root root 283K  924 08:00 symvers-5.10.0-106.18.0.68.oe2209.aarch64.gz
-rw-r--r--. 1 root root 282K  327  2022 symvers-5.10.0-60.18.0.50.oe2203.aarch64.gz
-rw-r--r--. 1 root root 4.8M  924 08:00 System.map-5.10.0-106.18.0.68.oe2209.aarch64
-rw-r--r--. 1 root root 4.7M  327  2022 System.map-5.10.0-60.18.0.50.oe2203.aarch64
-rwxr-xr-x. 1 root root  11M  924 08:00 vmlinuz-5.10.0-106.18.0.68.oe2209.aarch64
-rwxr-xr-x. 1 root root  10M  327  2022 vmlinuz-5.10.0-60.18.0.50.oe2203.aarch64
[root@openEuler2203 ~]#

三、用nvwa进行热升级

​ 我们先来看看nvwa的用法

[root@openEuler2203 ~]# nvwa help
NAME:
   nvwa - a tool used for openEuler kernel update.     # 用于openEuler内核更新的工具

USAGE:
   nvwa [global options] command [command options] [arguments...]

COMMANDS:
   update   specify kernel version for nvwa to update
   init     init nvwa running environment
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h  show help (default: false)
[root@openEuler2203 ~]#

翻译如下

姓名
	nvwa-用于openEuler内核更新的工具。
用法
	nvwa[全局选项]命令[命令选项][参数…]
命令
	update   指定要更新的nvwa内核版本
	init     init nvwa运行环境
	helph  显示命令列表或一个命令的帮助
全局选项
	--help-h显示帮助默认值false

​ 然后用update更新

[root@openEuler2203 ~]# nvwa update 5.10.0-106.18.0.68.oe2209.aarch64

​ 然后系统会重启然后对比以下前后版本

[root@openEuler2203 ~]# uname -r
5.10.0-60.18.0.50.oe2203.aarch64
[root@openEuler2203 ~]# uname -r
5.10.0-106.18.0.68.oe2209.aarch64
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6