查看: 1671|回复: 1
收起左侧

[分享] 重磅消息,win11子系统将支持systemctl

[复制链接]
eremiter
发表于 2022-10-8 14:46:23 | 显示全部楼层 |阅读模式

以前折腾了很久的 genie 和 distrod 来实现 wsl2 上的 systemd。现在微软和Canonical联合声明发布了官方支持的systemd,之前的折腾貌似有点浪费时间了。如果微软不发布这个systemd的解决方案,本文的主题可能就是去对比 genie 和 distrod 了。




在安装体验后,个人感觉官方支持的systemd确实比上述两个开源项目体验更佳。很值得有需要在wsl环境中运行docker、nginx、mysql等后台服务的小伙伴来尝鲜。




本文首先会介绍如何安装和配置 wsl systemd,并用两个小节去拿它去对比现有的 wsl systemd 解决方案:genie 和 distrod。
如果你是win 10用户,目前官方支持的systemd特性还不支持此系统。你仍旧可以使用这两个开源解决方案。




如何安装和使用微软官方支持的 systemd#


启用最新的wsl systemd特性前,可先阅读微软和Canonical提供的文档:
https://devblogs.microsoft.com/c ... w-available-in-wsl/
https://ubuntu.com/blog/ubuntu-wsl-enable-systemd
https://devblogs.microsoft.com/c ... re-is-now-available




如果需要使用微软官方支持的systmed,在目前(2022/9/30)来说你需要满足这些前置条件:




  • 操作系统为windows 11

  • wsl 版本为 0.67.6 或以上(目前均为预览版本)。





查看wsl版本号命令为: wsl --version,如果此命令未正常回显版本号,或版本号低于0.67.6,那么你安装的wsl还不支持systemd。




如果你是Windows Insiders用户,那么可以通过 https://aka.ms/wslstorepage 链接跳转到微软应用商店来安装最新版本的 wsl preview。






如果你未加入Windows Insiders计划,那么可以通过 https://github.com/microsoft/WSL/releases 下载最新的preview版本(0.68.2)来进行体验。




安装后,可以通过以下命令进行更新: wsl.exe --update --web-download。此命令是在0.67.6版本中新增的。




安装好新版wsl后,通过以下命令来配置wsl启用 systemd:




echo -e "[boot]\nsystemd=true" | sudo tee -a /etc/wsl.conf


配置后需要通过wsl --shutdown命令关闭wsl,来进行wsl的完整重启。




如何判断systemd是否启用成功#


判断wsl是否已启用systemd,可通过以下命令查看:




ps --no-headers -o comm 1


如果命令返回的是init说明systemd未启用,如果是systemd那么你的systemd已启用成功了。




查看已启用的systemd service#


通过systemctl的list-units、list-unit-files命令,都可以很好的查看目前的systemd状态,命令如下:




systemctl list-units --type=servicesystemctl list-unit-files --type=service --state=enabled


和genie的对比#


genie的使用通过genie -s进入运行着systemd的bottle环境,通过genie -u退出,此处需要手动处理或额外配置~/.bashrc。但通过wsl直接运行的shell命令默认又不是位于systemd的bottle之中,这为vscode使用带来了一些问题,需要额外处理: 1. code命令找不到 ,2. vscode server 未运行在bottle中




此外genie首次运行时,会需要等待240秒并显示出无法启动的service,用户需要手动禁用这些有问题的service,才能再下次运行时正常使用。试图通过配置缩短等待时间,发现只是徒劳。




总体而言genie的使用还是较为复杂的,使用前需要完整阅读wiki。相比之下官方支持的systemd的使用更为简单。通过简单配置后,是开箱即用,用户无感的。这一点genie无法媲美。




和distrod的对比#


和官方systemd一样,distrod systemd也是开箱即用的。




distrod通过修改你的默认shell,来实现运行触发。安装启用distrod时,它自动处理了需要不支持的service。这些都无需用户进行任何额外配置。




distrod基于ruby编写运行性能很好,运行也很稳定。它还支持基于lxc社区镜像安装多个发行版,且都经过了测试,如:centos / arch / fedora / debian / ubuntu 等等。




而官方支持的systemd还是有一点时优于distrod的,那就是启用了官方systemd的wsl2实例,在用户停止操作后,会自动关闭,和未启用systemd 时的特性一样,这有利于节约电脑的计算资源。




结束语#


首先希望这篇文章能够帮助到你体验到最新版本的wsl-systemd特性,如果有任何问题欢迎你留言。




此外还想讲两句题外话。在微软生态下开发开源项目其实是很被动的,因为你不知道什么时候会被官方降维打击。为genie和distrod而感到惋惜,之前的appget也是如此。



GoKuroko
发表于 2022-10-13 22:50:18 | 显示全部楼层
但是WSL和Windows系统之间的I/O读写缓慢的问题依旧长期存在
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-24 10:22 , Processed in 0.128683 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表