子系统wsl2更新内容备注

我目前(20200825)的主系统版本是win10 2004 v19041.450

子系统使用的是ubuntu18.04

就从这里开始说,我所知道的

其它更新进度参考

https://docs.microsoft.com/en-us/windows/wsl/release-notes

以往wsl 1 采用的Cygwin或者MinGW一样的技术,

新版本wsl 2 采用的是系统自带虚拟机hyper-v环境运行的。

既然是虚拟就肯定占处理器和内存,高频访问主系统文件略慢,这是唯一的劣势。

而虚拟机优势,能完整使用ubuntu,进程与主机隔离防止恶意软件。

而主和子系统文件是可互访的,网络也一样,但是通过挂载或共享服务器完成的。

比如,主系统要访问子系统文件,可以 \\wsl$

相反,子系统默认挂载在了/mnt/盘符下

网络,主系统可以通过http://localhost

或者http://127.0.0.1

或者http://172.27.233.XXX (ifconfig查看)

访问你的web网站。

新版本wsl2支持GPU加速

也可以通过命令来回切换版本,且保留环境

切换1 wsl.exe --set-version ubuntu1804 1

切换2 wsl.exe --set-version ubuntu1804 2

截止目前 WSL2 的 systemd 守护进程不是原生的,没办法加载自启动。

因为pid 1 不是systemd,而是init

像以前的老办法,在window中执行脚本

编辑一个文件

vi /etc/init.wsl

比如内容为

service ssh start

service nginx start

在主系统cmd执行

ubuntu1804 run sudo /etc/init.wsl start

就是传说中的迂回法。

或者采用

第三方工具运行 systemd

https://github.com/arkane-systems/genie

原理:提供一个单独的 namespace 隔离 跑 systemd,此时pid为1

参考:https://segmentfault.com/a/1190000023027574

如果不想用wsl2,你可以考虑vbox或Docker Desktop,新版本已经支持 WSL2 和 Hyper-V

WSL2 内存占用巨大的限制办法
win主系统运行处输入 %UserProfile% 回车
编辑.wslconfig文件内容为
[wsl2]
memory=4GB
swap=0
localhostForwarding=true

点赞