Ubuntu 16.04版本,显卡:GeForce GTX 1070
1.系统安装
- 参考:https://blog.csdn.net/gent__chen/article/details/48713991
- 硬盘500G分区方案:
根目录:102400MB
交换空间:10240MB
/boot:10240MB(boot文件用于存放系统引导文件和内核,Linux内核更新后,可释放磁盘空间)
/home: 389120MB
2.显卡驱动
- 一种方法是通过ppa源安装,但这种方法对我来说不管用,我使用了高版本和低版本驱动都不行。
- 使用run方式安装,成功,仅限跟我同版本的服务器。
(1)从NVIDIA官网下载驱动
这里我选择了NVIDIA-Linux-x86_64-410.78.run
下载,可以尝试更高版本。
(2)终端卸载已经存在的驱动
sudo apt-get purge nvidia*
这种方法卸载不了,可以使用一下语句卸载
sudo service lightdm stop
sh ./NVIDIA-Linux-x86_64-410.78.run --uninstall
sudo service lightdm start
参考:https://blog.csdn.net/WILLIAMMMS/article/details/80791756
(3)禁用第三方开源的驱动程序nouveau
打开
sudo gedit /etc/modprobe.d/blacklist.conf
在文件末端加入
blacklist nouveau
options nouveau modeset=0
更新系统,使禁用 nouveau 真正生效
sudo update-initramfs -u
最后重启系统。
重启系统后,在终端输入命令lsmod | grep nouveau
查看是否被禁用(输入命令后,没有打印任何信息,即禁用成功)。
(4)关闭桌面服务
图形化界面按住ctrl+alt+(F1~F6的其中一个)进入命令行模式输入用户名和密码,然后在输入sudo service lightdm stop
。
(5)安装驱动run文件
赋予执行权限sudo chmod a+x NVIDIA-Linux-x86_64-410.78.run
安装sudo ./NVIDIA-Linux-x86_64-410.78.run
安装最好使用 sudo ./NVIDIA-Linux-x86_64-410.78.run -no-x-check -no-nouveau-check -no-opengl-files
(避免循环登录)
在安装过程中,出现的问题,参考:https://blog.csdn.net/lihe4151021/article/details/90083431。
(6)重启后,nvidia-smi
命令检查是否安装成功,出现下图,证明驱动安装成功。
3.安装cuda和cudnn(官网需注册账号)
参考教程:https://blog.csdn.net/j879159541/article/details/93590342
cuda就是下载的教程中的10.0版本,下载地址https://developer.nvidia.com/cuda-toolkit-archive
-
进入官方下载界面,选择:
- 安装cuda_10.0.130_410.48_linux.run
sudo sh cuda_10.0.130_410.48_linux.run
安装过程中出现下列选项:
- 剩余安装步骤参考教程
- 最后需要重启后,再输入
nvcc -V
和nvcc --version
出现下列界面,安装成功
对应cudnn下载的7.4.2版本,下载地址:https://developer.nvidia.com/rdp/cudnn-archive
4.更换清华镜像源
- 首先备份原配置文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
-将sources.list中内容注释掉,换成清华镜像源
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
- 更新
sudo apt-get update
5.安装anaconda3
- 教程:https://blog.csdn.net/huangjuegeek/article/details/73556763
- 在安装anaconda3之后,默认镜像还是国外的官方进行,这里换成国内镜像速度会快很多。镜像地址和命令:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
- 在jupyter notebook中添加conda环境 https://blog.csdn.net/qq_29936933/article/details/83089198
6.安装搜狗输入法
sudo apt-get upgrade 这个指令千万别乱用啊,都是泪
参考:
https://zhuanlan.zhihu.com/p/57868480
https://www.jianshu.com/p/cafe12618293
https://blog.csdn.net/areigninhell/article/details/79696751
7. 安装teamviewer
- 官方下载网址(https://www.teamviewer.cn/cn/download/linux/),找到相应版本下载,要下载最新版,不然之后总会让你更新。
- 32位系统需要添加依赖包(64位不用添加)
sudo apt-get install libjpeg62:i386 libxinerama1:i386 libxrandr2:i386 libxtst6:i386 ca-certificates
- 安装deb软件包
sudo dpkg -i teamviewer_amd64.deb
安装过程中出现下图所示错误,缺少依赖关系。
执行下面命令修复
sudo apt-get install -f
再执行sudo dpkg -i teamviewer_amd64.deb
,显示如下即安装成功。
- 停止teamviewer
sudo teamviewer --daemon stop
- 修改配置文件
vim /opt/teamviewer/config/global.conf
在配置文件末尾添加:
[int32] EulaAccepted = 1
[int32] EulaAcceptedRevision = 6
保存退出(wq)后,cat global.conf
查看是否修改成功。
- 启动teamviewer
sudo teamviewer --daemon start
- 获取Teamviewer ID
teamviewer --info print id
- 设置teamviewer 密码
sudo teamviewer --passwd [PASSWORD]
8.安装有道词典
参考教程:https://www.cnblogs.com/TooyLee/p/7750002.html
Ubuntu18.04版本,显卡:GeForce GTX 1080Ti
1. 安装VNC远程桌面
在学校局域网内,使用VNC速度快,使用流畅,但只能在同一局域网内使用。
对于Ubuntu18.04的安装过程如下:
- 安装xfce4远程桌面
sudo apt-get install xfce4
- 安装VNCServer
sudo apt-get install vnc4server
- 安装成功后,设置登录密码
vncpasswd
- 运行vncserver,系统默认创建了VNC的xstartup配置文件
vncserver
- 通过
ps -ef | grep vnc
查看已用端口(刚刚开启的端口),并杀死
vncserver -kill :2
- 修改~/.vnc/xstartup配置文件
vim ~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
- 重新启动
vncserver
- 修改分辨率(先要杀死相应端口
vncserver -kill :5
)
vncserver -geometry 1920x1080 :5
为避免重启后失效,可以修改配置文件vi /usr/bin/vncserver
$geometry = "1920x1080"; #可以修改分辨率
$depth = 16;
2、双网卡不能联网问题
- 查看已有以太网端口
ifconfig
- 确定连接外网的端口,我的是eno1,执行
sudo dhclient eno1
出现RTNETLINK answers: File exist
- 更新
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install vim
- 在
sudo vim /etc/network/interfaces
中添加:
auto lo
iface lo inet loopback
- 接下来执行
sudo ifdown eno1 && sudo ifup eno1
最后用ifconfig
检查新的网址是否工作。
Ubuntu 16.04版本,显卡:Tesla k40c
1. 显卡驱动
Tesla k40c 需要在NVIDIA官网下载驱动,网址:https://www.nvidia.cn/Download/index.aspx?lang=cn。下载具体信息:
这里下载了NVIDIA-Linux-x86_64-440.33.01.run,440的显卡自带CUDA,不需要再重新安装。
装机小tips
1. 装机时输入法设置成中文,改成英文。
Ctrl+Alt+T 进入终端
cd /etc/default
sudo vim locale
将
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
改为
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
- reboot
2. 本地打开服务器端Tensorboard
- 首先在服务器端
tensorboard --logdir=logs
一下,查看端口号(一般为6006
)。 - 本地终端输入
ssh -L 16006:127.0.0.1:6006 [email protected]
即将远程服务器端的6006端口转发到本地的16006端口,在本地对16006端口的访问即是对远程6006端口的访问。之后输入
tensorboard --logdir=logs
- 本地访问地址
http://127.0.0.1:16006/
3.使用阿里云(外网)服务器配置反向端口转发
机器 | IP | 用户名 |
---|---|---|
A(外网阿里云服务器) | remote-host | zhr |
B(内网实验室服务器) | inner-host | ouc02 |
(1)ssh 参数
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口
反向代理ssh -fCNR
正向代理ssh -fCNL
(2)配置步骤
- 在阿里云端开启几个端口,这里绑定了7280,7281,7282三个。
- 在B上建立内网到外网的反向代理
在B(内网实验室服务器)上输入ssh -fCNR 7280:localhost:22 zhr@remote-host
,其中7280是阿里云服务器绑定端口号,22是实验室服务器固定端口号。
在B上输入ps aux | grep ssh
查看是否启动。
在A阿里云端输入netstat -tln
或者netstat -anltp |grep 7280
查看反向代理连接是否成功。
ouc02@ouc02-X10SRA:~$ ssh -fCNR 7280:localhost:22 zhr@remote-host
ouc02@ouc02-X10SRA:~$ ps aux | grep ssh
root 1206 0.0 0.0 65512 6184 ? Ss Mar27 0:00 /usr/sbin/sshd -D
root 10484 0.0 0.0 94928 6884 ? Ss 20:42 0:00 sshd: ouc02 [priv]
ouc02 10551 0.0 0.0 94928 3384 ? S 20:42 0:00 sshd: ouc02@pts/20
root 11169 0.0 0.0 95016 7124 ? Ss 20:58 0:00 sshd: ouc02 [priv]
ouc02 11263 0.0 0.0 95016 3324 ? S 20:58 0:00 sshd: ouc02@pts/27
root 11770 0.0 0.0 95016 7044 ? Ss 21:07 0:00 sshd: ouc02 [priv]
ouc02 11795 0.0 0.0 95016 3416 ? S 21:08 0:00 sshd: ouc02@pts/26
ouc02 2137 0.0 0.0 45340 3780 ? Ss Mar27 0:06 ssh -fCNR 7280:localhost:22 zhr@remote-host
root 14272 0.0 0.0 94928 6860 ? Ss Mar28 0:00 sshd: sqw [priv]
sqw 14341 0.0 0.0 94928 3180 ? S Mar28 0:00 sshd: sqw@pts/13
root 14697 0.0 0.0 94928 6924 ? Ss Mar28 0:00 sshd: sqw [priv]
sqw 14767 0.0 0.0 94928 3188 ? S Mar28 0:00 sshd: sqw@pts/17
root 17631 0.0 0.0 94904 6848 ? Ss Mar28 0:00 sshd: sqw [priv]
sqw 17662 0.0 0.0 94904 3996 ? S Mar28 0:00 sshd: sqw@pts/22
zhr@iZ2ze37:~$ netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:7280 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
zhr@iZ2ze37:~$ netstat -anltp |grep 7280
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:7280 0.0.0.0:* LISTEN -
- 在A上建立正向代理,用来做转发
在A(阿里云服务器)上输入ssh -fCNL *:7281:localhost:7280 localhost
,其中7281是A负责监听外网的端口,即外网通过7281端口访问;7280是A用以转发请求的端口,内网的B服务器连接到该接口并接受A的转发数据,实现从其他机器访问。
zhr@iZ2ze37:~$ ssh -fCNL *:7281:localhost:7280
zhr@iZ2ze37:~$ ps aux | grep ssh
root 816 0.0 0.3 59432 6188 ? Ss Mar29 0:00 /usr/sbin/sshd -D
root 1058 0.0 0.3 96032 6752 ? Ss Mar29 0:00 sshd: zhr [priv]
zhr 1077 0.1 0.2 96488 5592 ? S Mar29 1:52 sshd: zhr
root 16004 0.0 0.3 96000 6800 ? Ss Mar29 0:00 sshd: zhr [priv]
zhr 16022 0.2 0.2 97080 6000 ? S Mar29 2:57 sshd: zhr
root 17792 0.0 0.3 96032 6792 ? Ss Mar29 0:00 sshd: zhr [priv]
zhr 17794 0.0 0.1 37640 3312 ? Ss Mar29 0:02 ssh -fCNL *:7281:localhost:7280 localhost
zhr 17811 0.0 0.2 96304 5476 ? S Mar29 0:02 sshd: zhr
root 17992 0.0 0.3 96004 6896 ? Ss Mar29 0:00 sshd: zhr [priv]
zhr 18010 0.0 0.2 96556 5536 ? S Mar29 0:02 sshd: zhr
root 18775 0.0 0.3 96032 6752 ? Ss 10:23 0:00 sshd: zhr [priv]
zhr 18793 0.0 0.1 96032 3324 ? S 10:23 0:00 sshd: zhr@pts/2
root 18824 0.0 0.3 96032 6968 ? Ss 10:49 0:00 sshd: zhr [priv]
zhr 18842 0.0 0.1 96032 3416 ? S 10:49 0:00 sshd: zhr@pts/3
zhr 18865 0.0 0.0 14196 936 pts/3 S+ 10:49 0:00 grep --color=auto ssh
- 连接
配置好A和B机器,就可以从任意一部外网电脑登陆到B(内网实验室机器)了。这里我直接从A阿里云外网服务器连接到B。
zhr@iZ2ze37:~$ ssh -p7281 ouc02@remote-host
ouc02@remote-host's password:
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
171 packages can be updated.
0 updates are security updates.
Last login: Sun Mar 29 22:15:45 2020 from 127.0.0.1
(3)免密码登录到B
设置免密码登录到内网实验室服务器
在B上设置ssh-copy-id zhr@remote-host
(4)建立稳定隧道
上述方法并不稳定,超时就会断开。故通过autossh建立稳定隧道,防止超时断开。
注意: ssh认第一个输入指令,autossh前清掉之前的ssh命令(直到连接不上),否则连接会断。
- 在B(内网实验室服务器)安装autossh(已安装的略过)
sudo apt-get -y install autossh
- B终端输入
autossh -M 7282 -fCNR 7280:localhost:22 -o ServerAliveInterval=60 -o TCPKeepAlive=yes zhr@remote-host
ouc02@ouc02-X10SRA:~$ autossh -M 7282 -fCNR 7280:localhost:22 -o ServerAliveInterval=60 -o TCPKeepAlive=yes zhr@remote-host
ouc02@ouc02-X10SRA:~$ ps aux | grep ssh
root 1206 0.0 0.0 65512 6184 ? Ss Mar27 0:00 /usr/sbin/sshd -D
root 5894 0.0 0.0 95016 6880 ? Ss 04:13 0:00 sshd: ouc02 [priv]
ouc02 5923 0.0 0.0 95016 3432 ? S 04:13 0:00 sshd: ouc02@pts/19
ouc02 6775 0.0 0.0 4372 84 ? Ss 05:32 0:00 /usr/lib/autossh/autossh -M 7282 -CNR 7280:localhost:22 -o ServerAliveInterval=60 -o TCPKeepAlive=yes zhr@remote-host
ouc02 6776 0.0 0.0 45556 6176 ? S 05:32 0:03 /usr/bin/ssh -L 7282:127.0.0.1:7282 -R 7282:127.0.0.1:7283 -CNR 7280:localhost:22 -o ServerAliveInterval=60 -o TCPKeepAlive=yes zhr@remote-host
root 8252 0.0 0.0 94928 6756 ? Ss 09:51 0:00 sshd: ouc02 [priv]
ouc02 8277 0.0 0.0 94928 3252 ? S 09:51 0:00 sshd: ouc02@pts/23
root 8684 0.0 0.0 94928 6816 ? Ss 09:56 0:00 sshd: ouc02 [priv]
ouc02 8709 0.0 0.0 94928 3388 ? S 09:56 0:00 sshd: ouc02@pts/24
root 8882 0.0 0.0 94928 6904 ? Ss 10:05 0:00 sshd: ouc02 [priv]
ouc02 8907 0.0 0.0 94928 3292 ? S 10:05 0:00 sshd: ouc02@pts/25
ouc02 11795 0.0 0.0 95016 3416 ? S 21:08 0:00 sshd: ouc02@pts/28
root 11971 0.0 0.0 94928 6892 ? Ss 21:22 0:00 sshd: ouc02 [priv]
ouc02 14054 0.0 0.0 94928 3312 ? S 23:31 0:00 sshd: ouc02@pts/34
root 14098 0.0 0.0 94928 6744 ? Ss 23:33 0:00 sshd: ouc02 [priv]
ouc02 14123 0.0 0.0 94928 3392 ? S 23:34 0:00 sshd: ouc02@pts/35
ouc02 14171 0.0 0.0 21264 968 pts/35 S+ 23:34 0:00 grep --color=auto ssh
(5)配置开机自启
以下写入 /etc/rc.local 的 exit 0 之前
su - lab-user -c autossh -M 7281 -fCNR 7280:localhost:22 -o ServerAliveInterval=60 -o TCPKeepAlive=yes zhr@remote-host
赋予可执行权限
sudo chmod +x /etc/rc.local
参考:https://www.jianshu.com/p/abeb63711e37
http://www.fanyingjie.com/cn/2019/11/ssh_proxy/