WSL2安装教程
安装WSL与基础设置
对于一台从未安装过wsl的win11系统,在命令行中输入wsl --install即可开始安装。
1 | C:\Users\Vanilla>wsl |
如果下载的很慢或者一直卡在0.0%,可以加上参数--web-download或者搜索其他的解决方法。
1 | wsl --install Ubuntu-22.04 --web-download |
设置用户信息
在下载安装完成之后,会自动启动WSL,并让你输入用户名:
1 | Enter new UNIX username: |
用户名的要求是^[a-z][-a-z0-9]*\$,即第一个字符必须为小写字母,之后可以为小写字母、数字和-。
之后会要求输入密码:
1 | New password: |
可使用passwd以修改或重置密码。
更新和升级软件包
正如使用Ubuntu一样:
1 | sudo apt update && sudo apt upgrade |
就像使用linux一样,WSL不会自动更新软件,需要我们自行控制。
使用镜像网络模式
Mirrored相比于Nat,支持IPv6等高级功能,并可以直接访问局域网中的网络应用程序,实现真正的“双W合一”(开个玩笑。指Windows和WSL合为一体),并且也方便配置代理。
设置镜像模式
打开WSL Settings,网络,将网络模式的Nat改为Mirrored,并启动下面的主机地址回环选项。

重启WSL:
1 | wsl --shutdown |
配置代理
想必之前你已经注意到很多次这句话了:
1 | wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。 |
而镜像模式可以很顺利的解决这个问题。
在~用户目录下创建两个文件,分别代表启动和关闭代理。
创建.proxy_on脚本:
1 | nano ~/.proxy_on |
然后写入:
1 | PORT="${PORT:-7897}"; HOST="${HOST:-127.0.0.1}"; URL="http://$HOST:$PORT" |
同理,创建.proxy_off:
1 | nano ~/.proxy_off |
写入:
1 | unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY no_proxy NO_PROXY |
修改bash配置文件,设置指令别名:
1 | nano ~/.bashrc |
刷新配置文件:
1 | source ~/.bashrc |
之后,使用proxyon和proxyoff控制代理的启动与停止。
配置ssh
安装OpenSSH-Server并修改端口
检查sudo nano /etc/wsl.conf内存在:
1 | [boot] |
确保启动了systemd,方便使用systemctl。
1 | sudo apt update |
最后一步可能是active (running),也可能是fail和显示22端口占用的报错。这就是因为windows的ssh服务器正在使用22端口,导致了这种情况。需要手动修改WSL的ssh服务器端口。
1 | sudo nano /etc/ssh/sshd_config |
找到#Port 22修改为Port xxxxx(取消注释,修改为自己喜欢的端口)
应用变更:
1 | sudo systemctl restart ssh |
现在应该能够看到绿色的active (running)了。
同时,也可以在windows命令行内成功连接了:
1 | ssh USENAME@127.0.0.1 -p xxxxx |
配置免密
在Windows命令行中使用ssh-copy-id传输密钥:
1 | ssh-copy-id -p xxxxx USERNAME@127.0.0.1 |
如果显示不存在该指令,可参考解决:powershell无法使用ssh-copy-id命令,使用power shell进行配置。
启动power shell,输入:
1 | function ssh-copy-id([string]$userAtMachine, $args){ |
然后再使用ssh-copy-id传输密钥即可。
局域网访问
打开windows的防火墙设置,手动配置入站规则。
或者以管理员模式启动power shell,输入:
1 | New-NetFirewallRule -DisplayName "WSL SSH xxxxx" -Direction Inbound -Protocol TCP -LocalPort xxxxx -Action Allow -Profile Private |
(注意修改端口号)
WSL常驻后台与开机自启动
后台常驻
当关闭终端的时候,WSL会自动关闭。这一点对于本地使用WSL无伤大雅——下次要用的时候输入wsl即可很快的开启。但是对于远程ssh使用,就比较不友好了。
1 | wsl --exec dbus-launch true |
开机自启动
同理,根据Windows 11 开机自动启动 WSL 并实现局域网访问与迁移(Ubuntu-22.04 为例),我们可以在windows的任务计划程序中创建任务。
- 常规标签页
- 名称:AutoStart WSL
- 勾选:使用最高权限运行
- 触发器
- 新建触发器,开始任务设置为”登录时“
- 操作
- 程序填写:
wsl.exe - 添加参数:
--exec dbus-launch true
- 程序填写:
- 条件
- 取消所有勾选
- 设置
- 勾选”允许按需允许“
- 勾选”错过时尽快允许“
- 勾选”如果任务失败,按以下频率重新启动“
- 取消勾选”如果……停止任务“
然后点击确定。
尝试重启windows系统,开机后直接尝试ssh连接,如果能够连接成功,说明wsl自启动设置成功,且能够保持后台运行。
安装nvidia-utils
1 | sudo apt update |
安装CUDA Toolkit
非必须。如果只是跑pytorch,在pytorch安装时就够了,不需要完整的CUDA Toolkit.
CUDA Toolkit 13.0 Update 1 Downloads | NVIDIA Developer

注意选择WSL-Ubuntu。然后跟着下面的Installation Instructions运行即可。
配置环境变量:
1 | nano ~/.bashrc |
写入:
1 | export PATH=/usr/local/cuda/bin:$PATH |
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH 并刷新环境:
1 | source ~/.bashrc |
此时运行nvcc -V,会有输出:
1 | (base) USERNAME:~$ nvcc -V |
配置Anaconda
这里为了轻量化,使用Miniconda。
首先在官网上下载安装包,这里下载到的是Miniconda3-latest-Linux-x86_64.sh。并上传至~路径下。
然后安装:
1 | bash Miniconda3-latest-Linux-x86_64.sh |
yes同意条款;- 安装到
/home/USERNAME/miniconda3; yes启动每次终端自动激活(base)。可用conda init --reverse $SHELL取消。
安装完毕之后重启终端或执行:
1 | source ~/.bashrc |
配置pytorch_gpu环境
测试cuda:
1 | nvcc -V |
并记住cuda版本号。
新建虚拟环境:
1 | conda create -n torch_env python=3.13 |
安装PyTorch,注意选择对应的cuda版本:
1 | pip3 install torch torchvision |
测试pytorch与cuda:
1 | import torch |
小型压测:
1 | python - <<'PY' |
输出:
1 | cuda gemm time: 0.10652017593383789 s |
安装nvitop
1 | pip3 install --upgrade nvitop |
需要注意的是,这个是跟着环境走的(?)。也就是说可能每个虚拟环境都需要安装一次。不过通常在(base)中安装就足够了。
参考文献
微软提高的WSL安装手册。
微软提供的WSL配置手册,内容包括设置用户名和密码,使用基本 WSL 命令,安装和自定义 Windows 终端,为 Git 版本控制、代码编辑和调试使用 VS Code 远程服务器,好的文件存储实践,设置数据库,装载外部驱动器,设置 GPU 加速等。
WSL Install (适用于windows的Linux子系统)下载速度提升 - 哔哩哔哩
wsl下载加速方法(评论区有很多)。
在issue中有人给出的一行指令解决该问题。
gardengim/keepwsl: A simple
service to keep WSL alive
一个使WSL持续运行的脚本。
Windows 11 开机自动启动 WSL 并实现局域网访问与迁移(Ubuntu-22.04 为例) - 知乎
在win11任务计划程序中创建一个登录时触发的任务,使WSL开机自启动。
使用 WSL 访问网络应用程序 | Microsoft Learn
镜像模式网络。
解决:powershell无法使用ssh-copy-id命令 - octal_zhihao - 博客园
一个函数解决powershell使用ssh-copy-id命令。
Anaconda/Miniconda下载地址。
win10/11下wsl2安装gpu版的pytorch(避坑指南) - 知乎
讲述了如何安装cpu/gpu版本的cuda并配置pytorch环境。
讲述了如何简单的安装与使用nvitop
WSL 上的 Docker 容器入门 | Microsoft Learn
微软提供的WSL+Docker配置指南。