
根据微软的官方博客: https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl ,在最新版的 WSL2 中已经支持了 Systemd ,升级的方法如下(以 Windows 商店内的 Ubuntu 发行版为例,Windows 版本为 Windows 11 22H2 ):
更新 WSL 版本:wsl.exe --update
查看 WSL 版本:wsl.exe --version
如果第一行显示为 WSL version: 0.67.6.0 ,则已升级到支持 systemd 的版本
sudo cat > /etc/wsl.conf <<EOF [boot] systemd=true EOF 退出 Linux 子系统,并关闭 WSL:wsl.exe --shutdown
重新进入 WSL ,输入 systemctl list-unit-files --type=service ,即可检验 systemd 的运行状态
1 brucmao 2022 年 9 月 22 日 升级失败 wsl.exe --update 正在检查更新。 The system cannot find the file specified. Error code: Wsl/UpdatePackage/ERROR_FILE_NOT_FOUND |
2 codehz 2022 年 9 月 22 日 wsl 也要商店安装的版本,于是 win10 用不了了) |
3 brucmao 2022 年 9 月 22 日 我用的商店里 Windows Subsystem for Linux Preview ,版本才 0.66.2.0 |
4 charlieethan OP @brucmao 没遇到过,建议直接去 https://github.com/microsoft/WSL/releases/tag/0.67.6 下载 msixbundle 安装 |
5 BeautifulSoap 2022 年 9 月 22 日 @brucmao 我也一样的问题,结果看到了: "This version of WSL is now available in the Microsoft Store to users on Windows Insiders build for initial testing" 。干,不光要 win11 ,还要装 store 版本,还必须系统是 insider 。 不过文档也说了可以从 WSL release page 安装还算好,但手动安装的话今后更新估计麻烦 |
6 Hylenbin 2022 年 9 月 2 日 via iPhone 看了,必须 win11 ,很讨厌圆角,还是坚守 win10 |
7 momocraft 2022 年 9 月 22 日 用这个可以在 wsl VM 里跑 dockerd 吗 |
8 learningman 2022 年 9 月 22 日 PS C:\Users\u> wsl --update 正在检查更新。 已安装最新版本的适用于 Linux 的 Windows 子系统。 PS C:\Users\u> wsl --version WSL 版本:0.66.2.0 内核版本:5.15.57.1 WSLg 版本:1.0.42 MSRDC 版本:1.2.3401 Direct3D 版本:1.606.4 DXCore 版本:10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows 版本:10.0.22000.978 |
9 kindjeff 2022 年 9 月 22 日 22H2 Preview 升级成功 不过我最需要 systemd 的应用 docker 已经用 podman 替代了,现在还真没有东西要用 systemd |
10 DonkeyBenjamin 2022 年 9 月 22 日 买了 systemd 作者算是值了? 不过还是不想用 win, 广告,ebpf 不支持,ssh 和 syncthing 配置方案麻烦,部份软件需要特殊配置。。。 |
11 hahastudio 2022 年 9 月 22 日 @kindjeff docker 用 systemd 么?我自己装 docker service 跑着没感觉出什么问题 |
12 kindjeff 2022 年 9 月 22 日 @hahastudio #11 不用 systemd 如何自动启动 daemon 呢 |
14 andyskaura 2022 年 9 月 22 日 wsl2 监听局域网 ip 有没有什么好点的办法 |
15 oldshensheep 2022 年 9 月 22 日 成功了,用的 ArchLinux 。 ~ systemctl list-unit-files --type=service | grep docker docker.service disabled disabled |
16 Nitroethane 2022 年 9 月 22 日 @DonkeyBenjamin #10 了解下 epbf-for-windows ( https://github.com/microsoft/ebpf-for-windows ),不过我不用 windows ,没试过,不知道效果咋样 |
17 DonkeyBenjamin 2022 年 9 月 22 日 @Nitroethane 感谢指出,这个当初看过一点,但是项目还处于早期阶段,懒得自己去踩坑。目前很多基于 ebpf 的工具和项目没有提到支持 wsl2 和 ebpf for windows. |
18 dinghmcn 2022 年 9 月 22 日 @oldshensheep #15 成功了,同用的 ArchLinux 。 |
19 hahastudio 2022 年 9 月 22 日 @kindjeff 我在 profile 里加了 service docker start |
21 onikage 2022 年 9 月 22 日 现在 ip 能固定了吗? |
22 JadeLove 2022 年 9 月 22 日 终于支持 systemd 了,不容易啊。。 不过我碰到 wslg 打开 idea ,过段时间就假死的问题,被迫弃了 wsl2 ,另外 wsl2 的固定 ip 是不是还不支持 |
23 cco 2022 年 9 月 22 日 wsl.exe --update 正在检查更新。 已安装最新版本的适用于 Linux 的 Windows 子系统。 wsl --version WSL 版本:0.66.2.0 内核版本:5.15.57.1 WSLg 版本:1.0.42 MSRDC 版本:1.2.3401 Direct3D 版本:1.606.4 DXCore 版本:10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows 版本:10.0.22000.978 |
24 kid740246048 2022 年 9 月 22 日 @onikage #21 @urzz #22 0.51.2 版本以上可以桥接网卡,配合路由器设置可以固定 ip https://github.com/microsoft/WSL/issues/4150#issuecomment-1018524753 |
26 xwcs 2022 年 9 月 22 日 更新后无法在 wsl2 中调用 windows 程序了 WSL 版本:0.67.6.0 内核版本:5.15.62.1 WSLg 版本:1.0.44 MSRDC 版本:1.2.3401 Direct3D 版本:1.606.4 DXCore 版本:10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows 版本:10.0.22000.978  |
27 xwcs 2022 年 9 月 22 日 |
28 xwcs 2022 年 9 月 22 日 开启这个 systemd 之后的话是无法调用 Windows 程序了,慎用 |
29 LifStge 2022 年 9 月 22 日 用的 win10 其实吧 写个脚本 win 下添加个计划任务 还不错呢... |
30 phenixc 2022 年 9 月 22 日 @andyskaura beta 版本支持桥接了 |
32 kindjeff 2022 年 9 月 22 日 @jdz #25 没有 daemon 就是个很大的优势,装好了直接用,不用起一个后台程序;也不用管什么 root 权限、docker 用户组的事情,当前用户就能用 然后 cli 几乎完全兼容,alias docker=podman 就可以 docker-compose 有 podman-compose 这样的兼容工具 他官方吹的写 k8s pod deploy yaml 在我看来几乎没有用,最重要的滚动更新用不成,还是用 compose 顺手 |
34 zhhww57 2022 年 9 月 22 日 之前都是自己 fake 一个 systemd ,或者弄 sysvinit ,这也是我讨厌 systemd ,而喜欢 sysvinit ,openrc 之类的原因,chroot ,proot ,wsl ,docker 之类的总是 init 系统一堆问题,后来干脆自己弄了个 fake 版本的 systemd ,直接导入自己的源,安装这个替换掉原版 sstemd ,然后 systemctl 的时候带了个解析器,自动解析 service 格式的服务,然后启动 |
36 tf2 2022 年 9 月 22 日 wsl2 不是虚拟机么。之前为啥不支持? |
37 Noicdi 2022 年 9 月 22 日 Windows 11 22H2 ,wsl --update 后的版本为 0.66.2.0 ,store 中 wsl preview 版本也是如此,够不到 0.67.6 ,看来暂时无缘了。 |
38 dingwen07 2022 年 9 月 22 日 非 Insider 用户从这里下载 Preview: https://github.com/microsoft/WSL/releases |
39 0attocs 2022 年 9 月 23 日 @lambdaq #28 为了更方便地处理 wsl 的特殊需求吧。wsl2 是一个运行 linux distro container 的 host vm ,本来用的是微软自己的(多个) init binary 。除了 pid 1 的 init 之外,其他的 init 用来管理 linux distro containers ,跑 9p server ,处理 linux 和 windows binary 的互操作之类的。 |
42 jelipo 2022 年 9 月 23 日 @DonkeyBenjamin #10 请问一下为什么不支持 ebpf ,不是完全虚拟化的 Linux 吗 |
45 xwcs 2022 年 9 月 23 日 |
46 xwcs 2022 年 9 月 23 日 |
47 2NUT 2022 年 9 月 23 日 wsl2 也是虚拟机,为啥不直接用虚拟机,徒增烦恼 wsl2 对微软最有用,对个人开发者用处不大 |
48 0attocs 2022 年 9 月 23 日 @Dragonphy #31 他发的那个 issue 里描述的是重启 WSL2 后打开第一个 linux distro 时可以互操作,打开第二个后就不行了。 https://github.com/microsoft/WSL/issues/8843#issuecomment-1254778464 |
49 0attocs 2022 年 9 月 23 日 @2NUT #37 WSL2 能和宿主 Windows 互操作,能直接调用互相的 binary ,由此能衍生不少花样,对特定人群有不可替代性。 例如,WSL2 支持 GPU 穿透并和宿主 Windows**共用一张不支持虚拟化的 GPU**,比如 GeForce 系列 GPU 。此时 WSL2 直接使用宿主 Windows 的 GPU 驱动,调用直接转发到宿主 GPU ,除了很小的转发 overhead 之外,没有性能损失(不过首发时 GPU 带宽好像默认是 PCIEx8 而非 x16 )。而其他 VM 即使支持 GPU 穿透,据我所知在不支持 vGPU 显卡上需要独占该显卡。 |
53 yukunZhan9 2022 年 9 月 24 日 >wsl --update 正在检查更新... 正在下载更新... 请求的操作需要提升。 --- 这是什么原因?有大佬知道吗 |
54 yukunZhan9 2022 年 9 月 24 日 @yukunZhan9 需要使用商店安装的 WSL ,已解决. |
55 chronos 2022 年 9 月 25 日 @xwcs https://github.com/microsoft/WSL/issues/8843#issuecomment-1255546484 这里提到的 WSLInterop.conf 文件放到 /usr/lib/binfmt.d 目录下,再重启一下 wsl 应该就可以正常使用了。 |
56 fgwmlhdkkkw 2022 年 9 月 29 日 @Dragonphy #40 这个是什么主题呀 |
57 Dragonphy 2022 年 9 月 29 日 @fgwmlhdkkkw #56 见 51 楼 |
58 brucmao 2022 年 10 月 15 日 今天突然可以更新了 ``` wsl.exe --update 正在检查更新。 正在更新适用于 Linux 的 Windows 子系统。. ~ [ 8s] wsl --version WSL 版本:0.70.0.0 内核版本:5.15.68.1 WSLg 版本:1.0.45 MSRDC 版本:1.2.3575 Direct3D 版本:1.606.4 DXCore 版本:10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows 版本:10.0.22000.1098 ``` |