虚拟化容器,大数据,DBA,中间件,监控。

openEuler 25.09 升级内核至 kernel 7.2.0(源码编译安装)

01 09月
作者:admin|分类:系统运维

kernel7.2.0

openEuler 25.09 升级内核至 kernel 7.2.0(源码编译安装)

环境信息

项目
系统openEuler 25.09 (x86_64)
原内核7.1.2
目标内核7.2.0
硬件6 核 CPU / 30Gi 内存 / 磁盘可用 134G
显卡NVIDIA GeForce GTX 750 (GM107)

编译与安装过程

  1. 解压源码linux-7.2.tar.gz(约 260MB,解压后 1.8G)→ linux-7.2/

  2. 内核配置:复用当前运行内核配置(/proc/config.gz)→ .config,再执行 make olddefconfig 适配 7.2

  3. 并发编译make -j3(按需求限制并发为 3,防止系统死机;全量编译约 2.5 小时,产出 15000+ 目标文件)

  4. 安装模块make modules_install/lib/modules/7.2.0

  5. 安装内核make install/boot/vmlinuz-7.2.0System.map-7.2.0initramfs-7.2.0.img(dracut 生成)

  6. 更新引导:grub 自动生成 openEuler (7.2.0) 25.09 菜单项,并通过 grub2-set-default 将默认启动项切换为 7.2.0

安装结果验证

  • /boot/vmlinuz-7.2.0(13.8MB)、System.map-7.2.0initramfs-7.2.0.img 均已生成

  • /lib/modules/7.2.0 模块目录完整

  • grub 默认项:saved_entry=openEuler (7.2.0) 25.09

NVIDIA 闭源驱动适配(580.159.04)

内核源码不包含 NVIDIA 闭源驱动(仅含开源 amdgpu/i915/nouveau,且 nouveau 被系统 blacklist)。为使 7.2.0 重启后显卡可用,通过 DKMS 为 7.2.0 重新编译安装闭源驱动 nvidia/580.159.04,过程中修复了 3 类内核 7.2 兼容问题:

1. strncpy 被内核 7.2 彻底移除

内核 7.2 的 lib/string.c 已无 strncpy 实现,驱动直接调用会报"隐式声明"错误。将驱动 4 个文件中 7 处 strncpy 替换为 strscpy

  • nvidia/os-interface.c

  • nvidia/linux_nvswitch.c

  • nvidia-modeset/nvidia-modeset-linux.c

  • nvidia-uvm/uvm_pmm_gpu.c

2. DRM atomic API 重构(drm_atomic_statedrm_atomic_commit

内核 7.2 彻底移除了 struct drm_atomic_state 类型,重构为 struct drm_atomic_commit,相关 API 同步改名。对 nvidia-drm 模块做批量适配:

  • 类型替换:struct drm_atomic_statestruct drm_atomic_commit(约 22 处,5 个源文件)

  • 函数改名:drm_atomic_state_alloc/put/init/default_clear/default_release → 对应 drm_atomic_commit_*(8 处)

  • 注意保留驱动自有函数 nv_drm_atomic_state_* 不被误改(用词边界正则)

3. conftest.sh 签名检测过时

驱动构建时通过 conftest.sh 检测内核 atomic_check 回调签名以选择代码分支,但检测代码仍使用旧类型 struct drm_atomic_state,在 7.2 内核下检测失败导致走错分支。将两处检测函数参数改为 struct drm_atomic_commit *state 后恢复正常。

并发限制

  • /usr/src/nvidia-580.159.04/dkms.conf-j6-j3

  • /etc/dkms/framework.confparallel_jobs=3

驱动安装验证

$ dkms status
nvidia/580.159.04, 7.1.2, x86_64: installed
nvidia/580.159.04, 7.2.0, x86_64: installed
  • DKMS 退出码 0;5 个模块(nvidia / nvidia-uvm / nvidia-modeset / nvidia-drm / nvidia-peermem)已装入 /lib/modules/7.2.0/kernel/drivers/video/

  • initramfs 已重建并包含 nvidia 模块加载配置

重启后验证命令

uname -r                    # 应为 7.2.0
lsmod | grep nvidia         # 应有 nvidia、nvidia_drm 等
nvidia-smi                  # 应正常显示 GTX 750

回滚方案

grub 菜单保留旧内核项 openEuler (7.1.2) 25.09。若 7.2.0 异常,可在开机菜单选择旧内核启动;或执行 grub2-set-default 'openEuler (7.1.2) 25.09' 恢复默认。

备注

  • 源码目录中的 kernel-install.sh 为编译安装流水线脚本(等待编译→安装模块→安装内核),可删除

  • 全部编译安装操作并发均 ≤ 3,避免系统负载过高死机


浏览4 评论0
返回
目录
返回
首页
ly_ueditor_plus 粘贴换行丢失修复总结报告