Ubuntu 22.04 NVIDIA 驱动问题修复报告

NVIDIA 驱动问题修复报告

问题现象

系统重启后 NVIDIA 驱动无法工作,执行 nvidia-smi 返回错误:

复制代码
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. 
Make sure that the latest NVIDIA driver is installed and running.

问题分析

硬件环境

  • GPU: NVIDIA GeForce RTX 3090
  • 操作系统: Ubuntu 22.04 LTS
  • 内核版本: 6.8.0-106-generic

根因排查

检查步骤 发现
`lspci grep NVIDIA`
dkms status 显示 nvidia/550.163.01: added,但没有对应当前内核的编译结果
ls /var/lib/dkms/nvidia/550.163.01/6.8.0-106-generic/ 目录不存在,确认模块未编译

编译错误分析

尝试手动 DKMS 编译时遇到错误:

复制代码
cc: error: unrecognized command-line option '-ftrivial-auto-var-init=zero'

根本原因:

  1. 内核 6.8.0-106 配置了 CONFIG_INIT_STACK_ALL_ZERO=y,该选项开启后内核 Makefile 会自动添加 -ftrivial-auto-var-init=zero 编译标志
  2. -ftrivial-auto-var-init=zero 选项需要 GCC 12 或更高版本 支持
  3. Ubuntu 22.04 默认 GCC 版本为 11.4.0,不支持该选项
  4. conda 环境将其 GCC 14 添加到 PATH 优先级首部,导致 DKMS 编译使用 conda GCC 仍出现问题

修复过程

1. 尝试直接重新编译原有模块

bash 复制代码
sudo dkms build -m nvidia/550.163.01 -k 6.8.0-106-generic

结果: 编译失败,确认 GCC 兼容性问题。

2. 尝试升级到 NVIDIA 580 驱动版本

系统中已经存在 linux-objects-nvidia-580-6.8.0-106-generic,说明 Ubuntu 仓库已经提供了适配 6.8.0-106 内核的预编译对象,但仍需要 DKMS 编译模块:

bash 复制代码
sudo apt install nvidia-driver-580

结果: 遇到 dpkg 冲突,修复后继续,但仍然遇到相同的 GCC 编译错误。

3. 安装 GCC 12 并重新编译

bash 复制代码
sudo dpkg --configure -a
sudo apt install gcc-12 g++-12

结果: 安装 GCC 12 后,dpkg 自动触发 DKMS 编译,编译成功完成

验证修复

bash 复制代码
$ nvidia-smi
Wed Apr  1 13:09:50 2026       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.126.20             Driver Version: 580.126.20     CUDA Version: 13.0     |
+-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 3090        Off |   00000000:17:00.0 Off |                  N/A |
| 30%   49C    P0             93W /  350W |       0MiB /  24576MiB |      4%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

修复结论

项目 状态
驱动编译 ✅ 成功
内核模块加载 ✅ 成功
nvidia-smi 工作 ✅ 正常
GPU 可被识别 ✅ 正确识别 RTX 3090

最终驱动信息:

  • 驱动版本: 580.126.20
  • CUDA 版本: 13.0
  • 可用显存: 24576 MiB

经验总结

  1. 内核更新后需要注意兼容性 - 新内核可能启用新的编译选项,需要对应版本的工具链支持
  2. conda 环境影响系统编译 - conda 将自己的 GCC 放入 PATH 会干扰 DKMS 内核模块编译
  3. CONFIG_INIT_STACK_ALL_ZERO=y 需要 GCC ≥ 12 - Ubuntu 22.04 用户升级内核后需要手动安装 GCC 12

相关文件位置

  • DKMS 构建日志: /var/lib/dkms/nvidia/580.126.20/build/make.log
  • 内核配置: /boot/config-6.8.0-106-generic
  • NVIDIA 驱动包: nvidia-driver-580
相关推荐
苏生Susheng31 分钟前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
Ruiery42 分钟前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败44 分钟前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW1 小时前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux
snow@li1 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
苏生Susheng1 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
额额额对了2 小时前
Linux 进程间通信(IPC)核心机制:消息队列、共享内存与信号量详解
linux·网络·网络协议
zx_741484812 小时前
【Linux入门】Linux 安装:VMware Workstation Pro 安装 CentOS 7 保姆级图文教程
linux·centos
智购科技无人售货机厂家3 小时前
2026自动售货机备用电池管理系统设计:从充放电保护到健康监测的工程实践~YH
大数据·linux·单片机·嵌入式硬件·微信
小雪崩3 小时前
嵌入式学习 day39:TCP并发服务器模型
linux·服务器·c语言·网络·学习·tcp/ip