【2022新教程】Ubuntu server 20.04如何安裝nvidia驅動和cuda-解決服務器ssh一段時間后連不上的問題


0 背景

最近實驗室的gpu服務器老是出問題,需要重新裝顯卡驅動。網上教程非常老舊,很多說的都不知所雲
作者曾經嘗試的安裝方法和結果:
官網下載driver——安裝失敗
直接用cuda toolkit,一口氣安裝驅動和cuda——安裝失敗
所以作者采用了本文中的方法。
本教程旨在記錄本人親自安裝成功的一次經歷。在相同的系統環境下可安裝成功,不同系統環境僅供參考,不保證成功。
本文旨在簡潔明了、可直接復制命令執行、可復現、可讀性好
本文環境:
ubuntu server 20.04,其他系統僅供參考!

注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!
注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!
注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!

1 安裝nvidia驅動

1.1 查看是否安裝了gcc

gcc -v

若沒有安裝,則輸入下面的命令,直接把包括gcc在內很多開發工具包一同安裝

sudo apt-get install build-essential

1.2 禁用nouveau驅動

編輯 /etc/modprobe.d/blacklist-nouveau.conf 文件,添加以下內容:

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

關閉nouveau:

echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!
注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!
注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!
完成后,重新生成內核並重啟:

sudo update-initramfs -u
sudo reboot

重啟后,執行:lsmod | grep nouveau如果沒有屏幕輸出,說明禁用nouveau成功。否則,應重新執行第1.2小節

1.3 安裝驅動

使用命令ubuntu-drivers devices獲取可用驅動信息,如果命令不存在自己安裝一下。
輸出為(不同電腦依據配置輸出不同,我這里還有報錯但是不影響)

ERROR:root:could not open aplay -l
Traceback (most recent call last):
  File "/usr/share/ubuntu-drivers-common/detect/sl-modem.py", line 35, in detect
    aplay = subprocess.Popen(
  File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'aplay'
== /sys/devices/pci0000:17/0000:17:00.0/0000:18:00.0 ==
modalias : pci:v000010DEd00002204sv000010DEsd00001454bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-495 - distro non-free
driver   : nvidia-driver-460-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

從上述信息中找到driver,后面找recommend,發現了系統推薦安裝的驅動程序nvidia-driver-470。這里考慮到是ubuntu server,所以我最終選擇了nvidia-driver-470-server。
執行命令安裝驅動:sudo apt install nvidia-driver-470-server
等待安裝完成后,執行nvidia-smi可以輸出gpu監控界面,則驅動安裝成功!從監控信息中我們可以看到cuda版本是11.4,所以下面我們安裝cuda toolkit的時候也是安裝這個版本的。

2 安裝cuda

在https://developer.nvidia.com/cuda-toolkit-archive中找到相應的版本。這里我們選用11.4的版本,采用runfile的安裝形式。
直接輸入以下命令:

wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
sudo sh cuda_11.4.0_470.42.01_linux.run

注意,當提醒你已經安裝了driver的時候,直接continue。當選擇安裝內容的時候,務必把driver前面的x取消掉,因為我們已經安裝了驅動!!!
安裝完成后重啟,輸入nvcc -V顯示相關信息,則安裝成功!

3 解決服務器ssh一段時間后連不上的問題

裝好驅動后,發現服務器一段時間后ssh就連不上了,必須得重啟才行。后來看了服務器日志才發現是服務器設置了自動掛起。
輸入命令:systemctl status sleep.target
輸出信息:

● sleep.target - Sleep
Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd.special(7)

可以發現loaded。說明自動sleep是啟用了。
我們輸入命令:sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target將其禁用。
輸入命令:systemctl status sleep.target
輸出信息:

● sleep.target
Loaded: masked (Reason: Unit sleep.target is masked.)
Active: inactive (dead)

說明禁用成功!
再次提醒:
注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!
注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!
注意,本文僅適用於ubuntu server,不需要圖形界面,沒有對圖形界面進行特殊考慮和驗證!依賴圖形操作界面的讀者慎用!
如果讀者依賴圖形界面,本文沒有進行特殊考慮和驗證,不能確定會不會有問題,請讀者留意並結合其他教程使用!

4 參考資料

https://blog.csdn.net/qq_34387533/article/details/116011839
https://www.cnblogs.com/pprp/p/9430836.html
https://zhuanlan.zhihu.com/p/393152883


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM