
Linuxカーネルアップグレードガイド - CVE-2026-64561の修正
声明: 本文仅记录本人服务器环境下的修复过程,并非安全专业分析。如有不当之处,欢迎指正。
本文档提供两种方式将 Linux Kernel 升级,用于修复 CVE-2026-64561:ELRepo RPM 安装(推荐)和源码编译。
| 项目 | 说明 |
|---|---|
| CVE 编号 | CVE-2026-64561 |
| 漏洞组件 | Linux Kernel KVM/x86 |
| 修复方式 | 升级 Linux Kernel(ELRepo RPM 或源码编译) |
本教程提供两种升级方式,可根据环境选择:
适用于能正常访问 ELRepo 仓库的环境,无需编译,操作简单。
方法一原文参考: 魔方云商家可将CentOS系宿主机内核升级至7.1.6以避免CVE-2026-64561漏洞(作者:欢-Huan)
系统环境:
| 项目 | 信息 |
|---|---|
| 操作系统 | CentOS Stream 8 |
| 原始内核 | 4.18.0-552.el8.x86_64 |
| 目标内核 | 7.1.6-1.el8.elrepo.x86_64 |
| 内核来源 | ELRepo kernel-ml |
硬件环境(本文作者环境,仅供参考):
| 项目 | 信息 |
|---|---|
| CPU | AMD Ryzen 9 9950X |
| 用途 | KVM / LXD 宿主机 |
| 网卡 | Realtek r8126(第三方驱动) |
注意: 此为微星主板的网卡驱动,如无需特别驱动即可正常通网的机器无需这步。对应的网卡请找对应的驱动,不是每个人的驱动都是一样的。
查看当前环境:
cat /etc/os-release
uname -r
升级路线:
4.18.0-552.el8
↓
7.1.6-1.el8.elrepo
如果系统已经安装 ELRepo,可以跳过。
# 导入 ELRepo GPG 密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 ELRepo 仓库
dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
检查:
# 检查 ELRepo 仓库是否已添加
dnf repolist | grep elrepo
# 查看可用的 kernel-ml 版本列表
dnf --enablerepo=elrepo-kernel list kernel-ml --showduplicates
确认存在:
kernel-ml.x86_64 7.1.6-1.el8.elrepo
# 安装内核本体、核心和模块
dnf --enablerepo=elrepo-kernel install -y \
kernel-ml-7.1.6-1.el8.elrepo.x86_64 \
kernel-ml-core-7.1.6-1.el8.elrepo.x86_64 \
kernel-ml-modules-7.1.6-1.el8.elrepo.x86_64
编译第三方驱动(如需要):
# 安装内核开发包用于编译第三方驱动
dnf --enablerepo=elrepo-kernel install -y \
kernel-ml-devel-7.1.6-1.el8.elrepo.x86_64
# 查看已安装的 kernel-ml 包
rpm -qa | grep kernel-ml
查看 grub:
# 查看 grub 中的内核列表
grubby --info=ALL | grep title
# 查看所有可用内核
grubby --info=ALL | grep kernel
设置:
# 设置默认启动内核
grubby --set-default /boot/vmlinuz-7.1.6-1.el8.elrepo.x86_64
确认:
# 验证默认内核
grubby --default-kernel
# 检查 grub 环境保存状态
grub2-editenv list
# 重启服务器
reboot
检查:
# 查看当前内核版本
uname -r
预期输出:
7.1.6-1.el8.elrepo.x86_64
注意: 此为微星主板的网卡驱动,如无需特别驱动即可正常通网的机器无需这步。对应的网卡请找对应的驱动,不是每个人的驱动都是一样的。
# 查看 r8126 驱动版本信息
modinfo r8126 | grep vermagic
如果不是:
7.1.6-1.el8.elrepo.x86_64
需要重新编译。
注意: 此为微星主板的网卡驱动,如无需特别驱动即可正常通网的机器无需这步。对应的网卡请找对应的驱动,不是每个人的驱动都是一样的。
# 进入驱动源码目录
cd /root/qudong_backup/r8126-10.016.00
# 清理旧编译产物
make clean
# 编译驱动
make
# 安装驱动
make install
# 重新生成模块依赖
depmod -a
# 加载驱动
modprobe r8126
检查:
# 确认驱动已加载
lsmod | grep r8126
7.1.x 内核包含新版 KVM/MMU:
CONFIG_KVM_GUEST_MEMFD=y
CONFIG_KVM_GENERIC_MMU_NOTIFIER=y
CONFIG_KVM_MM_U_LOCKLESS_AGING=y
CONFIG_KVM_EXTERNAL_WRITE_TRACKING=y
CONFIG_KVM_MAX_NR_VCPUS=4096
# 查看所有可用内核
grubby --info=ALL | grep kernel
恢复旧内核:
# 设置旧内核为默认启动项
grubby --set-default /boot/vmlinuz-4.18.0-552.el8.x86_64
升级路径:
CentOS Stream 8
↓
Linux 4.18
↓
ELRepo kernel-ml 7.1.6
结果:
✅ 升级到 Linux 7.1.6
✅ KVM/MMU 子系统更新
✅ 支持更多新硬件
✅ 保留旧内核回滚能力
注意:
适用于无法访问 ELRepo 仓库,或需要使用 kernel.org 官方 stable 版本的环境。具体步骤见下方。
查看当前环境:
cat /etc/os-release
uname -r
由于本人服务器环境中:
因此采用:
kernel.org 官方 stable 源码编译方式升级内核。
说明:
该方案仅为本人服务器环境下的解决方法,不代表所有环境必须使用源码编译。
# 进入源码目录
cd /usr/src
# 下载 Linux 7.1.7 源码
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.7.tar.xz
# 解压源码
tar -xf linux-7.1.7.tar.xz
# 进入源码目录
cd /usr/src/linux-7.1.7
# 确认源码完整
ls Makefile
预期输出:
Makefile
由于源码编译安装的 7.1.3 内核未生成:
/boot/config-7.1.3
因此使用之前编译时保存的配置:
# 检查旧配置是否存在
ls -lh /usr/src/linux-7.1.3/.config
确认存在:
/usr/src/linux-7.1.3/.config
# 复制旧配置到新内核目录
cp /usr/src/linux-7.1.3/.config /usr/src/linux-7.1.7/.config
# 进入新内核源码目录
cd /usr/src/linux-7.1.7
# 基于旧配置生成新配置
make olddefconfig
预期输出:
#
# configuration written to .config
#
# 检查 KVM 相关配置项
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
预期输出:
CONFIG_KVM_X86=m
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
说明:
满足当前 KVM Intel 环境要求。
# 查看 CPU 核心数
nproc
# 使用全部 CPU 编译(根据实际核心数调整)
make -j$(nproc)
# 编译完成后验证内核镜像
ls -lh arch/x86/boot/bzImage
预期输出:
-rw-r--r-- 1 root root xxM arch/x86/boot/bzImage
表示内核镜像生成成功。
# 安装内核模块
make modules_install
# 验证模块安装
ls /lib/modules/
预期输出:
7.1.7
# 检查 KVM 模块
find /lib/modules/7.1.7 -name "kvm*"
预期输出:
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm.ko
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-intel.ko
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-amd.ko
确认:
# 安装内核
make install
# 检查安装结果
ls -lh /boot | grep 7.1.7
预期输出:
initramfs-7.1.7.img
System.map-7.1.7
vmlinuz-7.1.7
# 生成 GRUB 配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# 设置默认启动内核
grubby --set-default /boot/vmlinuz-7.1.7
# 验证默认内核
grubby --default-kernel
预期输出:
/boot/vmlinuz-7.1.7
# 重启服务器
reboot
# 查看当前内核版本
uname -r
预期输出:
7.1.7
✅ 已运行 Linux 7.1.7
# 查看 KVM 模块
lsmod | grep kvm
预期输出:
kvm_intel
kvm
irqbypass
✅ KVM Intel 正常加载
# 查看 KVM 模块来源
modinfo kvm_intel | grep filename
预期输出:
filename: /lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-intel.ko
✅ 当前使用的是 7.1.7 编译生成的 KVM Intel 模块
重要: 旧内核不应立即删除。
# 列出可用内核
grubby --info=ALL | grep kernel
如果新内核有问题,设置旧内核:
# 设置旧内核为默认启动项
grubby --set-default /boot/vmlinuz-7.1.3
# 重启生效
reboot
| 项目 | 修复前 |
|---|
最终运行:
CentOS Stream 8
x86_64
Kernel:
7.1.7
KVM:
kvm_intel
kvm
irqbypass
修复完成。
暂时保留:
7.1.3
6.18.8-1.el8.elrepo.x86_64
4.18.x
用于异常情况下回滚。
# 查看可用内核
grubby --info=ALL | grep kernel
以后继续升级时建议保存:
# 保存当前内核配置
cp /usr/src/linux-7.1.7/.config /boot/config-7.1.7
后续升级:
# 复制配置到新内核目录
cp /boot/config-7.1.7 新内核源码目录/.config
即可继续复用配置。
免責事項: このリポジトリは、特定のサーバー環境における私個人の修正手順を記録したものです。専門的なセキュリティ分析ではありません。誤りがあればご指摘ください。
このガイドでは、CVE-2026-64561 を修正するための Linux Kernel のアップグレード方法として、ELRepo RPM インストール(推奨)とソースからのビルドの 2 つの方法を説明します。
| 項目 | 説明 |
|---|---|
| CVE ID | CVE-2026-64561 |
| 影響コンポーネント | Linux Kernel KVM/x86 |
| 修正方法 | Linux Kernel のアップグレード(ELRepo RPM またはソースからのビルド) |
このガイドでは 2 つのアップグレード方法を提供します。環境に応じて選択してください。
ELRepo リポジトリへ安定してアクセスできる環境向けです。コンパイルは不要です。
方法 A の参考: 魔方云の事業者はCentOS系ホストのカーネルを7.1.6にアップグレードすることでCVE-2026-64561の脆弱性を回避できます(著者: 欢-Huan)
システム環境:
| 項目 | 情報 |
|---|---|
| OS | CentOS Stream 8 |
| 元のカーネル | 4.18.0-552.el8.x86_64 |
| 対象カーネル | 7.1.6-1.el8.elrepo.x86_64 |
| カーネルソース | ELRepo kernel-ml |
ハードウェア環境(筆者の環境、参考用):
| 項目 | 情報 |
|---|---|
| CPU | AMD Ryzen 9 9950X |
| 用途 | KVM / LXD ホスト |
| NIC | Realtek r8126(サードパーティ製ドライバ) |
注意: これは MSI マザーボード用の NIC ドライバです。特別なドライバなしでネットワークに接続できるマシンにはこの手順は不要です。お使いの NIC に応じたドライバを探してください。
現在の環境を確認:
cat /etc/os-release
uname -r
アップグレード経路:
4.18.0-552.el8
↓
7.1.6-1.el8.elrepo
ELRepo がすでにインストールされている場合は、この手順をスキップしてください。
# ELRepo GPG キーをインポート
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# ELRepo リポジトリをインストール
dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
確認:
# ELRepo リポジトリが追加されているか確認
dnf repolist | grep elrepo
# 利用可能な kernel-ml バージョンの一覧を表示
dnf --enablerepo=elrepo-kernel list kernel-ml --showduplicates
存在を確認:
kernel-ml.x86_64 7.1.6-1.el8.elrepo
# カーネル本体、コア、モジュールをインストール
dnf --enablerepo=elrepo-kernel install -y \
kernel-ml-7.1.6-1.el8.elrepo.x86_64 \
kernel-ml-core-7.1.6-1.el8.elrepo.x86_64 \
kernel-ml-modules-7.1.6-1.el8.elrepo.x86_64
サードパーティ製ドライバのコンパイル(必要な場合):
# サードパーティ製ドライバ用にカーネル開発パッケージをインストール
dnf --enablerepo=elrepo-kernel install -y \
kernel-ml-devel-7.1.6-1.el8.elrepo.x86_64
# インストール済みの kernel-ml パッケージを確認
rpm -qa | grep kernel-ml
grub の確認:
# grub 内のカーネル一覧を表示
grubby --info=ALL | grep title
# 利用可能なすべてのカーネルを表示
grubby --info=ALL | grep kernel
設定:
# デフォルトの起動カーネルを設定
grubby --set-default /boot/vmlinuz-7.1.6-1.el8.elrepo.x86_64
確認:
# デフォルトカーネルを確認
grubby --default-kernel
# grub 環境の保存状態を確認
grub2-editenv list
# サーバーを再起動
reboot
確認:
# 現在のカーネルバージョンを確認
uname -r
期待される出力:
7.1.6-1.el8.elrepo.x86_64
注意: これは MSI マザーボード用の NIC ドライバです。特別なドライバなしでネットワークに接続できるマシンにはこの手順は不要です。お使いの NIC に応じたドライバを探してください。
# r8126 ドライバのバージョン情報を表示
modinfo r8126 | grep vermagic
次の出力にならない場合:
7.1.6-1.el8.elrepo.x86_64
再コンパイルが必要です。
注意: これは MSI マザーボード用の NIC ドライバです。特別なドライバなしでネットワークに接続できるマシンにはこの手順は不要です。お使いの NIC に応じたドライバを探してください。
# ドライバのソースディレクトリへ移動
cd /root/qudong_backup/r8126-10.016.00
# 古いビルド成果物をクリーンアップ
make clean
# ドライバをコンパイル
make
# ドライバをインストール
make install
# モジュール依存関係を再生成
depmod -a
# ドライバをロード
modprobe r8126
確認:
# ドライバがロードされているか確認
lsmod | grep r8126
7.1.x カーネルには新しい KVM/MMU が含まれています:
CONFIG_KVM_GUEST_MEMFD=y
CONFIG_KVM_GENERIC_MMU_NOTIFIER=y
CONFIG_KVM_MM_U_LOCKLESS_AGING=y
CONFIG_KVM_EXTERNAL_WRITE_TRACKING=y
CONFIG_KVM_MAX_NR_VCPUS=4096
# 利用可能なすべてのカーネルを表示
grubby --info=ALL | grep kernel
旧カーネルを復元:
# 旧カーネルをデフォルトの起動エントリに設定
grubby --set-default /boot/vmlinuz-4.18.0-552.el8.x86_64
アップグレード経路:
CentOS Stream 8
↓
Linux 4.18
↓
ELRepo kernel-ml 7.1.6
結果:
✅ Linux 7.1.6 にアップグレード
✅ KVM/MMU サブシステムを更新
✅ 新しいハードウェアのサポートが強化
✅ 旧カーネルへのロールバック機能を維持
注意事項:
ELRepo にアクセスできない環境、または kernel.org 公式の stable リリースが必要な環境向けです。詳細な手順は以下を参照してください。
現在の環境を確認:
cat /etc/os-release
uname -r
私の環境では:
そのため:
kernel.org 公式の stable ソースコードを使用し、カーネル 7.1.7 を手動でビルドしました。
補足:
これは私の環境での解決方法であり、すべてのシステムに必須のアップグレード方法ではありません。
# ソースディレクトリへ移動
cd /usr/src
# Linux 7.1.7 のソースをダウンロード
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.1.7.tar.xz
# ソースを解凍
tar -xf linux-7.1.7.tar.xz
# ソースディレクトリへ移動
cd /usr/src/linux-7.1.7
# ソースの整合性を確認
ls Makefile
期待される出力:
Makefile
ソースコンパイルした 7.1.3 カーネルでは次の設定ファイルが生成されなかったため:
/boot/config-7.1.3
以前のコンパイル時に保存した設定を使用します:
# 旧設定が存在するか確認
ls -lh /usr/src/linux-7.1.3/.config
存在を確認済み:
/usr/src/linux-7.1.3/.config
# 旧設定を新しいカーネルディレクトリへコピー
cp /usr/src/linux-7.1.3/.config /usr/src/linux-7.1.7/.config
# 新しいカーネルソースディレクトリへ移動
cd /usr/src/linux-7.1.7
# 旧設定に基づいて新しい設定を生成
make olddefconfig
期待される出力:
#
# configuration written to .config
#
# KVM 関連の設定項目を確認
grep -E "CONFIG_KVM|CONFIG_KVM_INTEL" .config
期待される出力:
CONFIG_KVM_X86=m
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
説明:
現在の KVM Intel 環境の要件を満たしています。
# CPU コア数を確認
nproc
# すべての CPU を使用してコンパイル(実際のコア数に応じて調整)
make -j$(nproc)
# コンパイル後にカーネルイメージを確認
ls -lh arch/x86/boot/bzImage
期待される出力:
-rw-r--r-- 1 root root xxM arch/x86/boot/bzImage
カーネルイメージが正常に生成されたことを示します。
# カーネルモジュールをインストール
make modules_install
# モジュールのインストールを確認
ls /lib/modules/
期待される出力:
7.1.7
# KVM モジュールを確認
find /lib/modules/7.1.7 -name "kvm*"
期待される出力:
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm.ko
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-intel.ko
/lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-amd.ko
確認:
# カーネルをインストール
make install
# インストール結果を確認
ls -lh /boot | grep 7.1.7
期待される出力:
initramfs-7.1.7.img
System.map-7.1.7
vmlinuz-7.1.7
# GRUB 設定を生成
grub2-mkconfig -o /boot/grub2/grub.cfg
# デフォルトの起動カーネルを設定
grubby --set-default /boot/vmlinuz-7.1.7
# デフォルトカーネルを確認
grubby --default-kernel
期待される出力:
/boot/vmlinuz-7.1.7
# サーバーを再起動
reboot
# 現在のカーネルバージョンを確認
uname -r
期待される出力:
7.1.7
✅ Linux 7.1.7 で稼働中
# KVM モジュールを確認
lsmod | grep kvm
期待される出力:
kvm_intel
kvm
irqbypass
✅ KVM Intel が正常にロードされています
# KVM モジュールの提供元を確認
modinfo kvm_intel | grep filename
期待される出力:
filename: /lib/modules/7.1.7/kernel/arch/x86/kvm/kvm-intel.ko
✅ 7.1.7 でコンパイルされた KVM Intel モジュールを使用中
重要: 旧カーネルはすぐに削除しないでください。
# 利用可能なカーネルを一覧表示
grubby --info=ALL | grep kernel
新しいカーネルに問題がある場合は、旧カーネルを設定します:
# 旧カーネルをデフォルトの起動エントリに設定
grubby --set-default /boot/vmlinuz-7.1.3
# 再起動して反映
reboot
| 項目 | 修正前 |
|---|
最終的な稼働状態:
CentOS Stream 8
x86_64
Kernel:
7.1.7
KVM:
kvm_intel
kvm
irqbypass
修正が完了しました。
一時的に保持:
7.1.3
6.18.8-1.el8.elrepo.x86_64
4.18.x
問題発生時のロールバック用です。
# 利用可能なカーネルを表示
grubby --info=ALL | grep kernel
今後のアップグレードに備え、設定を保存しておくことを推奨します:
# 現在のカーネル設定を保存
cp /usr/src/linux-7.1.7/.config /boot/config-7.1.7
後続のアップグレードでは:
# 設定を新しいカーネルディレクトリへコピー
cp /boot/config-7.1.7 /new-kernel-source-directory/.config
これにより、設定を引き続き再利用できます。
| 项目 | 信息 |
|---|
| 系统 | CentOS Stream 8 |
| 架构 | x86_64 |
| 虚拟化 | KVM Intel |
| 原始内核 | 6.18.8-1.el8.elrepo.x86_64 |
| 已运行内核 | 7.1.3 |
| 最终内核 | 7.1.7 |
| 修复后 |
|---|
| Linux Kernel | 7.1.3 | 7.1.7 |
| KVM Intel 模块 | 7.1.3 | 7.1.7 |
| CVE-2026-64561 | 存在风险 | 已通过升级内核修复 |
| KVM 功能 | 正常 | 正常 |
| 項目 | 情報 |
|---|
| OS | CentOS Stream 8 |
| アーキテクチャ | x86_64 |
| 仮想化 | KVM Intel |
| 元のカーネル | 6.18.8-1.el8.elrepo.x86_64 |
| 稼働中カーネル | 7.1.3 |
| 最終カーネル | 7.1.7 |
| 修正後 |
|---|
| Linux Kernel | 7.1.3 | 7.1.7 |
| KVM Intel モジュール | 7.1.3 | 7.1.7 |
| CVE-2026-64561 | リスクあり | カーネルアップグレードで修正 |
| KVM 機能 | 正常 | 正常 |