环境:阿里云无影云桌面 / Ubuntu 22.04 / RTX 2080 Ti
现象
安装 nvidia-driver-535 后,nvidia-smi 报错:
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
dmesg 提示:
NVRM: nouveau was loaded and obtained ownership of the NVIDIA device(s).
原因
系统自带的开源驱动 nouveau 先于 NVIDIA 官方驱动占用了 GPU。云桌面环境下 nouveau 被显示子系统引用,无法直接 rmmod 卸载。
解决方案
关键一步:必须在 GRUB 内核参数中禁用 nouveau,仅靠 modprobe 黑名单不够。
# 1. 添加 modprobe 黑名单(常规操作)
cat <<EOF | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
EOF
# 2. 在 GRUB 内核启动参数中加入禁用项(关键步骤)
sudo sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau /' /etc/default/grub
# 3. 更新 GRUB 和 initramfs
sudo update-grub
sudo update-initramfs -u
# 4. 重启
sudo reboot
重启后验证:
nvidia-smi
正常输出 GPU 信息即表示成功。
踩坑总结
| 操作 | 是否生效 | 原因 |
|---|---|---|
rmmod nouveau |
❌ | 被显示子系统引用,无法卸载 |
modprobe.d 黑名单 |
❌ | initramfs 中已包含但云桌面环境仍加载 |
modprobe.d + update-initramfs |
❌ | GRUB 加载顺序早于 initramfs 黑名单 |
| GRUB 参数 + initramfs + reboot | ✅ | 从内核层面彻底阻止 nouveau 加载 |
一句话:云桌面环境必须在 GRUB 里加 modprobe.blacklist=nouveau 才能彻底禁用 nouveau。