1) 省流
安装 NVIDIA 驱动前建议做到两件事:
- 关闭 Secure Boot(或确保后续能正确签名/放行内核模块),否则 DKMS 编译出的
nvidia.ko可能无法加载,系统会倾向走“预编译+签名”的驱动方案。 - 提前安装
dkms、build-essential、以及当前内核对应的linux-headers,确保驱动能在当前内核上编译并加载。
否则在某些情况下,系统可能选择安装“与特定内核版本绑定”的预编译 NVIDIA 内核模块包(例如 linux-modules-nvidia-XXX-<kernel>),为了满足依赖会顺带安装/切换到匹配的新内核;而新内核上如果出现回归或模块未就绪,就会表现为触摸板、有线网、无线网等设备驱动同时失效。
2) 现象与修复步骤
2.1 现象
Ubuntu 22.04 安装/升级 NVIDIA 驱动后,重启进入新内核,出现:
- 触摸板不可用
- 有线网卡不可用
- Wi-Fi 不可用(例如 Mediatek 6106)
这类“多设备同时失效”通常不是单一设备坏了,而是:
- 切到了一个问题内核版本(回归)
- 或内核模块/固件/驱动加载链路出了问题
2.2 如果已经这样了,如何恢复
目标:先回到能用的旧内核,再清理问题内核/驱动状态,最后按正确方式重装驱动。
Step 1:进入 GRUB 选择旧内核启动
- 重启,开机时按住
Shift(部分机器是Esc)进入 GRUB - 选择
Advanced options for Ubuntu - 选择上一版可用内核启动(例如从
6.8.0-94回到6.8.0-90或更早)
启动后确认:
uname -r
Step 2:清理“问题内核”(不要删除当前正在运行的内核)
先看已安装内核:
dpkg -l | grep -E 'linux-image-[0-9]|linux-headers-[0-9]|linux-modules-[0-9]' | awk '{print $2}' | sort
删除你不想再用、且不是当前运行版本的内核(示例以 6.8.0-94 为例):
sudo apt remove --purge \
linux-image-6.8.0-94-generic \
linux-modules-6.8.0-94-generic \
linux-headers-6.8.0-94-generic
sudo apt autoremove --purge
sudo update-grub
Step 3:关闭 Secure Boot(固件层面)
Secure Boot 无法在 Ubuntu 里用命令真正“关闭”,需要去 BIOS/UEFI 里关闭。
进入 BIOS/UEFI(常见是开机按 F2/Del),找到 Secure Boot 设为 Disabled。
在系统内可检查状态:
mokutil --sb-state
Step 4:安装 DKMS 编译依赖与当前内核 headers
在重装 NVIDIA 驱动前,先保证编译环境齐全:
sudo apt update
sudo apt install dkms build-essential "linux-headers-$(uname -r)"
Step 5:重装 NVIDIA 驱动
Follow这篇教程,先清除已有驱动,然后重新安装
https://blog.motorbottle.site/archives/248
验证:
nvidia-smi
dkms status | grep -i nvidia || true
3) 如何预防(最少动作版)
在安装/升级 NVIDIA 驱动前,按顺序做:
- 关闭 Secure Boot(或明确准备走 MOK 签名流程)
- 提前装好 DKMS 编译环境与当前内核 headers:
sudo apt update sudo apt install dkms build-essential "linux-headers-$(uname -r)" - 再安装 NVIDIA 驱动:
sudo ubuntu-drivers autoinstall # 或 sudo apt install nvidia-driver-XXX
这样做的核心目的:让 NVIDIA 模块编译并安装在你正在使用的内核上,避免内核变动导致问题