問題描述
最近,各個操作系統針對Intel CPU的Meltdown
(熔斷)和Spectre
(幽靈)這兩個芯片級的設計漏洞推出了安全補丁。在更新了新的Kernel之后,我們的AI服務器運行的Ubuntu 16.04系統的Linux Kernel升級到了4.13.0-31-generic
。重啟之后,發現GPU無法正常使用,出現無法登錄系統、分辨率改變等問題,與Ubuntu 16.04安裝NVIDIA驅動后循環登錄問題中描述的癥狀一致。初步判斷原因是顯卡驅動(nvidia driver 387.26
)和新的linux kernel(4.13.0-31-generic
)不兼容導致的。去Nvidia的devtalk逛了一圈,確實很多人報告了這個問題。
- 操作系統:
ubuntu 16.04
- 系統內核:
Linux version 4.13.0-31-generic
- GPU:
GTX 1080
- CUDA:
cuda-9.1
,cudnn-7.0.1
,deb (local)安裝方式 - nvidia driver:
nvidia driver 387.26
Nvidia已經更新了驅動,只需要安裝新的驅動就可以解決linux kernel和nvidia driver不兼容的問題。不過,devtalk安裝的新驅動版本為nvidia driver 390
,在嘗試了單獨下載該驅動的run文件安裝方式和deb (network)安裝方式之后,發現前一種安裝方式因為著名的nouveau
問題而安裝失敗,后一種依舊安裝387.26版本的驅動,最終放棄了這兩種安裝方式,采用了第三種PPA的途徑。
解決方法
首先,在PPA GPU查看驅動的版本(Current official release: nvidia-387
(387.34)...)
- 卸載現有GPU驅動
$ sudo apt-get remove --purge nvidia-*
$ sudo apt-get autoremove
- PPA安裝新的GPU驅動
# 如果沒有add-apt-repository命令,安裝 software-properties-common即可
$ sudo add-apt-repository ppa:graphics-drivers
$ sudo apt-get update
# 安裝新的驅動nvidia-387.34
$ sudo apt-get install nvidia-387
- 重啟
- deb (network)的方式安裝CUDA 9.1。如果用deb local的安裝方式,還是會安裝舊的驅動版本。安裝好之后,不要忘記設置環境變量。