服务器配置tensorflow2.0(ubuntu16.04+Nvidia驱动+cuda10.0+cudnn7.6)
目录
- Ubuntu系统
- tensorflow
- Nvidia驱动
- CUDA&cuDnn
- Anaconda安装tensorflow2.0
- Pycharm配置
- 设置分用户
- Ubuntu常用操作
Ubuntu系统
安装
1.由于主板对于视频高清口相应比较慢, 显示器出现无信号属于正常现象,等10s左右时即可看到启动界面。
2.在开机时,按DEL进入BOIS,设置U盘启动为优先启动顺序。这里有UEFI 和非UEFI两种引导方式,建议使用非UEFI的方式进行引导
3.安装时在选择Ubuntu安装类型时选择其它选项可以自定义分区:
在linux系统中至少必须有两个挂载点(磁盘分区),分别是 / 及 swap ,其余是否要将其他的挂载点独立分割出来则视你的规划需求而定。可参考以下建议:
关于分区的具体细节请参照
https://www.cnblogs.com/sinferwu/p/7953853.html
4. 安装完成之后会提示重启,此时拔出U盘媒介,否则会提示拔出U盘(有时拔出后会立马进入系统, 有时会卡死,需要强行重启,以防万一,还是在提示重启时或者重启时及时拔出U盘比较妥当)
5. 进入系统后首先打开命令行,输入sudo passwd 设置root密码(所有sudo 命令都需要root密码,设置好后请牢记)
6. 联网
7. 系统配置
sudo apt-get update
sudo apt-get upgrade #更新系统
安装时遇到的问题
使用UEFI引导时黑屏
由于Ubuntu对显卡支持的问题,目前发现当使用UEFI引导在安装时会出现黑屏问题,此时选择“Install Ubuntu”,并按e出现可编辑内容
"Boot Options ed boot=… initrd=/casper/initrd.lz quiet splash —"修改红色部分(删去“—”并添加“nomodeset”)如下
“Boot Options ed boot=… initrd=/casper/initrd.lz nomodeset quiet splash”
参考博客:
https://www.cnblogs.com/huadongw/p/6505976.html
https://blog.csdn.net/cheneykl/article/details/79111618
编辑好后按F10键,黑屏等待几秒钟顺利的话即可进入Ubuntu安装引导界面,按照提示进行设置
Tensorflow
安装时要考虑驱动版本、cuda版本以及tensorflow的对应关系,建议先从Tensorflow官网上查看支持的版本,本文以安装Tensorflow2.0为例,需要cuda10.0,cudnn7.6。现在优先在https://www.tensorflow.org/上按官网教程进行操作,如果不行,再手动安装各个模块。
Nvidia驱动
Nvidia驱动大概有三种安装方式,一种是手动下载.run或者.deb文件,自行设置一些参数进行安装,步骤多,但成功率高,另一种是ubuntu系统添加nvidia驱动源,通过apt-get 安装,网上教程基本都以这三种为主。由于ubuntu对nvidia的支持不是很好,不论使用哪种方法,都必须先禁用ubuntu原有的nouveau驱动,否则后边会有黑屏或者重新登录界面等问题
参考链接https://blog.csdn.net/u014561933/article/details/79958017
禁用nouveau驱动
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 #无显示则成功 当然驱动没了你的桌面分辨率会比较大。
进入tty关闭图形界面
按 CTRL + ALT + F1 键登录,从 GUI 转至终端tty1(全黑色)。为了重建视频输出,必须先将其暂停。
sudo service lightdm stop
如果命令行没有效果,Ubuntu 新版本使用 systemctl 替换 lightdm。
运行下载的.run文件
cd 下载目录
chmod a+x NVIDIA-Linux-x86_64-xxx.run #添加权限
sudo ./NVIDIA-Linux-x86_64-xxx.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 模块堆栈。
关于pre-script failed
运行时,你可能会收到一条 pre-install script failed 信息。这没什么影响,选择继续安装就行,因为预安装脚本包含命令 exit 1,其目标是确保你真的想安装驱动程序。
安装过程中的选项
- dkms 安装最好 选yes
- 32位兼容 安装最好 选yes
- x-org 最好别安,选no,有的电脑可能导致登录界面黑屏
安装完成后验证
1.nvidia-smi #若列出GPU的信息列表,表示驱动安装成功
若失败则跳回第一步卸载后重新开始。
重新进入桌面
sudo service lightdm start #没自动跳的话 crtl+alt+f7
nvidia-settings #若弹出设置对话框,亦表示驱动安装成功
通过Ubuntu自动安装nvidia驱动
# 把显卡驱动加入PPA
sudo add-apt-repository ppa:graphics-drivers
sudo apt-get update
#查找并安装最新驱动
sudo apt-cache search nvidia
sudo apt-get install nvidia-xxx nvidia-settings nvidia-prime
# Ubuntu18 为
sudo apt install nvidia-driver-xxx
卸载驱动
卸载NV驱动和安装一样,首先ctrl+Alt+F2进入命令行状态,然后停止lightdm
sudo service lightdm stop
#或者
sudo /etc/init.d/lightdm stop
#卸载命令位置/usr/bin/nvidia-uninstall,以下命令即可卸载。
sudo /usr/bin/nvidia-uninstall
#不找这个命令的位置,也可以
sudo apt-get install autoremove --purge nvidia*
sudo apt-get autoclean
如果上述步骤后nvidia-smi还会有输出,说明之前用类似于 “NVIDIA-Linux-x86_64-410.78.run” 这样的.run 安装过驱动与cuda,因此还得执行:
cd nvidia.run路径
sudo sh NVIDIA-Linux-x86_64-410.78.run --uninstall
这样后有些库或者头文件仍然会存在与系统中,因为nvidia安装有许多方式:apt-get、deb、.run。这样的安装有的会在usr/include、usr/lib、/usr/local/include、/usr/local/lib、/usr/include/x86_linux_gnu、/usr/lib/x86_linux_gnu 等。我们那可以用locate或者find找到他们来删除:
sudo rm -rf `locate <你要删的东西>`
参考链接https://blog.csdn.net/dypromise/article/details/84199606
https://blog.csdn.net/ezhchai/article/details/80536949
提示CC version mismatch
原因是因为系统链接的gcc 和g++版本和驱动不匹配,所以需要更改版本或者更新版本
#查看gcc版本
gcc --version
# 下载gcc g++
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-6 g++-6
# 查看已安装的gcc或g++
sudo updatedb && sudo ldconfig
locate gcc | grep -E "/usr/bin/gcc-[0-9]"
locate g++ | grep -E "/usr/bin/g\+\+-[0-9]"
通过update-alternatives建立文件关联
如果安装了同一个软件的不同版本,可以使用update-alternatives命令设置默认使用哪个版本,典型的如在Ubuntu 14.04里安装了gcc-4.8和gcc-6, 想让gcc命令自动使用gcc-6版
#命令最后的 20和50是优先级,如果使用auto选择模式,系统将默认使用优先级高的
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 50
同理修改g++的方式类似
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 50
提示can’t find dkms in the system
这是因为系统中没有安装dkms,所以需要手动安装一下dkms
#安装dkms
sudo apt-get install dkms
进不了图形界面
如果sudo service lightdm start ,然后按Ctrl-Alt+F7无法恢复到图形界面,首先检查显卡驱动什么的,然后看看xorg.conf的问题
cd /etc/X11
sudo cp xorg.conf xorg.conf.failsafe
#或者
sudo cp ~/tmp/xorg.conf.nvidia-xconfig-original /etc/X11/xorg.conf
sudo reboot
CUDA&cuDNN
下载和安装
cuda10.0下载地址
https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux
下载完成之后按官网操作即可,安装过程中会提示是否安装nvidia驱动,此时选no不安装,因为cuda带的驱动版本很低
cuDnn下载地址(需要注册账号)
https://developer.nvidia.com/rdp/form/cudnn-download-survey
解压下载的文件,可以看到cuda文件夹,在当前目录打开终端,执行如下命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.0/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64/
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.0/lib64/libcudnn*
配置环境变量
sudo gedit /etc/profile
export PATH=/usr/local/cuda-10.0/bin${PATH:+:$PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source /etc/profile #使生效
关于环境变量,不同的博客结果可能会用不同的设置方法,设置时可以通过gedit或者vim编辑(推荐gedit, vim中需要按i进入编辑, 编辑完之后按Esc推出编辑模式,然后输入:wq保存退出)
参考https://blog.csdn.net/vertor11/article/details/70799971
在使用时发现,通过profile进行所有用户的全局设置时,export LD_LIBRARY_PATH=/usr/local/cuda9.0/lib64KaTeX parse error: Expected '}', got 'EOF' at end of input: …LIBRARY_PATH:+:{LD_LIBRARY_PATH}}在其它用户总是看不到(有可能是语法的问题?), 所以这条路径需要在每个分用户下单独设置。
卸载cuda
cuda的默认安装在 /usr/local/cuda-10.0下,用下面的命令卸载:
cd /usr/local/cuda-10.0/bin
sudo ./uninstall_cuda-10.0.pl
sudo rm –rf cuda-10.0
安装cuDnn
解压cudnn后后生成一个cuda的文件夹,将其中文件复制到cuda-10.0的路径下
sudo cp ~/Downloads/cuda/include/cudnn.h /usr/local/cuda-10.0/include
sudo cp ~/Downloads/cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*
Anachonda安装tensorflow
下载及安装
下载anaconda:
官网下载(官网慢,考虑去其它网站下载)anaconda linux 安装包
https://www.anaconda.com/download/#linux
在下载路径中安装 bash Anaconda3-5.2.0-Linux-x86_64.sh
#安装anaconda
cd ~/Downloads
sudo bash Anaconda3-5.2.0-Linux-x86_64.sh
#按空格快速阅读并安装
输入conda看是否有输出,如果报错说明没有自动添加anaconda的环境变量
#修改环境变量
vim ~/.bashrc
#在最后添加:
export PATH=~/anaconda3/bin:$PATH
#重启环境变量:
source ~/.bashrc
创建tensorflow-gpu 环境:
# 创建tensroflow虚拟环境
conda create –n tensorflow-20 python=3.7
# 激活虚拟环境
source activate tensorflow-20
# 安装tensorflow
pip install tensorflow-gpu==2.0。0
Pycharm配置
下载及安装
官网下载安装linux安装包
http://www.jetbrains.com/pycharm/download/#section=linux:
cd下载路径,右击命令行输入:
# 解压pycharm
tar –zxvf pycharm-community-xxxx.tar.gz
# 使用pycharm
sh pycharm-community-xxxx/bin/pycharm.sh
创建快捷方式
vim /home/(你的用户名)/Desktop/pycharm.desktop
#输入
[Desktop Entry]
Type=Application
Name=Pycharm
GenericName=Pycharm3
Comment=Pycharm3:The Python IDE
Exec="/home/你的用户名/Downloads/pycharm-communityxxxx/bin/pycharm.sh" %f
Icon=/home/你的用户名/Downloads/pycharm-communityxxxx/bin/pycharm.png
Terminal=pycharm
Categories=Pycharm
#:wq退出
chmod +x /home/(你的用户名)Desktop/pycharm.desktop
#双击运行,如果不能运行,右击文件,手动添加运行程序
添加cuda环境变量,运行tf2.0
指定tesorflow2.0的python解析器路径,但是cuda的环境变量还没有添加,所以直接运行tf2.0会提示找不到cuda和cudnn的路径,所以需要手动添加一下环境变量,run→Edit Configuration。
添加Name:LD_LIBRARY_PATH, Value:/usr/local/cuda-10.0/lib64;
然后就可以运行tf20
设置分用户
创建用户
#进入home
cd /home
sudo useradd –r –m –s /bin/bash username
#设置username登陆密码
sudo passwd username
命令useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
赋予root权限
sudo chmod u+w /etc/sudoers
root@ubuntu :~# sudo vim /etc/sudoers
#修改文件如下:
# User privilege specification
root ALL=(ALL) ALL
db ALL=(ALL) ALL
#保存退出,db用户就拥有了root权限。
sudo chmod u-w /etc/sudoers
结束用户进程
pkill –u username
删除用户
sudo userdel username#
重装系统链接分用户home
如果重装前的分用户数据还在
参考https://zhidao.baidu.com/question/308850276.html
重建分用户
删除原用户
sudo userdel 用户名# (-r 会把所有关联文件夹删掉,所以不能用-r)
重新创建用户
sudo useradd -r 用户名
sudo mkdir /home/user #这里的/home/user里的user最好改成跟你原来用户名一样
sudo chown -R user:user /home/user #这里的user:user要改成你之前的“用户名:用户组”的格式
sudo chmod -R 755 /home/user #这里权限给755
远程链接
设置远程链接
-
在Ubuntu系统设置中打开sharing 取消权限限制:
-
sudo apt-get install dconf-editor
安装完成之后,我们需要打开dconf-editor工具,在桌面搜索dconf-editor打开,打开之后,依次展开org->gnome->desktop->remote-access,然后取消 “requlre-encryption”的勾选即可。 -
安装xrdp
-
这里要注意的是,如果你的系统中支持 Xorg的话,要先安装 tightvncserver 再安装 xrdp,因为这会影响到安装的xrdp的版本,如果先安装xrdp再安装tightvncserver,会出现老版本的xrdp,这里面没有Xorg,在笔者的系统中使用Xvnc会出现登录不上的问题,所以还是使用Xorg好
原文链接:https://blog.csdn.net/qq_25556149/article/details/82216190
sudo apt-get install tightvncserver xrdp#
sudo apt-get install xrdp #安装xrdp
sudo apt-get install vnc4server #安装vncserver
sudo apt-get install xubuntu-desktop #安装xubuntu-desktop,缺什么装什么,一步一步来
echo "xfce4-session" >~/.xsession#向xsession中写入xfce4-session
#修改 /etc/xrdp/startwm.sh 文件
sudo vim /etc/xrdp/startwm.sh
#在. /etc/X11/Xsession 上边添加 xfce4-session
xfce4-session
. /etc/X11/Xsession
#修改配置文件 /etc/X11/Xsession,在文件最上面添加 xfce4-session
sudo vim /etc/X11/Xsession
xfce4-session
set -e
sudo service xrdp restart
远程链接问题
在vnc客户端(noVNC/vncviewer)中远程链接IP:1,但是输入密码后显示灰屏并且鼠标为x型
这是因为vncserver在Ubuntu系统中找不到指定的图形化工具
此时需要在Ubuntu中下载图形化工具
sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
Ubuntu常用操作
-
命令行操作
命令操作模式是一个很简洁的操作界面,它通过输入一条一条的指令(有些情况下可能是成组的命令)来实现对计算机的操作,通常它也被称为“文本操作模式”在ubuntu下,按ctrl+alt+t打开terminal命令行。Sudo必须拥有管理员权限。常用的操作有
复制粘贴:ctrl+shift+c / ctrl+shift+v
进入文件夹: cd 文件路径
展开文件夹下的文件:ls
按tab可以自动补全文件名
。。。 -
vim 编辑
Vim 是一个高级文本编辑器,她提供了Unix下编辑器 ‘Vi’ 的功能并对其进行了完善。Vim 经常被认为是 “程序员的编辑器”,她在程序编写时非常有用,很多人认为她是一个完整的集成开发环境(IDE)。仅管如此,Vim并不只是程序员使用的。Vim可以用于多种文档编辑,从email排版到配置文件编写。
常用的编辑操作:按i或者insert进入编辑操作,按esc退出编辑模式,输入:w写入,输入:wq!写入并退出 -
挂载网络文件夹
mount -t cifs //网络存储.local/网络文件夹 目标文件夹 -o,username=用户名,password=xxxx,domain=DOMAIN,vers=1.0,sec=ntlm
#例如
mkdir Incoming #创建挂载点
mount -t cifs //ALG-CLOUD.local/Incoming Incoming -o,username=alg,password=alg,domain=DOMAIN,vers=1.0,sec=ntlm
其中参数iocharset=utl8时出错,说明local的设置并非utl8
iocharset=charset
指定默认以什么字符集显示文件名,必须与系统的locale设置保持一致。
例如在"en_US.UTF-8"的情况下应该使用"utf8"。
如果没有指定该选项,将使用客户端内核中的 CONFIG_NLS_DEFAULT 值。
如果服务器端支持Unicode字符,网络路径名将默认使用Unicode字符,
如果服务器端不支持Unicode字符,那么该选项就没有任何意义。
参考http://www.jinbuguo.com/man/mount.cifs.html