双系统win10+ubantu系统
卸载ubantu
首先应知道自己的电脑分区格式(自行百度GBT和MBR分区)。
如果电脑是GPT分区,则下载EasyUEFI按照教程进行删除(直接打开软件就可以看到引导项,直接删除即可);
如果是MBR分区,则下载EasyBCD按照教程进行设置和删除。
安装双系统
安装ubantu系统时,双系统安装ubantu需要在BIOS中设置secure boot为Disable。且注意:boot引导必须选择UEFI模式!!!
(因为选择lagency模式重装,开机一直出现grub,修复也修复不好折磨了几天)
如果用U盘安装:安装时选择“try ubuntu without installation”模式安装;分区时第一个分区给/boot分区,且/boot分区为primary主分区、其他swap、/和/home分区为logical逻辑分区;
install时候Device for boot loader installation一定要选择boot所在分区。
win10的“快速启动”会影响Grub开机引导过程,可能出现无法载入Ubuntu的状况,关闭掉“快速启动”。
NVIDIA驱动安装
1.首先卸載掉此前安裝的驱动 :
sudo sh ./NVIDIA-Linux-x86_64-410.93.run --uninstall
或者
sudo apt-get remove nvidia-*
sudo apt-get remove --purge nvidia*;
2.再禁用自带驱动
输入命令:
sudo gedit /etc/modprobe.d/blacklist.conf
在文件后添加
blacklist nouveau
options nouveau modeset=0
保存文件后执行配置生效
sudo update-initramfs -u
重启生效
检查:
lsmod | grep nouveau
若无提示则被可以ji xu安装
3.安装驱动(台式机不需要进入tty也可以安装)
进入tty的方法:先执行
sudo service lightdm stop
黑屏后出现字符后同时按住ctrl+Alt+F1,
回到桌面的方法:
sudo service lightdm start
在安装驱动之前需要安装gcc和相应的依赖:
sudo apt-get install build-essential
sudo apt-get install cmake
首先官网上下载对应版本驱动,然后赋予权限:
sudo chmod a+x ./NVIDIA-Linux-x86_64-410.93.run
安装:
sudo ./418.run --no-opengl-files --no-x-check --no-nouveau-check
安装中提示Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?是否安装NVIDIA选择no。
提示你nvidia-xconfig时,就视自己的电脑情况而定,如果电脑是双显卡(双独显、集显和独显)就选择不安装,如果只有一个显卡就选择安装
若提示是否安装opengl文件时,一定选择no不要安装!!!
如果提示 :
这里选择:NO
注意:如果出现以下提示,说明由于系统的 BIOS 启用了 Secure Boot,这可能会导致内核加载失败。此时,您需要进入 BIOS 设置中禁用 Secure Boot.
安装完后记得重启!(若不成功可能需要开机引导bios中设置)
如果重启后黑屏,可以运行:sudo ./Nvidia-xxxx.run --uninstall
安装cuda和cudnn
(有种说法是anaconda自带cuda和cudnn,或者安装tensorflow的GPU版本后【原理也是通过canda安装而不是pip安装】,不需要安装cuda,也尝试过没有成功)
当前能成功的是用pip安装的tensorflow和cuda用官网下载的版本,需要注意的是,cuda和cudnn的组合和tensorflow版本相对应。
cuda卸载:
sudo /usr/local/cuda-10.1/bin/cuda-uninstaller
(如果是10.0版本及以下)
sudo/usr/local/cuda-9.0/bin/uninstall_cuda_10.0.pl
sudo rm -rf /usr/local/cuda-10.1
1 安装cuda
下载并执行.run文件,过程中记住不要安装nvidia驱动,
运行命令:
sudo ./cuda_10.1.168_418.67_linux.run
注意:在提示是否install symbolic link的时候,即是否创建软连接时候,可以直接选择no,此时/usr/local/下不会生成cuda文件夹,
等待所有版本cuda安装完成后,再根据版本需要以创建软连接的方式选择cuda版本即可。(参考非root安装cuda)
2 安装cudnn
先解压cudnn-9.0-linux-x64-v7.1-2.tgz,然后切换到刚刚解压出来的文件夹路径
cd cuda (cudnn解压后的文件夹名)
#复制cudnn.h到cuda安装文件夹中的include文件夹下
sudo cp include/cudnn.h /usr/local/cuda/include/
#复制lib64中的libcudnn*动态链接库至cuda安装文件夹中的lib64文件夹
sudo cp lib64/* /usr/local/cuda/lib64/
#设置权限(获取所有和阅读权限)
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
更新软连接(dudnn版本安装冲突情况下)
注意:cudnn11.X版本安装有些不同,解压后只有lib和include两个文件夹,此时命令为:
sudo cp ./include/cudnn*.h /usr/local/cuda-xx/include
sudo cp -p ./lib/libcudnn* /usr/local/cuda-xx/lib64
sudo chmod a+r /usr/local/cuda-xx/include/cudnn*.h /usr/local/cuda-xx/lib64/libcudnn*
3 设置环境变量:
sudo vim ~/.bashrc
在安装的时候,可以进行多版本的cuda安装,这样,就可以通过软连接的方式,把具体的版本指向/usr/local/cuda/,而系统中的各路程序调用cuda时,会默认首先在/usr/local/cuda/下搜索加速库文件,
需要设置/usr/local/cuda/为默认的cuda环境
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda/bin:$PATH
LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,这样就可以让需要调用cuda时,找到神经网络加速库.so文件
使生效:
source ~/.bashrc
再通过创建软连接的方式,把具体的cuda版本指向/usr/local/cuda/
比如:
把cuda-11.1指向cuda,从而代码[torch、tensorflow]在找cuda时,可直接通过软链接找到uda-11.1
sudo ln -s /usr/local/cuda-11.1 /usr/local/cuda
如果已创建过软连接,需要先删除原版本的cuda软连接
sudo rm -rf /usr/local/cuda
报错1:在检查:nvidia-smi nvidia-settings,提示Error:Unable to load the ‘nvidia-drm’ kernel module .
出现这个问题最有可能的原因是你安装的Ubuntu是UEFI模式启动的,但是在BIOS中却打开了Security BOOT选项。 正确做法是禁用该选项,即注意ubantu的安装时候的模式和BIOS中的选项。
报错1:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
找不到cudalib.so文件的话,执行:sudo ldconfig /usr/local/cuda-9.0/lib64(注意自己cuda版本)可能又出现报错,提示:/usr/local/cuda-10.0/lib64/libcudnn.so.7 is not a symbolic link,此时组要删除文件夹中的文件sudo rm -rf libcudnn.so libcudnn.so.7,然后通过建立软链接,使得.so文件指向.so.7最终指向cudnn加速库.so.7.4.2。
还有种可能是tensorflow安装的版本不一致导致的,比如cuda10.1要求tensorflow的版本为1.12.0至少,不然它自己会寻找libcuda.so.9.0的动态链接,而安装tensorflow1.12.0版本不会报错。
(sudo ldconfig /usr/local/cuda-9.0/lib64命令的意思是以超级权限执行动态链接库管理命令,让lib64下的动态链接库为系统所共享,这样就可以解决找不到动态链接库libcuda.so的错误)
报错2:Could not load dynamic library ‘libcudart.so.10.0’; dlerror: libcudart.so.10.0: cannot open
一般出现在conda的base环境未安装tensorflow-gpu,直接创建虚拟环境,并在虚拟环境中使用tensorflow-gpu,导致cudatoolkit未安装。因为conda安装了Cuda的子集,专门用于pytorch和tensorflow使用,比如:torch默认先找/usr/local/cuda(为什么安装的时候,提示生成一个软连接,这样就可以让程序通过访问usr/local/cuda来访问目标文件夹比如usr/local/cuda-10.0,而且cuda-10.0文件夹之前已经export为全局变量了,这样可以让),找不到才找conda的安装的cuda子集)一旦找不到这个文件目录,就会报错。解决办法:conda install cudatoolkit
补充:ubantu的软硬链接和.so文件以及环境变量
简单理解:
(1)硬链接可认为是一个文件拥有两个文件名;而软链接则是系统新建一个链接文件,此文件指向其所要指的文件,创建软连接如:ln -s 原始文件或文件夹 目标文件或文件夹,比如神经网络共享动态库,一般是.so连接到.so.7,然后.so.7再连接到cudnn的.so.7.4.2。
(2).so文件就是共享动态库,一般是 名字.版本.so的格式,名字代表了动态库是哪个工程生成的。
(3)环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息,即bash可以顺着PATH变量找到命令或者程序的位置而快速打开文件目录。
命令 “PATH=$PATH:路径”可以把这个路径加入环境变量,配置环境变量时有两个文件可 选:“/etc/profile”和用户主目录下的“.bash_profile”,“/etc/profile”对系统里所有用户都有效,用户主目录下 的“.bash_profile”只对这个用户有效。
在 /etc/profile文件中设置,export的意思就是将局部变量设置为环境变量
报错3:/sbin/ldconfig.real: /usr/local/cuda-11.8/targets/x86_64-linux/lib/libcudnn.so.8 is not a symbolic link…
猜测可能是安装cuda时候已经建立了软链接,即生成了/usr/local/cuda文件夹,再安装cudnn时候没注意到,把cudnn的文件安装到/usr/local/cuda-xx下面,而没有更新软链接。
解决:跟多duda版本切换一样,先接删除/usr/local/cuda,再建立软连接。
sudo rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-11.8/ /usr/local/cuda
关于nvidia-smi中的CUDA 版本与nvcc不一致。
其实是因为CUDA 有两种API,分别是 运行时 API 和 驱动API,即所谓的 Runtime API 与 Driver API。命令Nvidia-smi显示的是 CUDA Driver API的型号( CUDA Driver API是依赖于 NVIDIA 驱动 安装的)。而nvcc的结果是对应 CUDA Runtime API。
网络连接
ubantu系统突然不能连接网络,或是系统新装好不能连接网络,标志为:网线能用;ifconfig没有eth0项;网络连接logo一直在尝试连接;
可以在网络设置下,选择Edit connections,然后对Wired connecions选择Edit,在IP4 Settings下,配置address地址、Netmask子网掩码、Gateway默认网关,然后在DNS servers中填写一个区别ip4地址中的地址,比如ip4地址为192.168.100.168,该选项中填写192.168.100.68,点击save。
报错4 Ctrl+Alt+F1~F6后,显示黑屏。Ctrl+Alt+F7可以正常返回图形模式
原因是启动时的分辨率与显卡不兼容导致。
解决方法
解决方法是设置Grub为true text-mode启动。
1.终端输入以下命令
sudosed -i-e's/#GRUB_TERMINAL/GRUB_TERMINAL/g'/etc/default/grub
2.更新grub
sudo update-grub
3.重启
sudo reboot