## Description 某次斷電後,Nvidia Driver 的版本從 525 降回 460,多次重裝 Driver 與重新開機,都沒辦法升級回 525 版,以下筆記紀錄我解決此問題的過程。 OS: Ubuntu 20.04 ## Steps 1. 查看是否有任何 Nvidia Package + `dpkg -l | grep nvidia` 2. 將這些 Package 一個不留的刪光 + `sudo apt-get remove --purge '*nvidia*'` 3. 反覆前兩步驟,若有殘留的套件則手動刪除 + e.g. `sudo apt-get remove --purge nvidia-driver-525-server` 4. 檢查是否有程序正在使用 Nvidia 裝置 + `sudo lsof /dev/nvidia*` 5. 發現有 Xorg 正在啟用圖形化介面,把他關掉 + `sudo systemctl isolate multi-user.target` 6. 執行 Nvidia 官方的刪除程式 + `sudo nvidia-uninstall` 7. 刪除多餘的殘留套件 + `sudo apt autoremove` 8. 檢查 DKMS 的 Nvidia 狀態 + 安裝 DKMS 套件:`sudo apt-get install dkms` + 檢查 DKMS 狀態:`sudo dkms status` 9. 刪除 DKMS 底下所有與 Nvidia 相關的資料夾,例如: ```sh # ls /var/lib/dkms sudo rm -rf /var/lib/dkms/nvidia-srv sudo rm -rf /var/lib/dkms/nvidia-440 sudo rm -rf /var/lib/dkms/nvidia-465 ``` 10. **(非常重要)重新開機** + 重開前確認 `nvidia-smi` 指令並不存在,但即便不存在,重開之後也有可能冒出來 11. 重開後輸入 `nvidia-smi` 確認**此指令並不存在**,代表大致上刪除成功 12. 重新安裝 Nvidia Driver + 查詢有哪些 Driver 版本可以安裝 + `apt-cache search nvidia-driver` + 安裝目標版本的驅動程式,例如 525 為 CUDA 12.0 + `sudo apt-get install nvidia-driver-525-server` + 如果是使用桌面版的 Ubuntu 則可以透過以下指令安裝: + `sudo ubuntu-drivers autoinstall` 13. 安裝過程中發生類似以下的訊息: :::spoiler Logging Message ``` Setting up nvidia-dkms-525-server (525.105.17-0ubuntu0.20.04.1) ... update-initramfs: deferring update (trigger activated) INFO:Enable nvidia-srv DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/lenovo_thinkpad DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/dell_latitude DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/put_your_quirks_here Loading new nvidia-srv-525.105.17 DKMS files... Building for 5.4.0-152-generic Building for architecture x86_64 Building initial module for 5.4.0-152-generic Secure Boot not enabled on this system. Done. nvidia.ko: Running module version sanity check. Error! Module version 525.105.17 for nvidia.ko is not newer than what is already found in kernel 5.4.0-152-generic (530.41.03). You may override by specifying --force. ``` ::: 14. 解決方法:透過 DKMS 強制載入 + `sudo dkms install -m nvidia-srv -v 525.105.17 -k 5.4.0-152-generic --force` + 其中 `525.105.17` 與 `5.4.0-152-generic` 是根據 Logging Message 決定的 + 安裝的若不是 Server 版的 Nvidia Driver,則 `-m` 後面可能不是接 `nvidia-srv` + 可能是根據 `INFO:Enable ...` 決定的 + 可能訊息長的不會完全一樣,但如果有類似 `.ko` 的訊息跑出來就可以試試看強制載入 DKMS 的指令。 15. 保險起見可以再重開一次。 16. 再次執行 `nvidia-smi` 確定驅動程式版本恢復成 525 了,萬歲 :tada: ## Reference + [ChatGPT Supporting](https://chat.openai.com/share/ec9ba59b-9b8c-45e3-bbb0-d88a9293ff6c) + [AskUbuntu: DKMS Status](https://askubuntu.com/a/1246540)