
Linux 内核升级指南 - 修复 CVE-2026-64561
고지: 본 문서는 필자의 서버 환경에서의 수정 과정만을 기록한 것이며, 보안 전문 분석이 아닙니다. 잘못된 부분이 있으면 지적해 주시기 바랍니다.
이 문서는 CVE-2026-64561을 수정하기 위해 Linux Kernel을 업그레이드하는 두 가지 방법을 제공합니다: ELRepo RPM 설치(권장)와 소스 컴파일입니다.
| 항목 | 설명 |
|---|---|
| CVE 번호 | CVE-2026-64561 |
| 취약 컴포넌트 | Linux Kernel KVM/x86 |
| 수정 방법 | Linux Kernel 업그레이드(ELRepo RPM 또는 소스 컴파일) |
이 튜토리얼은 두 가지 업그레이드 방법을 제공하며, 환경에 따라 선택할 수 있습니다:
ELRepo 저장소에 정상적으로 접근할 수 있는 환경에 적합하며, 컴파일이 필요 없고 조작이 간단합니다.
방법 1 원문 참고: 魔方云 상점은 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(서드파티 드라이버) |
참고: 이는 MSI 메인보드의 네트워크 카드 드라이버입니다. 특별한 드라이버 없이도 정상적으로 네트워크에 연결되는 머신은 이 단계가 필요 없습니다. 자신의 네트워크 카드에 맞는 드라이버를 찾으시기 바랍니다. 모든 드라이버가 동일한 것은 아닙니다.
현재 환경 확인:
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 메인보드의 네트워크 카드 드라이버입니다. 특별한 드라이버 없이도 정상적으로 네트워크에 연결되는 머신은 이 단계가 필요 없습니다. 자신의 네트워크 카드에 맞는 드라이버를 찾으시기 바랍니다. 모든 드라이버가 동일한 것은 아닙니다.
# 查看 r8126 驱动版本信息
modinfo r8126 | grep vermagic
다음이 아니라면:
7.1.6-1.el8.elrepo.x86_64
다시 컴파일해야 합니다.
참고: 이는 MSI 메인보드의 네트워크 카드 드라이버입니다. 특별한 드라이버 없이도 정상적으로 네트워크에 연결되는 머신은 이 단계가 필요 없습니다. 자신의 네트워크 카드에 맞는 드라이버를 찾으시기 바랍니다. 모든 드라이버가 동일한 것은 아닙니다.
# 进入驱动源码目录
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 버전을 사용해야 하는 환경에 적합합니다. 구체적인 단계는 아래를 참조하세요.
| 항목 | 정보 |
|---|---|
| 시스템 | CentOS Stream 8 |
| 아키텍처 | x86_64 |
| 가상화 | KVM Intel |
| 기존 커널 | 6.18.8-1.el8.elrepo.x86_64 |
| 실행 중인 커널 | 7.1.3 |
| 최종 커널 | 7.1.7 |
현재 환경 확인:
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
| 항목 | 수정 전 | 수정 후 |
|---|---|---|
| Linux Kernel | 7.1.3 | 7.1.7 |
| KVM Intel 모듈 | 7.1.3 | 7.1.7 |
| CVE-2026-64561 | 위험 존재 | 커널 업그레이드로 수정됨 |
| KVM 기능 | 정상 | 정상 |
최종 실행 상태:
CentOS Stream 8
x86_64
Kernel:
7.1.7