docker突然無法啟動,NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.


  之前一直正常運行的docker突然無法啟動。由於docker中使用了CUDA,我運行nvidia-smi,結果報錯:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.
  經過一番分析,發現是Ubuntu系統自動升級了內核,導致新的內核版本與原來的顯卡驅動不匹配。用dkms更新顯卡驅動后,問題解決了,docker可以正常啟動。特在此記錄一下。

解決辦法:

  ls /usr/src | grep nvidia 查看nvidia驅動版本號,例如418.87.00
  sudo dkms install -m nvidia -v 418.87.00 使用dkms更新nvidia驅動
  如果沒有dkms,先使用“sudo apt-get install dkms”安裝dkms

dkms簡介:

  我們都知道,如果要使用沒有集成到內核之中的Linux驅動程序需要手動編譯。當然,這並不是一件什么難事,即使是對於沒有編程經驗的Linux使用者,只要稍微有點hacker的意識,努力看看代碼包里的Readme或者INSTALL文件,按部就班的執行幾條命令還是很容易辦到的。但這里還有一個問題,Linux模塊和內核是有依賴關系的,如果遇到因為發行版更新造成的內核版本的變動,之前編譯的模塊是無法繼續使用的,我們只能手動再編譯一遍。這樣重復的操作有些繁瑣且是反生產力的,而對於沒有內核編程經驗的使用者來說可能會造成一些困擾,使用者搞不清楚為什么更新系統之后,原來用的好好的驅動程序突然就不能用了。這里,就是Dell創建的DKMS項目的意義所在。DKMS全稱是Dynamic Kernel Module Support,它可以幫我們維護內核外的這些驅動程序,在內核版本變動之后可以自動重新生成新的模塊。
  在使用dkms之前首先需要確保系統中已經安裝了 DKMS。在Ubuntu下可以執行下面這個命令安裝:sudo apt-get install dkms,安裝完畢之后,我們就可以開始使用 DKMS了

參考文檔:

https://www.cnblogs.com/wwang/archive/2011/06/21/2085571.html

關閉內核自動更新的方法

sudo vim /etc/apt/apt.conf.d/10periodic
sudo vim /etc/apt/apt.conf.d/20auto-upgrades
后面部分全部改成 “0”
然后 reboot


免責聲明!

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



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