WSL2入门配置指南
最近不断看到有网友询问关于WSL2的问题,因此决定写一篇详细的入门配置教程,手把手教你如何配置WSL2,从入门到熟练使用。
通过这篇文章,你将学会:
- 在你的Windows电脑上安装Ubuntu到WSL2中;
- 迁移你的WSL2系统镜像,让系统随时可用;
- 优化WSL2系统设置,让其可以后台启动并高效运行;
- 设置Ubuntu内的应用开机自启。
- 其他的一些安全设置选项
1.安装Ubuntu到WSL2
默认选择Ubuntu系统,因为它是唯一官方支持GPU加速的发行版,非常方便。
wsl --install
如果你想尝试其他发行版,可以通过以下命令查看并安装:
wsl --list --online 或 wsl -l -o
wsl --install -d <发行版名称>
当然,你也可以安装多个发行版。默认情况下,系统会安装在C盘上,但你可以迁移到其他位置。
2.导出和迁移系统
首先,导出现有的系统:
wsl --export Ubuntu E:\Ubuntu2.tar
然后取消挂载当前系统:
wsl --unregister Ubuntu
最后,将系统重新挂载到新的位置:
wsl --import Ubuntu E:\wsl2\Ubuntu E:\Ubuntu.tar
3.1.限制WSL2的资源占用
为了防止WSL长期占用系统资源,你可以通过配置.wslconfig文件来限制WSL的内存、CPU和交换分区大小。
- 打开Windows资源管理器,地址栏输入
%UserProfile%
回车。在该目录下创建一个名为.wslconfig的文件,写入以下内容(以8GB内存电脑为例,分配2GB内存和2个CPU线程给WSL,设置4GB交换分区):
[wsl2]
memory=2GB
swap=4GB
processors=2
localhostForwarding=true
- 执行以下命令关闭并重新启动WSL:
wsl --shutdown
如果你不想限制WSL2的内存占用,可以通过定时任务定期清理内存。编辑crontab设置每小时释放一次内存:
crontab -e
0 */1 * * * echo 3 > /proc/sys/vm/drop_caches
3.2.设置WSL2后台启动
- 在你的WSL2的Debian或Ubuntu中执行以下命令,允许用户执行所有命令而不需要密码:
sudo bash -c "echo '$USER ALL=(ALL) NOPASSWD: ALL' >/etc/sudoers.d/$USER"
- 在Windows开机启动文件夹中添加一个以.vbs结尾的文件,内容如下:
set ws=wscript.CreateObject("wscript.shell")
ws.run "wsl -d Ubuntu", 0
要快速进入开机启动文件夹,可以按Windows+R,然后输入 shell:startup
。你可能还会用到 taskschd.msc
。
4.设置Ubuntu内的应用开机自启
在WSL系统内新建并添加以下内容:
vi /etc/wsl.conf
内容如下:
[boot]
systemd=true
然后开启Ubuntu的开机启动服务:
systemctl status rc-local
并添加以下内容:
cat <<EOF >/etc/rc.local
# !/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
EOF
执行以下命令使脚本可执行并启用:
chmod +x /etc/rc.local
systemctl enable --now rc-local
无视警告即可:
systemctl status rc-local.service
修改 /etc/rc.local
里的内容即可让你的Ubuntu应用开机启动。
5.其他的一些必要配置:
设置root密码,开机必备
sudo passwd root
更新系统
su -
apt-get update && apt-get upgrade
WSL2 Ubuntu 安装openssh-server
sudo apt update
sudo apt install openssh-server
WSL2 启用systemd
在/etc目录下新建wsl.conf配置文件,并编辑该配置文件:
Ubuntu
sudo vi /etc/wsl.conf
输入内容:
[boot]
systemd=true
Windows
在 Windows PowerShell(管理员)中运行:
wsl --shutdown
再重新打开 Ubuntu,使 WSL 彻底重新启动以便启用 systemd。然后在 WSL 中运行:
让你的ssh开机自启
systemctl enable ssh
systemctl start ssh
请注意你的ssh的登录安全,按照你的安全习惯配置即可。
进一步学习
学完以上基础内容后,你可能会感兴趣以下内容:
- 如何在WSL2内运行大模型,如部署本地的ollama或吾皇的GPT;
- 如何让你的本地模型在外网随时可访问,如部署Tailscale或ZeroTrust;
- 还有哪些有趣的场景可以探索?
写了这么多,给个赞,升个三级不过分吧!
Update:关于评论里提到的网络配置问题,NAT模式(WSL2默认)下已满足需要,有更多需求的请参看底部参考资料3的内容