安装WSL2

参考这篇文章:
https://zhuanlan.zhihu.com/p/475462241
https://www.sysgeek.cn/windows-11-install-wsl2/

WSL2开启ssh

vim /etc/ssh/sshd_config
修改如下:

# Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
PasswordAuthentication yes

重启sshd:sudo service ssh restart
看到重启成功即可,使用ssh登录WSL2。

开机启动

windows11 + WSL2,整个启动过程如下:
Win11开机 >> Win11开机脚本 >> WSL子系统脚本 >> 启动Linux程序

在ubuntu下添加开机启动

为WSL2 开启systemd,那么可以使用systemctl service ssh start,这种服务启动的方式了。具体可参考下篇中的开启systemd部分。

常驻后台运行

正常情况,当关闭WSL的console时,实例会自动关闭。这对于我们想长时间把WSL ubuntu当作一台远程vm主机来说,显然是不合适的,需要长时间打开一个终端窗口。可以采用以下方式,在开机时打开一个实例。0表示,它会一直等待输入,而不会休眠。

set ws=wscript.CreateObject("wscript.shell")
ws.run "wsl -d Ubuntu-22.04", 0

移动到Windows开机启动项

Windows 下 Win+R 输入 shell:startup,打开文件夹,把linux-wsl.vbs,拖入到文件夹中。

故障排除办法

如果出现运行不成功,多半是权限问题,可以在cmd窗口运行如下启动命令
wsl -d Ubuntu-22.04

局域网访问Windows11 下的WSL2

WSL 2 发布了最新版本 2.0.0,这个版本开始,自带支持新的镜像网络,WSL2可以使用宿主机的IP,开启的端口直接打通到宿主机。这样可以通过宿主机IP + Port访问WSL2 虚拟机里的服务。
从而不用折腾桥接网络下,在windows上端口转发,开启防火墙等复杂操作。而且,ip经常跳的问题,导致没法用。绑定localhost,也要解决几个奇怪的报错。
现在有了镜像网络,前几项的折腾就可以省去了。

更新 WSL:wsl --update --pre-release

[experimental]
networkingMode=mirrored # 镜像网络模式
dnsTunneling=true
firewall=true
autoProxy=true

重启wsl2,就可以使用宿主机windows11 的ip,通过ssh,来访问内部虚拟机WSL2 ubuntu了。