环境准备
- Ubuntu16.04
- python 3.8
- torch 2.0.0+cu118
- torch torchvision 0.15.1+cu118
- torchaudio 2.0.1
系统安装
安装部分:PASS
# 第一件事,检查你的系统是不是装对了
uname -m # x86_64,其他的就是装错了
基本一些操作,这里只介绍文件管理
# 一些简单的命令
ls # 查看当前目录下文件,可以跟-l 表示查看权限等 -a 查看全部文件
cd # 切换目录
pwd # 当前所在目录
touch/mkdir # 创建空文件/文件夹
# 在执行ll后会出现文件的类型、权限灯
# 文件权限,常见文件权限 rwx可读可写可执行
# p 表示命名管道文件
# d 表示目录文件
# - 表示普通文件
# s表示socket套接口文件,比如启动一个mysql时,会产生一个mysql.sock
# c表示字符设备文件,例如:虚拟控制台或者tty0
# b表示块设备文件 例如:sda,cdrom
su - <username>
su <username> # 两者区别在于环境变量切换的问题
echo $HOME
# 权限管理
chmod [username] [command] [赋予什么权限] <filename>
chmod -u/g/o/a # 用户/用户组/其他用户/所有用户
chmod +/-/= # 增加/减少/直接给定权限 rwx
u-w g+x o=r a+x
# 最常见的就是 rwx权限是4 2 1,777就是所有权限
chmod 777 <filename>
chmod +x
# 普通用户创建的文件权限和root用户创建的不同
vim /etc/profile
umask 002/022#补码不同
# 一些特殊的权限
# suid 只能设置在二进制的可执行程序上面,使得程序运行时的权限,从执行者变成程序所有者
SUID u+s u=4 chmod 4644
# sgid #二进制和文件均可,继承上级目录的所属组
SGID g+s g=2 chmod 2644
# sticky #粘滞位权限,针对目录,防删除 例如/tmp
Stickybit o+t o=1 chmod 1644
# 普通用户提权
# 如普通用户修改密码后,密码会更新至/etc/shadow,shadow只有root有权限
ll /usr/bin/passwd #-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
# less/more
chmod u+s/4644/u=4 usr/bin/more/less # 这种情况会被禁止
# ACL拓展权限,如给other组里面的单独某些用户提供权限,而不是整个组
getfacl <filename>
setfacl -m u:<username>:<权限> <filePath>
setfacl -m d:u:<username>:<权限> <catalog> # d是默认在此目录下创建的文件都有扩展权限
setfacl -R -m d:u:<username>:<权限> <catalog># -R是全部子目录也算
setfacl -x u:<username>:<权限> <filePath> #取消权限
setfacl -b <filePath> # 取消所有扩展权限
系统安装完成后,及时换源,因为Ubuntu老版本有可能用的是国外的源,国内用起来直接卡死
# 备份原来的仓库源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 换成新的
rm -rf /etc/apt/sources.list
touch /etc/apt/sources.list
vim /etc/apt/sources.list
# 按i进入编辑模式
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
# 按esc :wq 退出
# 刷新一下
source /etc/apt/sources.list
# 更新一下缓存
apt-get update
# 测试一下有没有东西
apt-get install sl
sl
环境所需文件下载
- GCC(>=5.4.0) 这里系统安装会满足条件不过多说明
- 英伟达驱动:需要用到驱动去操作GPU硬件
下载地址:https://www.nvidia.cn/Download/index.aspx?lang=cn#
# 找到导入到电脑的文件
# 一般这种三方的软件都安装在/usr/local下面或者是/opt下面 看自己的心情
mv <路径+文件名> /opt
# 禁用三方驱动
vim /etc/modprobe.d/blacklist.conf # 如果提示没有vim,就apt-get install -y vim
# 按G跳到最后一行,按i进入插入模式,最后一行添加
blacklist nouveau # esc :wq退出
# 加载重启
update-initramfs -u
reboot
# 检查禁用有没有成功
lsmod | grep nouveau
# lsmod是加载当前的内核模块 | 是管道符,可以理解为执行前面哪个命令。同时执行后面的
# grep是搜索,后面跟你想要搜索的东西,这句话的意思就是去内核文件里面看一下有没有nouveau这个模块
# 禁用x服务,x服务是负责图形化界面的,安装驱动的时候会占用相关资源,不禁用会装不上驱动
# 先切换到命令行界面 ctrl alt F1
/etc/init.d/lightdm stop
# 安装驱动
chmod +x <驱动脚本>
./<驱动脚本> --no-opengl-files
# 开启x服务
/etc/init.d/lightdm start --no-opengl-files
reboot
# 重启后
nvidia-smi # 观察CUDA版本,下载的比他低的都行
- CUDA安装:CUDA是上面英伟达驱动的API封装,对外提供很多接口,方面用户调用
地址:https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=deblocal
sh <名字>
cat /usr/local/cuda/version.txt # 三方文件,系统这里默认安装在了/usr/local下面
# 设置CUDA的可执行路径和库文件路径为环境变量
vim /etc/profile
# G -> i ->添加下面两行 ->esc :wq
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
- CUDNN安装:这玩意是用来进行GPU加速的,跟上面一样,跟着文档就行
- python3.7
# 依赖安装
sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev
# 跟文档一样 不链接就行
python3