Debian系統顯示卡驅動從官方驅動回退到Nouveau

foxhank發表於2024-10-29

系統環境:

  • Debian 12.5,有桌面環境
  • Nvidia GTX650
  • 顯示卡驅動:nvidia-tesla-470-470.256.02

本來照著網上的教程想要安裝官方的驅動,結果發現雖然nvidia-smi可以正常顯示,但是桌面環境卻崩掉了,開機不是黑屏就是極低解析度,顯示Software Rendering(軟體渲染)。

嘗試搜尋教程無果,遂放棄,準備回退到nouveau驅動。

Nouveau是一個開源的驅動程式專案,旨在為顯示卡提供開源驅動支援,其優勢在於免費、與Linux核心整合(自動安裝);缺點是相比NVIDIA官方閉源驅動,效能通常較低,且對新硬體的支援可能滯後。

1.解除安裝官方驅動

我使用.run檔案安裝的驅動,使用

sudo nvidia-uninstall

,如果使用的是apt安裝的驅動,使用

sudo apt-get remove --purge '^nvidia-.*'

,等待解除安裝結束。

image-20241022111337007.png

2.取消黑名單

網上的教程均為查詢/etc/modprobe.d/下是否有與nouveau有關字樣:

grep -r "nouveau" /etc/modprobe.d/

但我已經刪除相關內容,重新啟動仍然報錯:

root@debian:~$ sudo journalctl -b | grep -i nouveau
10月 22 09:39:48 debian systemd-modules-load[321]: Module 'nouveau' is deny-listed
10月 22 09:40:49 debian /usr/libexec/gdm-x-session[1553]: (==) Matched nouveau as autoconfigured driver 0
10月 22 09:40:49 debian /usr/libexec/gdm-x-session[1553]: (II) LoadModule: "nouveau"
10月 22 09:40:49 debian /usr/libexec/gdm-x-session[1553]: (II) Loading /usr/lib/xorg/modules/drivers/nouveau_drv.so
10月 22 09:40:50 debian /usr/libexec/gdm-x-session[1553]: (II) Module nouveau: vendor="X.Org Foundation"
10月 22 09:40:50 debian /usr/libexec/gdm-x-session[1553]: (II) NOUVEAU driver Date:   Sat Jan 23 12:24:42 2021 -0500
10月 22 09:40:50 debian /usr/libexec/gdm-x-session[1553]: (II) NOUVEAU driver for NVIDIA chipset families :
root@debian:~# modinfo nouveau
filename:       /lib/modules/6.1.0-22-amd64/kernel/drivers/gpu/drm/nouveau/nouveau.ko
firmware:       nvidia/gp100/acr/ucode_load.bin
firmware:       nvidia/gp100/acr/bl.bin
firmware:       nvidia/gm206/acr/ucode_load.bin
firmware:       nvidia/gm206/acr/bl.bin
firmware:       nvidia/gm204/acr/ucode_load.bin
firmware:       nvidia/gm204/acr/bl.bin
firmware:       nvidia/gm200/acr/ucode_load.bin

lsmod | grep nouveaudmesg | grep nouveau無輸出,提示“Module 'nouveau' is deny-listed”。說明還有某處未取消黑名單。

詢問ChatGPT,得知還可能有其它地方存在配置檔案:

# 查詢modprobe配置
grep -r "nouveau" /lib/modprobe.d/
grep -r "nouveau" /usr/lib/modprobe.d/
# 查詢grub配置
cat /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="quiet"
# 這一行不應該存在類似"nouveau.modeset=0"字樣

我發現:

grep -r "nouveau" /lib/modprobe.d/
/lib/modprobe.d/nvidia-installer-disable-nouveau.conf:blacklist nouveau
/lib/modprobe.d/nvidia-installer-disable-nouveau.conf:options nouveau modeset=0

原來是Nvidia官方的run檔案在/lib/modprobe.d/建立了一個配置檔案,導致nouveau禁用。

刪除此檔案,隨後重新生成 initramfs:

sudo rm /lib/modprobe.d/nvidia-installer-disable-nouveau.conf
sudo update-initramfs -u

3.清理配置檔案

驅動安裝過程中可能生成了部分配置檔案,刪除(或改名)即可。

sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak

清理環境,參考文章Debian 12 安裝Nvidia驅動及黑屏故障排除(純保姆級教程)_debian12 nvidia-CSDN部落格

移除 CUDA 和相關庫:

sudo apt-get --purge remove "cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

移除 NVIDIA 驅動程式和相關的庫:

sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"

自動移除不再需要的依賴包:

sudo apt-get autoremove

更新索引並清理快取(可選):

sudo apt-get update
sudo apt-get clean

重新啟動,恢復正常。

root@debian:~# lsmod | grep nouveau 
nouveau              2433024  16
mxm_wmi                16384  1 nouveau
i2c_algo_bit           16384  1 nouveau
drm_display_helper    184320  1 nouveau
drm_ttm_helper         16384  1 nouveau
ttm                    94208  2 drm_ttm_helper,nouveau
drm_kms_helper        212992  2 drm_display_helper,nouveau
drm                   614400  11 drm_kms_helper,drm_display_helper,drm_ttm_helper,ttm,nouveau
video                  65536  2 asus_wmi,nouveau
wmi                    36864  5 video,asus_wmi,wmi_bmof,mxm_wmi,nouveau
button                 24576  1 nouveau
cat /var/log/Xorg.0.log | grep nouveau
[   384.340] (==) Matched nouveau as autoconfigured driver 0
[   384.341] (II) LoadModule: "nouveau"
[   384.341] (II) Loading /usr/lib/xorg/modules/drivers/nouveau_drv.so
[   384.341] (II) Module nouveau: vendor="X.Org Foundation"

image-20241022223904887.png

4.總結:

  1. 官方的那個.run檔案有大問題,建議還是使用自帶的軟體包管理器(如:apt)來進行安裝(ps:也有可能是我的亮機卡實在太老了...?)

  2. 伺服器能跑就不要去動它!!!

個人主頁:www.foxhank.cn

相關文章