从毕业后大机器再没有动过,开机才发现nvidia-smi运行不了,系统报无驱动。于是长达2天的踩坑之旅,年龄大了,记忆里不好,在此记录,作为备注。
1. 下载CUDA9.1 官网,wget的速度肯定要比迅雷的快,百兆有线跑满。
2.sudo apt-get purge nvidia* 后开机黑屏,显示器橘色灯,一段时间后(几分钟)音箱有ubuntu登陆“登”一声,只有硬启动时,有时会有ubuntu的启动选项,于是按e键,在倒数第二行尾 写个3,启动后ctrl+alt+F1进入命令行,为了保证以后开机进命令行,于是操作 在/etc/default/grub里面,将GRUB_CMDLINE_LINUX_DEFAULT一行中改为"quiet splash 3"。
3.为了保证无论如何都可以局域网连接,于是修改网卡IP 在/etc/network/interface 文件尾加入
auto eno0
iface eno0 inet dhcp
这里注意,之前用的ubuntu 桌面,所以IP地址是由network-manage引起,于是参照 https://blog.csdn.net/weixin_42155195/article/details/80683166解决。
IP地址如果配置失效,可以修改/etc/rc.local 文件 添加
sudo ifconfig eno1 up
sudo ifconfig eno1 192.168.0.149 netmask 255.255.255.0
route add default gw 192.168.0.1
exit 0
即使IP地址生效,如果命令行无法sudo apt-get update DNS解析,则 修改/etc/resolv.cfg 添加nameserver 114.114.114.114 # or 8.8.8.8
4. 下载后的run包安装,sudo sh CUDA*.run,我安装时遇到问题时driver安装failed 查看log后发现是找不到linux源代码,我的ubuntu安装由于错信了网上的一些建议,将/boot分区分的太下, 所以需要人工清
dpkg --get-selections |grep linux-image 查看安装了哪些,uname -r 查看目前使用的内核,接下来就可以大胆的
sudo apt-get autoremove 哪些不需要的低版本的linux image like linux-image-4.4.0-148-generic 。autoremove 好处是把header和extra包都自动关删除了 然后可以用dpkg -P 命令去清楚那些deinstall的包
5. 安装cuda失败,报 makefile老是报“recipe for target xxx” 错误,我用到的操作 安装了DKMS包,
sudo apt-get install dkms
安装后貌似安装成功,但是无法运行nvidia-smi于是发现还是不成功,发现linux源码包没有,于是
sudo apt-get update
sudo apt-get install linux-source
sudo apt-get source linux-image-$(uname -r)
过程中发现update更新错误,于是备份/etc/apt/source.list 并添加国内源:
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
于是安装成功cuda ,cuda安装过程如果报空间不够就加入--tmpdir=(有空间的地方) 如果找不到源码可以添加–kernel-source-path=/usr/src
If you know that the kernel source packages are installed and set up correctly, you may pass the location of the kernel source with the ‘–kernel-source-path’ flag.
对了,/usr/src 还可以看到你的显卡安装驱动版本。
6. 还有一种方法,是apt get purge nvidia-*后,使用
sudo add-apt-repository ppa:graphics-drivers/ppa 如遇证书错误,则
sudo apt-get install --reinstall ca-certificates
ubuntu-drivers devices 用来查找recommand的driver的版本eg:430 然后
sudo apt-get install nvidia-430 nvidia-prime
安装过程中如遇secure boot密码,则参看https://blog.csdn.net/roach_zfq/article/details/53883976 删除biso中的密码,
Clear Secure Boot keys
7. 我其实是先安装cuda9.1后nvidia-smi不运行后才后装的driver,cuda安装主要需要dkms,需要source 源码。
之前从来没写过原创的csdn,这次写一是为了对两天的踩坑工作做个总结,而是最近趁工作空窗期重新看一遍linux鸟叔的私房菜,看了linux的历史,看了opensource GPL, Apache等标准,发现分享才是学习计算机的核心思想,我踩坑工作也是受很多bloger的分享才能出坑。其实搞机器学习的有几个不用别人的框架,不踩到坑。谢谢大家的分享,踩坑的过程、排错的过程才是真正进步的过程。
2020.1.12
joyivan