该手册可用于对新系统进行快速配置。
基于不同的系统环境,会有不同的配置方法,下面列举了5种场景.
Windows
安装系统
当需要自己进行系统安装时,按如下步骤进行。
- 制作启动盘
- 已有启动盘,做好一切C盘重要数据备份后,重启。
- 重启界面迅速按F12,进入BIOS界面
- 选择含
USB Device
类似字符,进入winPE操作系统模式。 - 可进行选择性分区等操作。最后
一键还原
进行重装系统。注:某些iso跟大白菜不太兼容,一键还原后,开机重启长久卡在logo界面。别慌,重进PE系统,解压该iso,按照里面的说明再次重装(即此时大白菜只给了我PE界面,重装的活儿是其他工具搞定的)
配置系统
安装驱动
若你的系统的各种硬件驱动不完善时,请百度获取你主板厂商的驱动程序,然后安装,重启生效,不然蓝牙、音响等都会有问题。
我的驱动程序存在
E:\app_tools\a00.关于装系统、分区、EFI启动项设置等\装机驱动等\雷神官网驱动下载
,按README.md操作。
解放C盘
- win10: 修改文件夹左边快速访问栏的‘下载、文档、图片’的
属性→位置
,移动到其他盘(如G:\doc
) - win11: 只需
系统设置→ 系统→ 存储→ 高级存储设置→ 保存新内容的地方
,把里面所有选项迁离系统盘即可。
office的部署安装
当你需要安装并使用正版无阉割的office全家桶时,请按照蓝点网的’新手教程‘一步步操作。我这里时v10.8.5, 总结如下:
- 下载
下载office部署工具到任意位置并解压(我的存放于I:\02.办公工具\2.office\Office Tool\Office Tool Plus
) - 准备工作
- 清理干净系统中旧的office、WPS office。
- (可选) 进入
Office Tool Plus.exe
- 清除旧版本的激活信息:
激活→ 激活下拉菜单→ 清除激活信息
- 清除office设置:
工具箱→ 重置office设置为默认
- 清除旧版本的激活信息:
- 进入
部署
菜单- 添加产品:建议选择
MS365企业应用版
- 添加语言:简中
- 部署设置:若担心网速问题使安装卡住,可以把
下载后再布署
选上,其他的可以默认。 - 最后点击开始部署。等待许久后,office将会部署完成。
- 添加产品:建议选择
激活
office方法1:用蓝点网的激活方法(简单永久)
在Office Tool Plus
中点开命令输入框,执行下面命令即可。其中MondoVolume
代表office的Mondo的批量版本.ospp /inslicid MondoVolume /sethst:kms.loli.beer /setprt:1688 /act
若有问题,请参考
方法2:用暴风激活工具(非永久)。我的存放于
E:\app_tools\暴风激活工具V17.0.zip
安装配置生产环境Git-SDK-64
跳转文章的第二、三节。
其他不重要但有用的配置
实现windows资源浏览器的备注功能
如果你想方便地管理文件(夹), 但又总忘记这个陌生的文件(夹)是什么, 有什么用, 你自然会想对其备注
. 文件(夹)条目后面跟一句解释性文字, 多方便啊. Windows允许你在资源管理器中查看备注, 但似乎不太乐意你添加和编辑备注.
下面, 我将用3个步实现这些功能. 最终的效果就是:
- 对于文件, 右键属性→ 详细信息→ 单击
备注
即可编辑. - 对于文件夹, 进入
remark.exe
软件, 按提示即可编辑.
1-设置以允许显示备注
2-给文件添加备注功能
参考文章, 总结如下:
- 下载安装: 进入GitHub仓库下载
FileMeta.x64.msi
并安装. - 设置允许备注: 进入软件界面, 按如下
1-4
给特定后缀的文件添加备注功能. - 进行备注: 下图
1-3
是步骤,4
是效果. > 注: 如果有的文件(e.g. `.exe`)不让备注, 那就编辑`标题, 作者`等也是可以的.
3-给文件夹添加备注功能
参考仓库
- 下载解压
- 执行软件: 进入
安装目录/dist/remark/remark.exe
窗口, 按操作来.
访客身份的配置
当因为客观需要, 你得在别人的Windows系统上进行工作时, 建议新开一个用户, 并远程ssh登录
.
新开PS用户
|
然后创建一个快捷方式, 在其路径里填入: runas /user:ray3060 "powershell -NoExit -Command \"cd ~\""
.
于是当你双击该快捷键, 输入密码后就能进入新用户家目录
下的powershell了.
BUG & Solution: 该场景下, 新用户不方便打开
管理员权限
窗口, 一个讨巧的方法见.
远程ssh登录
参考中的1.1
和1.4
.
WSL2
很多时候, 你需要你的Windows里能原生兼容Linux, 所以你必须有一个wsl2
.
WSL2
是一个平台,提供了虚拟化的 Linux 内核,
实例
(如Ubuntu) 是运行在 WSL2 上的不同 Linux 发行版。每个实例都是独立的操作系统,有自己的文件系统、配置和生命周期管理。
安装前环境准备
确保虚拟化选项开启:一般默认开启,不然需要进电脑的BIOS设置里开启
打开设置:控制面板->程序->启用或关闭windows功能->开启下面多个选项
- ✔
Hyper-V
- ❓
Windows虚拟机监控程序平台
- ❓
容器
- ✔
适用于Linux的Windows子系统
- ✔
虚拟机平台
或Virtual Machine Platform
- ✔
(可选)在powershell中,将虚拟化平台的启动类型设置为自动:
bcdedit /set hypervisorlaunchtype auto
重启.
wsl2实例安装
四种方法
安装前, 先更新wsl内核:
wsl --update
查看网上有哪些可用的分发版:
wsl -l --online
方法1: 用
install
- 从MSstore安装:
wsl --install Ubuntu-20.04
; - 从Internet安装:
wsl --install Ubuntu-20.04 --web-download
- 从MSstore安装:
方法2(⭐推荐⭐): 用
import
+ 官网镜像- 先在ubuntu-wsl网站找到你想要的镜像, 下载其
.rootfs.tar.gz
, 如:
curl https://cloud-images.ubuntu.com/wsl/releases/24.04/current/ubuntu-noble-wsl-amd64-24.04lts.rootfs.tar.gz -o ubt2404.tar.gz
; - 然后执行
wsl --import ubuntu24.04 /d/my_wsls/ubuntu2404/ /path/to/ubuntu24.04.tar.gz --version 2
上述参数的顺序是: <自定义实例名> <指定安装到的位置> <
.tar.gz
或ext4.vhdx
的路径>
- 先在ubuntu-wsl网站找到你想要的镜像, 下载其
方法3: 用
import
+ 自建镜像
此法多用于文件系统的迁移.- 先制作文件系统压缩包:
wsl --export <目标分发版名字> <你想存放的路径.tar.gz>
- 然后注销目标分发版:
wsl --umregister <目标分发版名字>
- 最后在新位置导入:
(同方法2的第二步)
- 先制作文件系统压缩包:
方法4: 可视化安装
在Microsoft store搜索“Ubuntu-20.04”进行安装。
安装后查看你的分发版wsl -l -v
, 列表中有你刚安装的分发版, 则安装成功.
一定要确保实例的version是wsl2
而非wsl1
。
WSL的BUG合集
wsl安装命令报错–灾难性故障
命令行安装wsl2内核总报错灾难性故障
(catastrophic failure), 形如:
|
尝试了多种方法:
- 在
启用或关闭windows功能
中的检查开启了相关特性; - 在命令行关了
wsl特性
并重开:
关闭:dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart
,
查看:dism.exe /online /get-features /format:table | findstr /C:"Microsoft-Windows-Subsystem-Linux"
,
开启:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
后重启. - 删除了wsl内核软件:
Remove-AppxPackage MicrosoftCorporationII.WindowsSubsystemForLinux_2.2.0.0_x64__8wekyb3d8bbwe -AllUsers
Remove-AppxPackage MicrosoftCorporationII.WindowsSubsystemForLinux_2.2.0.0_x64__8wekyb3d8bbwe - 放弃命令行安装, 从
Microsoft store
重新安装 - … 都没效果.
直到我在issue-11319中看到MatthewL246
的回答: 在确保你之前安装的所有版本的wsl内核软件都删干净的前提下, 直接下载安装wsl仓库
最新发布的.msixbundle
包, 而非.msi
包.
即使你是amd64
, 也可放心安装它的Microsoft.WSL_<version>_x64_ARM64.msixbundle
.
这之后, 就有可以愉快使用wsl
的所有命令了.
wsl实例的文件系统损坏
一个wsl实例, 对应着一个ext4.vhdx
文件, 它存储着实例的文件系统.
在开发过程中, 你可能会遇到文件系统损坏的情况, 比如我执行一个程序时将文件系统所在的磁盘空间占满了, 导致wsl实例无法启动. 解决步骤如下:
关机: 执行
wsl --shutdown
, 关掉所有实例.转移: 在资源管理器中找到该实例的
ext4.vhdx
文件, 将其移动到空间充足的其他磁盘.注销: 执行
wsl --unregister <Distro>
, 注销该实例.挂载: 确保系统内还有其他wsl实例, 执行命令把这个损坏的文件系统作为
虚拟硬盘
挂载到Linux里面,wsl --mount "X:\path\to\ext4.vhdx" --vhd
. 得到的输出如下:磁盘已附加,但装载失败: Invalid argument。
要查看更多相关信息,请在 WSL2 中运行 'dmesg'。
若要分离磁盘,请运行 'wsl.exe --unmount \\?\D:\a_WSL\ext4.vhdx'。⚠️ 注意, 千万不要把这个
挂载
步骤改为导入
步骤,wsl --import <Distro> <target_dir> <path_to_ext4_vhdx> --vhd
. 因为:- 文件系统本就损坏了, 导入成一个新的wsl实例, 也是进不去的;
- 导入的过程会新创建一个
ext4.vhdx
文件, 原文件系统本就存储爆炸了, 再导入一个, 岂不是雪上加霜; - 导入速度非常慢.
查看日志: 进入其他wsl实例, 执行
dmesg
查看日志,锁定未挂载成功的块设备
, 如这里的/dev/sdc
,[ 52.697055] WSL (364): Detected (null) filesystem for device: /dev/sdc
[ 52.697376] WSL (364) ERROR: UtilMount:1681: mount(/dev/sdc, /mnt/wsl/DaWSLext4vhdx, (null)修复: 在其他实例中, 执行如下
lsblk # 确认块设备名, 及其分区
sudo fsck -y /dev/sdc # 修复未挂载成功的块设备
sudo mkdir /mnt/tmp
sudo mount /dev/sdc /mnt/tmp # 重新挂载接下来你就可以在
/mnt/tmp
下看到, 那个损坏的文件系统的所有内容都能访问了.
此时赶紧把当初造成内存爆炸的东西给删掉吧.测试: 退出实例, 执行
wsl --shutdown
, 再重新执行挂载, 你会发现成功了.PS C:\Users\ASUS> wsl --mount "D:\a_WSL\ext4.vhdx" --vhd
已成功将磁盘装载为“/mnt/wsl/DaWSLext4vhdx”。
注意: 如果已修改 /etc/wsl.conf 中的 automount.root 设置,则位置将不同。
若要卸载和分离磁盘,请运行“wsl.exe --unmount \\?\D:\a_WSL\ext4.vhdx”。瘦身:
wsl管理分发版本的常用命令
前提:使用wsl
命令的终端有管理员权限.
|
wsl2实例配置
(可选)迁离C盘
如果你是以默认方式(上面的方法1
和方法4
)安装的wsl分发版, 那出于瘦身C盘的考虑, 你可能需要进行迁移的工作. 迁移方法有两种:
- 命令行方法: 详见上面的
方法3
- win11简单的系统设置:
设置→ 应用→ 安装的应用→ Ubuntu-20.04→ 右键→ 移动到其他盘
修改初始化系统(即启动管理器)
一般的Linux是使用systemd
作为启动管理器, 即使用systemctl
命令来管理服务.
而wsl2是使用其他启动管理器, 即使用service
命令来管理服务.
当然在wsl2中切换systemd
不是必须的, 但我很建议切换.
|
然后重启wsl:wsl --shutdown
; wsl
最后验证: ps -p 1 -o comm=
,如果输出systemd
,则表示其成功被启用。
可能出现的bug
- 问题: 上述验证不成功; 或使用
systemctl status ssh
时报错:System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down - 原因: systemd启用失败
- 解决方法1: 在Windows开始适当的特性
管理员权限进入powershell dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```
然后重启电脑.
- 如果还失败, 我也没办法了, 老实使用`service`吧.
#### 剩下遵照Linux流程完成配置
[跳转](#Linux)
## docker容器
docker容器, 即一个虚拟的Linux系统. 想拥有它, 你首先得在宿主机中安装docker, 然后拉取Linux的`docker镜像`, 最后由镜像创建`docker容器`.
### docker的安装
#### 在win安装Docker-Desktop
> ⚠️ 不建议,因为吃内存和cpu;可选择在wsl中安装docker.
> ✨ win端docker的角色就是wsl下的一个`分发版本`.
- [<u>安装教程</u>](https://docs.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers)
- 验证:在终端窗口执行`docker --version`,或`wsl -l -v`
- 配置国内源:进设置→ docker Engine→ 框中添加:
```txt
"registry-mirrors": ["https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" ] - 迁离C盘:
关闭docker后执行wsl --shutdown # 关机分发版
wsl --export docker-desktop-data <自定义路径>\docker-desktop-data.tar # 导出压缩包
wsl --export docker-desktop <自定义路径>\docker-desktop.tar # 导出
wsl --unregister docker-desktop-data # 注销
wsl --unregister docker-desktop # 注销
wsl --import docker-desktop-data <自定义路径>\data\ <上面的路径>\docker-desktop-data.tar --version 2 # 导入
wsl --import docker-desktop <自定义路径>\distro\ <上面的路径>\docker-desktop.tar --version 2 # 导入
在Linux端安装Docker-Engine
安装
教程速览:
|
配置1-为拉取docker镜像加速
由于国内镜像仓库覆灭了(方法1), 只能用http_proxy
的方式了.
方法1: 配置阿里云提供的镜像源
❌ 2024/06/24阿里云公告: 不再提供镜像服务. 新闻: 中国境内 Docker Hub 镜像仓库关闭
- 获取
镜像加速器地址
:登录阿里云->控制台->搜索容器镜像服务->’镜像加速器’ - 添加镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://你自己的.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 获取
方法2: 若系统中已经配置好代理, 则可直接用
docker pull
拉取国外镜像.
验证方法: 执行docker info | grep -i proxy
, 得到类似HTTP Proxy: http://127.0.0.1:7890
即可.方法3: 如果
方法2
未生效, 可为Docker守护进程
专门添加代理# 创建或编辑 Docker 守护进程的配置文件
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
# 在配置文件中添加以下内容
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"方法4: (
方法3
的替代) 在Docker客户端配置文件中设置代理~/.docker/config.json {
"proxies": {
"default": {
"httpProxy": "http://127.0.0.1:7890",
"httpsProxy": "http://127.0.0.1:7890",
"noProxy": "localhost,127.0.0.1"
}
}
}
然后重新加载 Docker 配置并重启服务:
|
wsl2中, systemctl不行就用service.
配置2-给docker容器内添加代理
详见场景2-3
debug
- 碰到
Temporary failure resolving ‘gb.archive.ubuntu.com’
问题:
可以永久性地在你的系统中添加一个DNS服务器:echo "nameserver 8.8.8.8" | sudo tee /etc/resolvconf/resolv.conf.d/base > /dev/null
😀 在wsl2安装Docker Engine
和上面Linux端一模一样。
docker镜像的获取和容器的创建
镜像可以来自Docker Hub, 或自己造的.
然后拉取镜像并创建容器:
|
⭐⭐⭐一个很难受的BUG:
wsl2中的docker中的Ubuntu容器,其内核依然是WSL2,不是纯粹的Linux。
- 原因:wsl2是Linux,但不是完整的Linux;那么和wsl2共用内核的docker容器,自然是跟wsl2啦。
- wsl2的局限性:不能使用Linux原生的
systemctl
来管理服务。 - 局限性的解决办法:
- 对于wsl2,戳
- 对于wsl2里的docker容器,设置docker run的参数来模拟原生环境:
--privileged
: 赋予容器特权,这对于模拟Systemd环境是必要的。--tmpfs /run --tmpfs /run/lock
: 将 /run 和 /run/lock 设置为tmpfs文件系统,以便Systemd单元正常工作-v /sys/fs/cgroup:/sys/fs/cgroup:ro
: 将主机的 /sys/fs/cgroup 挂载到容器中,以便容器内的Systemd能够访问它。
docker容器的配置
你拉取到的镜像里面, 已经由它的Dockerfile
定义好了你想要的初始化配置, 可无需自己配置, 开箱即用.
如果你拉取的是一个纯白的镜像, 那么:
Linux
Linux的安装不必多言, 它可以是来自各分发版的ISO镜像, 是虚拟机镜像, 是云服务器, 是wsl2, 也可以是docker容器. 下面只讲初始配置, 让我们得以快速展开生产工作.
0-预装最基础软件包
谨防你的系统是精简版, 若不预装这些, 在正式执行后面的脚本时会报错.
|
或直接使用无交互脚本
|
1-确保你是可以使用sudo的非root用户
一般来说, 初次进入Linux, 系统会引导你创建并进入到一个普通用户, 这样最好.
但一些时候, 你进入系统就是root
用户, 比如首次登入云服务器, 或登入docker最精简的Linux镜像, 或登入以import
方式导入的wsl实例……如此, 你需要新建并配置一个普通用户.
其具体步骤为: 添加新用户→ 设置密码→ 赋予sudo权限→ (可选)设置免密使用sudo.
相关命令参考下面的无交互脚本
|
2-配置软件源
在国内, 用apt
下载Linux的软件时多会遇到速度非常慢的问题, 我们只需将系统的软件源配置为国内镜像即可.
常见的镜像有: 清华源, 阿里源, 中科大源, 华为源, 腾讯源, 网易源. 如果你的是那些大厂的云服务器
就更好了, 它们已经默认配置好了.
具体配置步骤为: 备份原配置文件→ 写入新配置文件→ 更新软件源.
相关命令参考下面的无交互脚本
|
3-安装基础软件包
不是所有的Linux操作系统里都自带常用的软件包, 比如docker的一些基础镜像
, 它们由于最小化原则
、特定用途原则
等原因, 甚至连vim, curl, git
等基础软件包都没有.
相关命令参考下面的无交互脚本
|
4-安装终端美化工具oh-my-zsh
若不想安装zsh, 最简单的
bash
美化:在~/.bashrc
中添加:export PS1="\033[1;35m> \T, \u, \w\[\033[0m\] \$ "
,可将命令行头变成:
> 08:29:56, root, ~ $
- 安装zsh
sudo apt install zsh -y
- 下载安装ohmyzsh
官方仓库及教程, 鉴于国内环境,将纯手动安装:- 将官方仓库导入到
gitee.com
- 下载安装脚本:
wget -O- https://gitee.com/mirrors/ohmyzsh/raw/master/tools/install.sh > ~/install_ohmyzsh.sh
- 手动修改脚本:
- 可手动寻找:进入脚本搜索
ohmyzsh/ohmyzsh
改为jamesray0713/ohmyzsh
,搜索github
改为gitee
; - 也可用命令:
sed -i 's/REPO:-ohmyzsh\/ohmyzsh/REPO:-jamesray0713\/ohmyzsh/' install_ohmyzsh.sh
sed -i 's/REMOTE:-https:\/\/github/REMOTE:-https:\/\/gitee/' install_ohmyzsh.sh
- 可手动寻找:进入脚本搜索
- 最后安装:
sh ~/install.sh
- 将官方仓库导入到
- 配置ohmyzsh
- 换主题:
sudo vim ~/.zshrc
,修改为ZSH_THEME="robbyrussell"
- 加插件:
cd .oh-my-zsh/custom/plugins
git clone https://gitee.com/jamesray0713/zsh-autosuggestions # 自动填充
git clone https://gitee.com/jamesray0713/zsh-syntax-highlighting # 高亮
vim ~/.zshrc
# 进入到配置文件后,将 plugins=( git ) 改为:
plugins=( git zsh-autosuggestions zsh-syntax-highlighting ) - 改抬头:
进入~/.oh-my-zsh/themes/robbyrussell.zsh-theme
,
修改第二行为:PROMPT+=' %{$fg[cyan]%}[$PWD]%{$reset_color%} $(git_prompt_info)'
- 换主题:
- 设为默认终端
echo 'if [ -t 1 ]; then exec zsh; fi' >> ~/.bashrc
- 重启终端
5-开启ssh-server
一般的生产场景, Linux都是需要被远程连接
, 所以我们先把当前机器的ssh服务
给配置好, 使得其他机器可以顺利通过ssh连接到该主机.
如果当前机器是
docker容器
就没必要配置了, 直接在容器的宿主机
上配置就行.
具体步骤请参考
6-开启端口转发
如果你的机器在内网, 没有公网ip, 又想被外部ssh连接, 那么就需要开启端口转发功能.
具体步骤请参考
7-安装并配置代理工具clash
如果你的机器想访问外网资源, 开启代理服务是必不可少的.
具体步骤请参考.
8-安装python包和项目管理工具
如果你的生产场景是AI相关项目, python的安装和管理必不可少. 这里推荐使用miniforge + poetry
的组合.
具体操作请参考miniforge和poetry.
9-安装docker
如果你想取用别人的docker镜像进行生产, docker的安装和配置必不可少.
具体操作请参考
10-安装code-server
如果你只想用ssh连到本机, 那么在完成了上面的step5-6
就足够了, 可跳过本节.
如果你想通过任何设备(包括手机和pad)都能连接到本机, 那么安装web版的vscode服务是必要的.
具体操作请参考.
11-安装nvidia-container-toolkit
如果你的项目位于docker容器中, 且需要使用NVIDIA-GPU, 那么安装nvidia-container-toolkit是必要的.
具体操作请参考.
🚩 自动配置脚本:
点击下载脚本.
该脚本可对一个Ubuntu新系统进行一键配置,配置内容在上面的
脚本有以下模块(如果只想手动配置部分模块请跳转下一节):
- 必定安装的①②③⑦模块:
- ①配置国内源:加速apt的软件包的下载速度。
- ②安装基础软件包:
“wget” “curl” “git” “vim” “net-tools” “iputils-ping” “htop” “tmux”
“zsh” “kmod” “g++” “gcc” “cmake” “psmisc” “language-pack-en” “tree” - ③安装oh-my-zsh:比Linux默认的bash更便捷高效的命令行工具。
- ⑦安装vscode CLI:vscode的无桌面版客户端,用于远程生产。
- 选择性安装的:若带
--in-container
参数,则脚本提前结束;若不带,则安装④⑤⑥模块- ④安装Miniconda;
- ⑤安装docker;
- ⑥安装NVIDIA Container Toolkit。
- 注:脚本不包含安装CUDA+ cuDNN部分, 需手动。
脚本使用方法:
- 下载脚本:下载到本地后,复制里面所有内容;
- 编写脚本:进入你要配置的Linux的命令行,执行
cd ~ && tee ~/config_script.sh
;粘贴ctrl+ V;退出文件ctrl+ C - 执行脚本:
bash ~/config_script.sh [--in-container]
- 注意:根据实际需求,完全可以自选任意模块的组合,进行一键配置。
- 注意:将执行较长时间,结束后注意排查日志看有无报错。
- 注意:除了开始阶段可能可能需要手动设置时区外,其他命令均自动完成。
- 时区设置如下,需按提示依次填写
6
,70
:
- 刷新配置:
source ~/.bashrc
为深度学习做系统配置
为了让你的代码能在新系统的GPU中跑起来,这里提供一站式解决方案,即把CUDA和cuDNN准备妥当即可。鉴于目前我常用的场景,这里只介绍Nvidia显卡
在win、Ubuntu、wsl下的应用。
资料:
- 所有已归档的CUDA版本的资源&文档;
- Nvidia文档中心 -> CUDA文档-latest ;
- cuDNN文档。
1. 安装显卡驱动
一般来说系统已经配置好了,若需要重装驱动,可去主板厂商官网、或NVIDIA官网下载;
若需升级驱动,进入GeForce Experience
软件查看并更新。
安装成功后,可通过命令验证:nvidia-smi
,其中能获得驱动版本号、显卡最大支持
的CUDA版本号等。
2.1 在Windows平台搞DL
- 装CUDA流程总结:
- 选择CUDA版本:不高于显卡最大支持版本,且要契合项目要求
- 下载exe(local),执行安装
- 选
自定义安装
: 第一次安装,尽量全选(除了CUDA->visual studio); 第n次安装,尽量只选择CUDA,不然会出现错误。 安装目录
尽量默认,因为后期开发中很多报错来源于路径问题。控制面板->程序
将得到一堆CUDA软件- 添加到系统环境变量:有4个,可能后两个未自动生成,需参考下图手动配,
NVCUDASAMPLES_ROOT; NVCUDASAMPLES11_0_ROOT
- 验证:
nvcc -V
- 装cuDNN流程总结
- 注册/登录账号,下载匹配CUDA的版本
- 解压得到3个文件夹,直接全盘拷贝到cuda的安装目录下
cuDNN 其实是 CUDA 的一个补丁,专为深度学习运算进行优化的。
- 以下4个路径添加到系统环境变量的path:
....\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
....\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
....\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib
....\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp - 验证:执行将得到显卡详细配置参数
cd 安装目录\extras\demo_suite
.\bandwidthTest.exe
.\deviceQuery.exe
2.2 在wsl2平台搞DL
wsl2直接调用宿主机的显卡驱动,无需安装。
由于wsl2可看作Ubuntu,具体操作直接参考【2.4 在Linux中搞DL】
。
2.3 ⭐在容器中搞DL(最常用)
由于对docker for windows
不爽,这里只介绍Linux下的docker容器。
- 宿主机中:装NVIDIA Container Toolkit, 该工具能使docker容器具有调用宿主机GPU的能力。
安装方法 # 建立package repository 和 GPG key
distribution=$(. /etc/os-release; echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
# 安装
sudo apt install -y nvidia-container-toolkit
# 设置Docker daemon 守护进程识别Nvidia容器Runtime
sudo nvidia-ctk runtime configure --runtime=docker
##重启docker
sudo systemctl restart docker
# 测试
docker run --rm -it --gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark - 容器中:
- 最简单:直接pull带CUDA、cuDNN的镜像;
- 手动搞:参照【2.4 在Linux中搞DL】手动配置CUDA和cuDNN。
2.4 在Linux平台搞DL
安装CUDA
在这个链接中指定操作系统、架构、发行版本(wsl或Ubuntu)、安装包类型(尽量选则'deb(local)')
,即可得到相应安装命令脚本。
不同CUDA版本间的脚本会有各种各样的差异,无法类推,只能现用现搜。下面是一个例子:
|
后续动作——添加环境变量:在~/.zshrc
末尾添加export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
其他可选后续动作
- 安装用户空间的守护进程:
sudo /usr/bin/nvidia-persistenced --verbose
, TODO: 报错,缺少libnvidia-cfg.so.1文件 - 验证:
- 验证驱动:
cat /proc/driver/nvidia/version
(wsl2中无效); - 验证编译器:
nvcc -V
; - 编译&运行测试:
- 获取示例目录(放到当前目录下):
cuda-install-samples-11.2.sh .
- 编译
deviceQuery
: 进入NVIDIA_CUDA-11.2_Samples/1_Utilities/deviceQuery/
,执行make
,直接得到二进制文件 - 运行
deviceQuery
:执行./deviceQuery
,得到结果。
- 获取示例目录(放到当前目录下):
- 验证驱动:
安装cuDNN
|