[work*] 最全面解析 Ubuntu 16.04 安装nvidia驱动

时间:2024-05-23 18:26:38

想在Lab的台机上跑机器学习代码, 可以nvidia-smi, but一直报

AssertionError:
Found no NVIDIA driver on your system. Please check that you
have an NVIDIA GPU and installed a driver from
http://www.nvidia.com/Download/index.aspx

这个错误, 很是诡异, 于是打算重装驱动, 按照这个来做十分给力

 

解析 Ubuntu 16.04 安装nvidia驱动 各种错误

0.环境

     操作系统:ubuntu 16.04LTS
     显卡:nvidia Geforce 970

1.安装方式说明

1.1ppa源安装

不建议通过这种方式安装,因为你无法配置具体选项且成功后需要经常手动更新驱动。当然鉴于其他方式安装对新手较为繁琐且 问题很多,如果你仅仅是需要临时搭建或者运气非常好,那么可以尝试。确实非常简单。

sudo add-apt-repository ppa:xorg-edgers/ppa #添加ppa源
sudo add-apt-repository ppa:graphics-drivers/ppa #添加ppa源
sudo apt-get update #更新apt-get

然后进入:系统设置->软件和更新->附件驱动,选择更新的显卡驱动。 
[work*] 最全面解析 Ubuntu 16.04 安装nvidia驱动

1.2手动run文件安装

推荐这种方式,我们可以根据具体机器配置具体选项。避免出现黑屏,循环登录等问题。

2.run文件安装详解

2.1手动下载驱动

官方显卡驱动NVIDIA-Linux-x86_64-390.48.run 
选择合适的参数后可以下载 
[work*] 最全面解析 Ubuntu 16.04 安装nvidia驱动

2.2卸载旧驱动

卸载可能存在的旧版本 nvidia 驱动(对没有安装过 nvidia 驱动的主机,这步可以省略,但推荐执行,无害),如果你安装失败了也需要执行这一步。

 sudo apt-get remove --purge nvidia*
 #若安装失败也是这样卸载以及
 ./NVIDIA-Linux-x86_64-390.48.run --uninstall #确保卸载干净。

2.3安装可能需要的依赖(可选,脸红可以跳过)

这里是为了确保万无一失

#其实很多你的环境已经安装了,所以一般并没有多少时间。
 sudo apt-get update 
 sudo apt-get install dkms build-essential linux-headers-generic
 sudo apt-get install gcc-multilib xorg-dev
 sudo apt-get install freeglut3-dev libx11-dev libxmu-dev install libxi-dev  libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

2.4禁用noueau驱动

 sudo vi /etc/modprobe.d/blacklist-nouveau.conf 
 #在文件 blacklist-nouveau.conf 中加入如下内容:
  blacklist nouveau
  blacklist lbm-nouveau
  options nouveau modeset=0
  alias nouveau off
  alias lbm-nouveau off
  #保存   :wq
#禁用nouveau 内核模块
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
reboot #重启
lsmod |grep nouveau #无显示则成功 当然驱动没了你的桌面分辨率会比较大。

2.5进入blos关闭secure boot (华硕还有fast boot)

否则无法安装成功。

2.6进入tty关闭图形界面

按 CTRL + ALT + F1 键登录,从 GUI 转至终端tty1(全黑色)。为了重建视频输出,必须先将其暂停。

sudo service lightdm stop

如果命令行没有效果,Ubuntu 新版本使用 systemctl 替换 lightdm。

2.7 运行.run文件选择合适选项。

cd 下载目录
chmod a+x NVIDIA-Linux-x86_64-384.90.run #添加权限
sudo ./NVIDIA-Linux-x86_64-384.90.run --dkms --no-opengl-files
  • –no-opengl-files:表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为”login loop”或者”stuck in login”。 
    当然脸红的情况下并不会。 
    必选参数解释:因为NVIDIA的驱动默认会安装OpenGL,而Ubuntu的内核本身也有OpenGL、且与GUI显示息息相关,一旦NVIDIA的驱动覆写了OpenGL,在GUI需要动态链接OpenGL库的时候就引起问题。
  • –no-x-check:表示安装驱动时不检查X服务,非必需,我们已经禁用图形界面。
  • –no-nouveau-check:表示安装驱动时不检查nouveau,非必需,我们已经禁用驱动。
  • -Z, –disable-nouveau:禁用nouveau。此参数非必需,因为之前已经手动禁用了nouveau。
  • -A:查看更多高级选项。
  • -dkms(默认开启)在 kernel 自行更新时将驱动程序安装至模块中,从而阻止驱动程序重新安装。在 kernel 更新期间,dkms 触发驱动程序重编译至新的 kernel 模块堆栈。

2.8 关于pre-script failed

运行时,你可能会收到一条 pre-install script failed 信息。这没什么影响,选择继续安装就行,因为预安装脚本包含命令 exit 1,其目标是确保你真的想安装驱动程序。 
具体解释见我的博客。https://blog.****.net/u014561933/article/details/79958130 
当然你前面的工作没做对,会提示其他报错信息。日志在/var/log/nvidia-install.log

2.9 安装过程中的选项

  • dkms 安装最好 选yes
  • 32位兼容 安装最好 选yes
  • x-org 最好别安,选no,有的电脑可能导致登录界面黑屏

2.10安装完成后验证

nvidia-smi #若列出GPU的信息列表,表示驱动安装成功

若失败则跳回第一步卸载后重新开始。

2.11 重新进入桌面

sudo service lightdm start #没自动跳的话 crtl+alt+f7
nvidia-settings #若弹出设置对话框,亦表示驱动安装成功