买了新电脑(3090ti)用来炼丹,犹豫了许久后在双系统和 WSL 中选择了后者。
原因如下:
- 不想折腾双系统的硬盘、网络配置,而 WSL 可以同步主系统的 host
- 尝鲜 WSL2,知道这东西好久了,但之前的用的拯救者笔记本跑起来很卡,没当生产力用过
- 存在感低,2-3 秒就能开启的子系统,可以跑着任务挂后台,同时满足我 “不想在 windows 里配环境” 的奇怪要求
- 网上说现在的 WSL2 对 NVIDIA GPU 的支持很好,很多帖子中要避的雷都已经不再重要了。
配置历程#
回忆一下配置路程:
下载 WSL2#
Win11 下,只需要在 WIndows Powershell 中运行下面指令即可完成全部系统配置,不需要再去勾选什么 “虚拟机平台” 和 “开启 HyperV”:
wsl --install # 默认是 LTS 版本,要下载指定版本可以先输入wsl --list --online 查看
迁移硬盘#
个人习惯把东西放其它盘里,但 WSL 默认是装在系统盘,先确定版本:
wsl --list --verbose
导出现有的系统:
wsl --export Ubuntu-20.04 D:\Ubuntu.tar # 我这里的版本和命名是这样的
取消挂载:
wsl --unregister Ubuntu-20.04
重新挂载:
wsl --import Ubuntu-20.04 D:\wsl2\Ubuntu D:\Ubuntu.tar
wslconfig#
Win + r 输入 % UserProfile%,然后在该目录下创建一个名为 .wslconfig
的文件(记得去开启文件后缀显示),具体配置还是得去网上找专业内容,WSL2 默认只能使用一半内存,我这里希望全开而已,前两条是网络 host 省心设置。
[wsl2]
networkingMode=mirrored
autoProxy=True
memory=32GB
避雷#
这里要注意的是,迁移硬盘重新挂载后默认用户将是 root 而非一开始登陆的 Unix User,为了美好的未来,最好不要用 root 用户来完成全部操作。
vim /etc/wsl.conf
然后复制下面内容,systemd 应该默认就有了现在:
[user]
default=你最开始注册的用户名
[boot]
systemd=true
此外,不要在 WSL 里尝试删库大法,可能会把整个盘都删了,想感受效果去虚拟机里整。
关机#
不用的时候想释放资源,可以在 Windows PowerShell 里输入:
wsl --shutdown
ZSH#
习惯了 zsh 作为默认终端,sudo apt install zsh
就行,再找个 oh-my-zsh 的配置贴跟着走完就能得到一个够用的终端。
如:https://dev.to/equiman/zsh-on-windows-with-wsl-1jck
不过这篇推荐的用来适配终端的 font 不太好看,个人还是喜欢 JetBrains Nerd Font Mono 字体。
其它配置#
我的需求是配置深度学习环境,没什么可讲的,跟你在纯正 Linux 服务器上操作一样,miniconda
+uv pip install
即可。
如果这里 pip 下载时提示你当前在用 root 账户操作的话,注意本文前面提到的
尾声#
感觉 WSL2 确实节省了不少精力,也能便调配方、炼丹边摸鱼,这样的 Windows 才是我心中理想的操作系统,Mb Air 都放了两天了,除非出门根本不会用。
至于炼丹速度,能跑起来就行了,网上说的 20% 左右的损耗只要不去想就没事,越爱比较烦恼越多~