想在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
然后进入:系统设置->软件和更新->附件驱动,选择更新的显卡驱动。
1.2手动run文件安装
推荐这种方式,我们可以根据具体机器配置具体选项。避免出现黑屏,循环登录等问题。
2.run文件安装详解
2.1手动下载驱动
官方显卡驱动NVIDIA-Linux-x86_64-390.48.run
选择合适的参数后可以下载
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 #若弹出设置对话框,亦表示驱动安装成功