今天 WSL2 更新了 2.0.0 版本,详细更新内容见: https://github.com/microsoft/WSL/releases/tag/2.0.0
总结一下主要是:
需要至少 Windows 11 23H2 ,目前还没有发布正式版本,不过可以考虑加入 Insider 的 Release Preview 或者 Beta 通道,更新系统之后运行 wsl --update --pre-release
升级 WSL ,然后就可以在 %userprofile%\.wslconfig
里面设置以下内容:
[experimental]
autoMemoryReclaim=gradual # 可以在 gradual 、dropcache 、disabled 之间选择
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
然后你会发现,WSL2 和 Windows 主机的网络互通而且 IP 地址相同了,还支持 IPv6 了,并且从外部(比如局域网)可以同时访问 WSL2 和 Windows 的网络。这波升级彻底带回以前 WSL1 那时候的无缝网络体验了,并且 Windows 防火墙也能过滤 WSL 里的包了,再也不需要什么桥接网卡、端口转发之类的操作了。
详细更新公告见: https://devblogs.microsoft.com/commandline/windows-subsystem-for-linux-september-2023-update/
关于自动释放 WSL2 虚拟硬盘空间,需要设置稀疏 VHD。
首先在上面的配置里再加一行:
sparseVhd=true
然后运行这个命令切换到稀疏 VHD:wsl --manage 发行版名字 --set-sparse true
比如 wsl --manage Ubuntu --set-sparse true
如果遇到了:
wsl: Hyper-V 防火墙不受支持
wsl: 不支持镜像网络模式,正在回退到 NAT 网络
wsl: DNS 隧道不受支持
请加入 Windows Insider 预览版计划,选择进入 Release Preview 或者 Beta 通道,然后更新系统!(当然选择 Dev/Canary 通道也不是不行,但是不稳定所以不建议)
或者如果不想加入预览版计划的话你也可以等几周,23H2 也快发布正式版了。
另外,使用 VSCode - WSL
插件的,建议去 VSCode 设置里把自动端口转发关掉(Remote: Auto Forward Ports
),避免冲突,因为 WSL2 更新之后新的网络已经是和你的 Windows 使用相同网络了,不再需要端口转发了。
如果你在 WSL 里使用 docker,那需要将 autoMemoryReclaim
配置为 dropcache
或者 disabled
,然后在 /etc/docker/daemon.json
里添加一句 "iptables": false
,否则你可能无法正常使用 docker。
1
Cola98 2023-09-19 10:29:12 +08:00 1
网络这一点看起来体验会很好
|
2
lblblong 2023-09-19 10:35:28 +08:00 19
win10 不能用就很烦
|
3
dobelee 2023-09-19 10:35:45 +08:00
配置后启动:
wsl: Hyper-V 防火墙不受支持 wsl: 不支持镜像网络模式,正在回退到 NAT 网络 wsl: DNS 隧道不受支持 |
4
hez2010 OP @dobelee 参考原文:**需要至少 Windows 11 23H2 ,目前还没有发布正式版本,不过可以考虑加入 Insider 的 Release Preview 或者 Beta 通道。**
你可以加入 Windows Insider 进入 Release Preview 或者 Beta 通道,然后更新系统,然后就可以了。 |
5
hez2010 OP |
6
nianlifeixing 2023-09-19 10:39:25 +08:00
感觉更新还蛮大的,以前有段时间折腾,装了 wsl2 ,虚拟化老是蓝屏,感觉不如 wsl1 ,虽然 wsl1 很慢。。
至少网络这块好多了 |
7
x1aoYao 2023-09-19 10:39:34 +08:00
WSL2 的版本号终于是 2.x 了
我现在 1 和 2 同时在用,这次网络交互升级后 WSL1 依旧比 WSL2 有个优势:和 Win 交互访问文件效率 |
8
Baymaxbowen 2023-09-19 10:43:28 +08:00
能局域网访问简直太棒了
|
9
BuffDog 2023-09-19 10:44:45 +08:00
新手用 wsl2 交叉编译啥的都很顺畅,这波把网络问题搞了就很赞
|
10
proxytoworld 2023-09-19 10:45:54 +08:00
固定 IPwin11 老早就有了,不过自动回收内存这个可以
但目前用的 win10 ,64g 内存也没啥,这个东西还没这么大诱惑让我升级 |
11
Richardhtw 2023-09-19 10:46:06 +08:00
cool~
|
12
leewi9coder 2023-09-19 10:47:09 +08:00
总感觉没有 vagrant 封个 box 稳,求打醒
|
13
daya 2023-09-19 10:47:58 +08:00
WSL2 对调用显卡资源的支持如何?能安装 ROCm 、stable diffusion 跑图吗
|
14
LitterGopher 2023-09-19 10:48:36 +08:00 1
我:我承认 wsl 很方便,假如,我是说假如,假如我直接装 Linux 系统,阁下又当如何应对?
微软:反正授权费用已经在你笔记本价格里面了。 |
15
junkk 2023-09-19 10:50:06 +08:00
解决运行 PHP 非常慢的问题了么....
|
17
wildman9527 2023-09-19 10:53:35 +08:00 1
@LitterGopher #14
阁下会尝试用 微信、企业微信、QQ 来联系你. 而你根本收不到, 或只能看到乱码🤣 . .. |
18
WashFreshFresh 2023-09-19 10:53:51 +08:00
wslg 也支持了吗
|
19
tairan2006 2023-09-19 10:54:17 +08:00
做得好啊
不过还是等正式版发布 |
20
javalaw2010 2023-09-19 10:55:04 +08:00 1
@junkk 运行 php 非常慢大概率是因为你在 windows 文件系统创建的项目,使用的是 wsl2 的 PHP 执行的,wsl2 下访问 windows 文件夹是通过网络进行的,所以很慢,解决办法就是你把项目创建到 wsl2 里面就可以了。不管你用的是 vscode 还是 phpstorm ,都可以很好的支持 wsl2 里的项目了。
|
21
WashFreshFresh 2023-09-19 10:55:19 +08:00
试了下,wslg 正在更新 2.0.0
|
23
happyxhw101 2023-09-19 10:59:06 +08:00
我随手就抛出一个 linux 单系统
|
24
leeyuzhe 2023-09-19 10:59:16 +08:00 2
自动回收内存,自动回收硬盘,使用 windows 代理全是我的痛点
|
25
LitterGopher 2023-09-19 10:59:40 +08:00
@wildman9527 可是,我还有一台 mac 啊🤣。
|
26
lilei2023 2023-09-19 11:01:21 +08:00
为啥 win10 不信啊,烦烦烦
|
27
junkk 2023-09-19 11:03:03 +08:00
@javalaw2010 #20 意思是把挂载 win 的目录改成 直接在 wsl2 里创建项目,然后挂载 wsl2 的目录到 docker ,然后 phpstorm 打开 wsl2 的目录开发么?
这种对 debug 会有影响吗? 之前搜到过这种方法,总感觉有点怪加上麻烦,就没这么用 |
28
x86 2023-09-19 11:05:39 +08:00
支持 Windows 设置的代理这个太好了
|
29
WashFreshFresh 2023-09-19 11:07:27 +08:00
wslg 更新后配置了新的选项,提示这个
wsl: Hyper-V 防火墙不受支持 wsl: 不支持镜像网络模式,正在回退到 NAT 网络 wsl: DNS 隧道不受支持 |
30
loading 2023-09-19 11:08:20 +08:00 via iPhone
搭车问:
wsl2 的虚拟硬盘是哪个文件,如果 win 炸了,我用 winpe 能不能救出里面的数据?(我是说我万一有个小文件在里面) |
31
hez2010 OP @WashFreshFresh 仔细看原文,你系统版本不够要求。
|
32
pkoukk 2023-09-19 11:09:45 +08:00
@junkk #27 没用过 jb 家的东西,但是 vscode 是通过 remote 的方式进行的,在 wsl 里起一个 vscode server ,你在 windows 里的 vscode 编辑会传送给 server ,然后 server 修改 wsl 系统下的文件。虽然说起来很繁琐,但是实际体验和直接编辑 windows 目录下的文件没有区别,甚至更好,因为 vscode 的内置 terminal 也会直接在 wsl 下运行。
可以找找试试 jb 家的 remote ,应该也是支持 wsl 的 |
33
javalaw2010 2023-09-19 11:10:58 +08:00
@junkk #27 没问题的,phpstorm 发现是 wsl2 内的项目会自动启动 wsl2 的支持,docker desktop for windows 的话,也会自动启用对默认 wsl2 发行版的支持,你直接在 wsl2 内敲 docker 命令就可以了,对 phper 来说的话,除了创建项目的目录改变了,其他的变化几乎是透明的。
|
34
javalaw2010 2023-09-19 11:13:47 +08:00
@pkoukk 不用 remote 也支持的,windows 上的 jetbrians IDE 会往 wsl2 里塞一个进程,通过通信解决一些跨系统的问题。
|
35
iold 2023-09-19 11:14:22 +08:00
这就去更新一下
|
37
binaryify 2023-09-19 11:28:21 +08:00
镜像网络太好了
|
38
tsanie 2023-09-19 11:29:10 +08:00
这两个月应该就发 23H2 正式版了,不想再进 insider 了
|
39
gam2046 2023-09-19 11:34:08 +08:00
insider 进了一次 我就放弃了,BSoD 好几次,一时半会也退不出来,被迫重装系统,然后是浪费了好多时间。
老老实实等正式版本的推送吧。 |
40
sayakafs 2023-09-19 11:45:09 +08:00
开了这玩意儿就不能进行虚拟机嵌套了
|
41
hahasong 2023-09-19 11:53:34 +08:00
桥接都用习惯了,当虚拟机管理,咋改来改去
|
42
Biggoldfish 2023-09-19 11:56:23 +08:00
赞一个 等推送到正式版了
目前双开 WSL 1 和 2 中,需要 Windows 文件系统下用 Linux 工具用 WSL 1 ,需要更加贴近真实 Linux 或 GPU 用 WSL2 |
43
Tiande 2023-09-19 11:57:24 +08:00 via iPhone
还是 vmware 好用点,开了 hyperv 好多东西不能用
|
44
bing1178 2023-09-19 11:59:25 +08:00
一直用 WSL1 ,然后这波升级是 WSL2 添加了 1 的特性 。。
|
45
zed1018 2023-09-19 12:01:33 +08:00
@javalaw2010 但是支持的非常差,比如 intelliJ 的 wsl 支持到现在很多功能都不正常,而且经常会出新 bug ,甚至好不容易做的 tomcat 的运行支持到现在也是不 work 的状态,可能最新的 2.2 修复了。还是得用 gateway ,唯一的问题就是 gateway 没有 settings sync ,每个项目还独立。目前稍微好一点的方案是 intelliJ 装好配好,然后用 intelliJ 启动一个项目这样 jb client 会把 intelliJ 的配置和插件带一份过去,起码不会打开是啥也没有自定义过的状态了。
|
46
locoz 2023-09-19 12:17:02 +08:00 via Android
内存问题终于解决了…之前吃了内存就不吐出来,还得设内存限制,都不好长期开着
|
47
qing18 2023-09-19 12:17:50 +08:00
win10 怎么不能用呀,不想用 win11
|
48
arfaWong 2023-09-19 12:26:03 +08:00
已更新😁
|
49
a632079 2023-09-19 12:41:49 +08:00
可以可以,基本痛点都解决了。
|
50
javalaw2010 2023-09-19 12:42:40 +08:00
@zed1018 哦还有这种 Bug?我不是 javer 不经常用 intellij 所以不是很清楚这个 Bug 。外企好像都这风格,再严重的 bug 只要不是 security 相关的都等着发版周期,而 jetbrians 家的发版周期一年都屈指可数。。。说回来 gateway 实在是太难用,我以前考虑过直接在 wsl2 里装 jetbrains IDE 的方案,不过实验下来有几个影响体验的问题:
1. jetbrains linux 版本全系 runtime 不支持输入法跟随,输入中文的时候候选框一直在左下角的位置 2. jetbrains 全家桶不原生支持 wayland ,所以分数缩放有问题,4K 屏 150%或者 175%的缩放体验非常差 3. wslg 会在窗口包一层边框,似乎这个边框是无法去掉的 如果能接受以上的问题的话,那体验确实会比 gateway 体验好一些 |
51
cst4you 2023-09-19 12:48:12 +08:00
Windows 11 狗都不用(
|
52
wingzhingling 2023-09-19 12:50:56 +08:00 via Android
更新 win11 的动力主要来源于 wsl 和 wsa ,也是挺幽默的
|
53
javalaw2010 2023-09-19 12:52:25 +08:00 2
@loading 到注册表找`HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss`,这下面的文件夹里面有你发行版的名称和虚拟磁盘的路径,要救数据的话,把 vhdx 文件复制出来备份好,之后不管是虚拟机挂载还是直接新建新的 wsl2 发行版直接替换 vhdx 文件这都看你心情了。
|
54
meixg 2023-09-19 13:05:34 +08:00
真的是史诗级更新,之前挂公司代理要各种修改 resolv.conf ,这回看起来不用了。
|
55
SZP1206 2023-09-19 13:16:41 +08:00
挺好挺好,网络的痛点被解决了
|
56
tony1016 2023-09-19 13:19:42 +08:00
macOS:什么是 linux
|
57
Cu635 2023-09-19 13:22:31 +08:00
是说 win 10 之后也不会有这个更新么?
@tony1016 #56 它自己就可以算是了。macOS 本身就是类 unix ,再用 homebrew 安装一下 gun 风格的命令行工具不就基本能用了么…… |
59
limaofeng 2023-09-19 13:24:04 +08:00
就网络这块就很不错了,不知道什么时候出正式发布。之前 WSL2 吃内存吃的严重,我都是重启 WSL 来释放内存的
|
60
treblex 2023-09-19 13:25:53 +08:00 3
win10 使用 wsl --update --pre-release 可以找到更新,不知道有没有问题
|
61
DearMark 2023-09-19 13:26:17 +08:00
Microsoft: 你懂 Linux 开发吗,库克?
|
62
ShadowPower 2023-09-19 13:26:50 +08:00
有这些特性之后感觉已经被 Windows 生态绑架了,办公、娱乐、开发都可以一套系统全部搞定
|
64
zorui 2023-09-19 13:39:23 +08:00
@LitterGopher 我:我承认 Linux 很方便,假如,我是说假如,假如我要使用微信,QQ ,玩游戏,阁下又当如何应对?
腾讯:反正都有又不是不能用,来玩手游呀。 |
65
qinfengge 2023-09-19 13:47:50 +08:00
好好好,我宣布微软的亲妈复活一天
|
67
lovestudykid 2023-09-19 13:54:03 +08:00
Windows explorer 支持隐藏 . 开头的文件了吗?
|
68
MCyunpeng98 2023-09-19 13:54:50 +08:00
@javalaw2010 #33 您好,问个问题,在 Windows 中,开启 wsl2 ,安装 Ubuntu ,我如果要配合 docker 搭建 php
的 LNMP 环境,是吧 NMP 安装在 docker 上的容器上跑嘛 |
69
zxw567 2023-09-19 13:55:40 +08:00
奇怪了,我目前用的最新的 dev channel 也提示
wsl: Hyper-V 防火墙不受支持 wsl: 不支持镜像网络模式,正在回退到 NAT 网络 wsl: DNS 隧道不受支持 |
70
cylx3124 2023-09-19 13:56:09 +08:00
刚试了一下设置 autoMemoryReclaim=gradual 后,wsl 里的 docker 跑不起来了
还是先观望一下吧 |
71
c3de3f21 2023-09-19 13:56:33 +08:00
什么时候能自带串口支持就好了
|
72
chinaguaiu 2023-09-19 13:58:20 +08:00
很好,wsl2 之前在网络访问上的一系列历史问题都将被扫入历史的垃圾堆
|
73
leonshaw 2023-09-19 14:02:05 +08:00
能挂系统盘上的 ext4 分区了吗?
|
74
javalaw2010 2023-09-19 14:07:05 +08:00 1
@MCyunpeng98 完全 OK 的,我就是这么用的 laradock ,如果要挂载路径的话记得挂载 wsl2 的路径,总之使用原则上记住一条,避免跨文件系统读写,体验就很好。
|
75
javalaw2010 2023-09-19 14:09:21 +08:00 1
@javalaw2010 #53 题外话,用这个 https://github.com/bostrot/wsl2-distro-manager 开源 GUI 创建 wsl2 ,可以自定义 vhdx 的路径。
|
76
sighforever 2023-09-19 14:12:38 +08:00
终于解决网络问题,太好了
|
77
20015jjw 2023-09-19 14:20:02 +08:00 via iPhone
好厉害呀
我选 mac 不搞自己 |
78
muooOOO 2023-09-19 14:20:59 +08:00 via Android
现在就等什么时候支持 usb 设备
|
79
MCyunpeng98 2023-09-19 14:26:44 +08:00
@javalaw2010 #74 wsl2 的路径是那里?,我记得 /mnt 下的 abc 是 Windows 的硬盘
|
80
javalaw2010 2023-09-19 14:28:24 +08:00 1
@MCyunpeng98 #79 对,除了/mnt 下的你随便挂载
|
81
default996 2023-09-19 14:35:47 +08:00
wsl --status
WSL 正在完成升级... 更新失败(退出代码: 1603)。 Error code: Wsl/CallMsi/E_ABORT ---------- 挂掉了,浪费了几个小时 |
82
MCyunpeng98 2023-09-19 14:44:01 +08:00
@javalaw2010 #80 嗯,感谢
|
83
bianhui 2023-09-19 15:06:36 +08:00
Pre-release 啊,全是 bug 更新啥啊,release 了再说吧
|
84
join 2023-09-19 15:14:32 +08:00 1
两年多以前逃到了 Linux ,之后再也没想过要回来。最近买了 steam deck ,惊喜的发现很多游戏 linux 支持还不错。
https://www.v2ex.com/t/794193 |
86
arfaWong 2023-09-19 15:27:33 +08:00
更新前记得 wsl --shutdown
|
87
DigitalG 2023-09-19 15:31:31 +08:00
话说,wsl 能方便设置自动挂载 vhd 分区了吗?比如把系统和数据放在不同的 vhd 文件里。我知道有手动的方式,但用起来还是比较麻烦(之前尝试用 windows 的 task ,碰到了一些问题放弃了)
|
88
Jirajine 2023-09-19 15:38:25 +08:00 via Android
@zorui #64 这些应用就算用 win/mac 也不可能直接安装到宿主机上运行,所以并没有什么障碍。
|
89
lyxeno 2023-09-19 15:44:11 +08:00
能释放空间爽到了。之前占用空间只会变大不会变小...
|
90
smartruid 2023-09-19 16:00:06 +08:00
nice
|
91
xwcs 2023-09-19 16:03:11 +08:00
|
92
mcluyu 2023-09-19 16:10:01 +08:00
Store WSL is now accessible from Session 0
第一条就是这个, 太好了,终于可以愉快的 ssh 连回去了 |
94
xomix 2023-09-19 16:23:34 +08:00
懒得折腾,等正式版吧,功能很吸引人
|
95
magicedy 2023-09-19 16:28:14 +08:00
"In early testing we noticed that this will break the docker daemon when running it as a service in WSL, and so if you’re using this feature we recommend you use Docker Desktop for your docker needs. We are working with the Docker team to address this in the future."
用 systemd 的 docker 确实别开 autoMemoryReclaim ,另外就算没开这个,docker 端口貌似也是有点问题(有人没问题能正常用的不?),还是继续用 bridged 好了(吐槽下,本来只想更新 win 11 beta 看看任务栏不合并效果,结果更完 win11 beta 自动把 wsl2 也更新到 pre-release 了。。) |
97
halleyLiu 2023-09-19 16:35:51 +08:00
厉害了,之前的网络真的很蛋疼
|
98
BurgerTown 2023-09-19 16:36:12 +08:00 1
@default996 去 Github 下载 MSI 安装包 我今天也是这样的 安装过程中遇到问题就 Ignore
|
100
mingwiki 2023-09-19 16:45:11 +08:00
巨硬牛逼,终于等到需要的功能了。这下可以吹 wsl 是最牛批的 linux 发行版。
|