Ubuntu 24.04 + RTX 5090:NVIDIA 595.71.05 被 unattended-upgrades 自动升级到 595.84,导致驱动版本漂移的排查与恢复

发布时间:2026/10/6 6:16:28

Ubuntu 24.04 + RTX 5090:NVIDIA 595.71.05 被 unattended-upgrades 自动升级到 595.84,导致驱动版本漂移的排查与恢复 背景之前我已经遇到过一次 RTX 5090 在 Ubuntu 24.04 下的 NVIDIA 驱动稳定性问题。当时的结论是595.84-open下出现过 PCIe AER Fatal、Xid 79、GPU fallen off the bus回退到595.71.05-open后恢复稳定原计划对 NVIDIA 相关包执行apt-mark hold但后来发现当时实际上并没有真正执行 HOLD这次系统再次出现异常迹象后最终确认Ubuntu 的 unattended-upgrades 在后台把 NVIDIA 595.71.05 自动升级到了 595.84。更有意思的是由于机器一直没有重启因此出现了一个非常典型的状态RAM 中正在运行的 NVIDIA 驱动595.71.05 磁盘上下一次准备加载的驱动595.84这篇记录完整整理一下排查和恢复过程。一、发现 unattended-upgrades 自动升级了 NVIDIA 驱动首先检查/var/log/unattended-upgrades/unattended-upgrades.log发现 2026-08-12 的日志2026-08-12 06:15:34,945 INFO Starting unattended upgrades script 2026-08-12 06:15:34,960 INFO Allowed origins are: oUbuntu,anoble, oUbuntu,anoble-security, oUbuntuESMApps,anoble-apps-security, oUbuntuESM,anoble-infra-security 2026-08-12 06:15:40,568 INFO Packages that will be upgraded: libnss-systemd libnvidia-cfg1-595 libnvidia-common-595 libnvidia-compute-595 libnvidia-decode-595 libnvidia-encode-595 libnvidia-extra-595 libnvidia-fbc1-595 libnvidia-gl-595 libpam-systemd libsystemd-shared libsystemd0 libudev1 nvidia-compute-utils-595 nvidia-dkms-595-open nvidia-driver-595-open nvidia-kernel-common-595 nvidia-kernel-source-595-open nvidia-utils-595 systemd systemd-dev systemd-resolved systemd-sysv systemd-timesyncd udev xserver-xorg-video-nvidia-595 2026-08-12 06:18:21,652 INFO All upgrades installed这已经可以直接确认不是手工执行apt upgrade导致而是 unattended-upgrades 自动升级了整套 NVIDIA 595 驱动。其中最关键的包包括nvidia-driver-595-open nvidia-dkms-595-open nvidia-kernel-source-595-open nvidia-kernel-common-595 nvidia-utils-595 libnvidia-compute-595 libnvidia-gl-595二、最关键的现象RAM 是 595.71.05磁盘已经变成 595.84执行cat/proc/driver/nvidia/version modinfo-Fversion nvidia得到NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 595.71.05 ... 595.84这两个结果看似矛盾其实非常关键。/proc/driver/nvidia/version表示当前已经加载进内核、正在运行的 NVIDIA 模块版本。当前结果595.71.05modinfo -F version nvidia表示磁盘上当前modinfo能找到的 NVIDIA 内核模块版本。当前结果595.84于是当时机器的真实状态其实是当前 RAM 595.71.05 磁盘 595.84原因很简单系统原本启动时加载的是 595.71.05unattended-upgrades 在机器运行期间升级了 NVIDIA 软件包磁盘文件已经被替换成 595.84但 Linux 不会自动把正在运行的内核模块替换掉所以 RAM 中仍然保留 595.71.05这个时候最重要的一件事情就是不要急着 reboot。如果直接重启当前 RAM 中最后还在工作的 595.71.05 会消失系统下一次就会加载磁盘上的 595.84。三、确认 Ubuntu 仓库已经只提供 595.84执行apt-cachemadison\nvidia-driver-595-open\nvidia-dkms-595-open\nvidia-kernel-source-595-open\nvidia-kernel-common-595\nvidia-compute-utils-595\nvidia-utils-595\libnvidia-compute-595\libnvidia-gl-595得到的版本全部已经是595.84-0ubuntu0.24.04.1来源包括noble-updates noble-security说明旧的595.71.05-0ubuntu0.24.04.1已经不能直接从当前 APT 仓库重新安装。四、幸运的是APT 缓存里还保留完整的 595.71.05执行find/var/cache/apt/archives-maxdepth1\-typef-name*595.71.05*.deb\-printf%f\n|sort发现旧版本.deb全部还在libnvidia-cfg1-595_595.71.05-0ubuntu0.24.04.1_amd64.deb libnvidia-common-595_595.71.05-0ubuntu0.24.04.1_amd64.deb libnvidia-compute-595_595.71.05-0ubuntu0.24.04.1_amd64.deb libnvidia-decode-595_595.71.05-0ubuntu0.24.04.1_amd64.deb libnvidia-encode-595_595.71.05-0ubuntu0.24.04.1_amd64.deb libnvidia-extra-595_595.71.05-0ubuntu0.24.04.1_amd64.deb libnvidia-fbc1-595_595.71.05-0ubuntu0.24.04.1_amd64.deb libnvidia-gl-595_595.71.05-0ubuntu0.24.04.1_amd64.deb nvidia-compute-utils-595_595.71.05-0ubuntu0.24.04.1_amd64.deb nvidia-dkms-595-open_595.71.05-0ubuntu0.24.04.1_amd64.deb nvidia-driver-595-open_595.71.05-0ubuntu0.24.04.1_amd64.deb nvidia-firmware-595-595.71.05_595.71.05-0ubuntu0.24.04.1_amd64.deb nvidia-kernel-common-595_595.71.05-0ubuntu0.24.04.1_amd64.deb nvidia-kernel-source-595-open_595.71.05-0ubuntu0.24.04.1_amd64.deb nvidia-utils-595_595.71.05-0ubuntu0.24.04.1_amd64.deb xserver-xorg-video-nvidia-595_595.71.05-0ubuntu0.24.04.1_amd64.deb一共 16 个。这就给了一个非常好的恢复窗口RAM 中还跑着稳定的 595.71.05同时本地缓存又完整保留了旧版本安装包。五、先把旧版驱动包单独备份为了避免以后执行aptclean导致这些旧包被删除先永久备份mkdir-p/root/nvidia-595.71.05-debscp-av/var/cache/apt/archives/*595.71.05*.deb\/root/nvidia-595.71.05-debs/确认find/root/nvidia-595.71.05-debs\-maxdepth1-name*.deb|wc-l结果16以后即使 Ubuntu 仓库完全不再提供 595.71.05也可以直接使用本地包恢复。六、先模拟降级不要直接安装先执行模拟apt-sinstall--allow-downgrades\/root/nvidia-595.71.05-debs/*.deb主要检查两件事1. NVIDIA 包是否全部从 595.84 降级到 595.71.05预期595.84-0ubuntu0.24.04.1 ↓ 595.71.05-0ubuntu0.24.04.12. 有没有误删除大量无关软件包如果只是 NVIDIA 595 软件栈的正常 downgrade就可以继续。七、真正执行 595.84 → 595.71.05 降级执行aptinstall--allow-downgrades\/root/nvidia-595.71.05-debs/*.deb这里使用 APT 安装本地.deb而不是简单执行dpkg-i*.deb主要是为了让 APT 正确处理各包之间的依赖关系。整个过程中不要 reboot 不要 rmmod nvidia 不要 modprobe nvidia 不要 apt upgrade 不要 apt full-upgrade因为当前内存里还运行着正常的 595.71.05没有必要主动破坏这个状态。八、降级后确认 RAM 和磁盘重新一致再次检查cat/proc/driver/nvidia/version modinfo-Fversion nvidia目标状态/proc/driver/nvidia/version 595.71.05 modinfo -F version nvidia 595.71.05也就是RAM 595.71.05 Disk 595.71.05再检查dkms status|grep-invidia以及dpkg-query-W-f${binary:Package}\t${Version}\n|grep-Envidia|libnvidia|grep595|sort主要驱动组件应该全部恢复到595.71.05-0ubuntu0.24.04.1九、这次一定执行 HOLD上一次最大的问题不是没有解决而是解决之后忘了锁版本。因此这次确认降级完成后立即执行apt-mark hold\nvidia-driver-595-open\nvidia-dkms-595-open\nvidia-kernel-source-595-open\nvidia-kernel-common-595\nvidia-compute-utils-595\nvidia-utils-595\libnvidia-cfg1-595\libnvidia-common-595\libnvidia-compute-595\libnvidia-decode-595\libnvidia-encode-595\libnvidia-extra-595\libnvidia-fbc1-595\libnvidia-gl-595\xserver-xorg-video-nvidia-595验证apt-mark showhold|grep595|sort这一步非常重要。因为 APT 现在仍然会认为Installed: 595.71.05 Candidate: 595.84但只要处于 HOLD 状态正常的 unattended-upgrades 就不会再把这些软件包自动更新回 595.84。十、最终重启验证所有检查完成后进行了正常 reboot。重启之后执行cat/proc/driver/nvidia/version modinfo-Fversion nvidia nvidia-smi dkms status|grep-invidia最终全部正常。也就是说系统已经真正完成595.84 落盘 ↓ 本地 .deb 降回 595.71.05 ↓ DKMS 恢复 595.71.05 ↓ HOLD NVIDIA 软件包 ↓ reboot ↓ 重新加载 595.71.05 ↓ GPU 正常至此恢复完成。十一、一个额外现象PCIe replay error 累计到 3009但模型仍稳定这两天运行大模型时还注意到一个现象# gpu rxpci txpci sbecc dbecc pci # Idx MB/s MB/s errs errs errs 0 0 2 - - 3009 0 0 0 - - 3009这里最后一列pci errs可以理解为 PCIe replay 相关的累计计数。比较重要的是3009 3009 3009数值虽然不为 0但已经不继续增长。这和之前的AER: Uncorrectable (Fatal) Xid 79 GPU has fallen off the bus不是同一个严重程度。PCIe 本身有链路层重传机制所以可能出现PCIe 传输出现错误 ↓ 链路自动 replay ↓ 重传成功 ↓ CUDA / 大模型任务继续正常因此单纯看到一个比较大的累计值并不等于当前仍然存在持续故障。相比绝对值我更关注的是这个值是否继续增长。例如3009 3009 3009 3009比3009 3200 3800 5000健康得多。后续可以持续观察nvidia-smi dmon-i0-set-d10-oT同时监控内核journalctl-k-f|grep--line-buffered-EiAER|NVRM|Xid|PCIe|fallen off目前实际情况是大模型持续稳定运行 PCIe replay 计数没有继续明显上涨 没有新的 Xid 79 没有 GPU fallen off bus所以目前继续使用 595.71.05。十二、这次问题的完整时间线整个过程可以总结为最初使用 595.84 ↓ PCIe AER Fatal / Xid 79 GPU fallen off the bus ↓ 回退 595.71.05 ↓ 系统恢复稳定 ↓ 当时忘记执行 apt-mark hold ↓ 2026-08-12 06:15 unattended-upgrades 自动启动 ↓ 整套 NVIDIA 595 被自动升级到 595.84 ↓ 由于机器没有重启 RAM 中仍然是 595.71.05 磁盘已经是 595.84 ↓ 发现 /proc 595.71.05 modinfo 595.84 ↓ 幸好 /var/cache/apt/archives 仍保留完整 595.71.05 deb ↓ 本地整套 downgrade ↓ RAM 595.71.05 Disk 595.71.05 ↓ apt-mark hold ↓ reboot ↓ 595.71.05 正常加载 ↓ 目前系统和大模型运行稳定十三、这次最大的经验1. 驱动回退成功后一定记得 HOLD解决问题不代表事情结束。如果仓库中的 Candidate 仍然是问题版本而 unattended-upgrades 又正常开启那么迟早可能再次自动升级。检查apt-mark showhold应该成为回退驱动之后的固定步骤。2./proc和modinfo同时检查非常有用只看nvidia-smi可能无法及时发现磁盘上的驱动已经被后台升级。以后遇到类似情况可以直接cat/proc/driver/nvidia/version modinfo-Fversion nvidia如果两个版本不同/proc old modinfo new基本就说明驱动软件包已经在运行期间发生变化但当前内核仍然加载旧模块。这个状态下尤其要慎重 reboot。3. 不要随便清理/var/cache/apt/archives这次能够快速恢复最大的幸运就是595.71.05 的全部 .deb 还在对于生产环境里已经验证稳定、但仓库可能随时淘汰的 NVIDIA 驱动版本建议直接另外存一份/root/nvidia-595.71.05-debs/以后恢复会简单很多。4. 不建议为了锁 NVIDIA 而关闭全部 unattended-upgradesunattended-upgrades本身仍然负责 Ubuntu 的很多正常安全更新。更合理的方式是系统安全更新继续 已知不稳定的 NVIDIA 驱动单独 HOLD而不是一刀切关闭全部自动安全更新。最终状态目前系统OS : Ubuntu 24.04 GPU : NVIDIA GeForce RTX 5090 Driver : 595.71.05 Open Kernel Module RAM : 595.71.05 Disk : 595.71.05 DKMS : 595.71.05 APT HOLD : 已配置 Reboot : 已完成 CUDA/LLM : 正常稳定运行这次问题最终不是一个新的 GPU 硬件故障而是之前修复之后漏掉了最后一个非常重要的步骤HOLD。导致 unattended-upgrades 在 2026-08-12 又把 595.84 自动装了回来。好在发现时机器还没有重启旧的 595.71.05 内核模块仍然存活在 RAM 中同时 APT cache 里也保留了完整旧包因此最终顺利恢复。
延伸阅读

更多相关文章

2026/10/6 6:15:55

2027北京AI数字健康与智慧医疗展官方:94%展商满意度揭秘

展会的长期生命力,源自参展企业真实的体验感与复购意愿,2026年度赛逸展结束后的官方问卷调查数据显示,本届智慧医疗展整体展商满意度达到94%,老展商次年展位复订率稳定在78%,这两组核心数据,直观揭示了行业…

2026/10/4 9:05:44

Pyinstaller打包DLL依赖缺失:从诊断到解决的完整指南

1. 项目概述:当Pyinstaller遇上DLL依赖的“幽灵” 搞Python桌面应用开发或者脚本工具分发的朋友,对Pyinstaller肯定不陌生。它就像个“打包魔术师”,能把你的.py脚本、依赖库、解释器一股脑塞进一个独立的可执行文件里,让用户无需…

2026/10/6 6:13:39

大电流PCB热设计:Icepak三维仿真实战指南

1. 为什么大电流PCB不能只靠经验布线?——从烧毁的电源模块说起去年帮一家做工业电机驱动的客户做板级热设计复盘,他们量产的三款48V/20A电源模块,有两款在连续满载运行3小时后出现MOSFET焊盘铜箔起翘、电感底部PCB碳化。工程师第一反应是“散…

2026/10/6 6:13:39

反激变压器同名端判断口诀与实测方法:5分钟搞定电压电流方向

1. 反激变压器方向判断为什么总让人翻车反激变压器同名端判断这件事,说大不大,说小也真不小。我见过太多人原理图跑通了、PCB也焊完了,上电一测波形不对,查了半天才发现是变压器同名端搞反了。更常见的情况是,明明变压…

2026/10/6 6:13:39

Innovus时钟树综合CTS调优实战:Skew与Latency平衡技巧

1. 时钟树综合到底在解决什么问题1.1 从一颗芯片的“心跳”说起时钟信号是整个同步数字电路的节拍器。你可以把它想象成一支交响乐团的指挥——如果指挥的手势在不同乐手眼里到达的时间不一致,小提琴手已经拉完了,大提琴手才刚准备起弓,整个演…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑