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

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

和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的对比

distrod直接修改了你的默认shell,运行时也是开箱即用。distrod基于ruby编写运行性能很好,运行也很稳定。

它还支持基于lxc社区镜像安装多个发行版,且都经过了测试,如:centos / alma / arch / fedora / debian / ubuntu 等等。

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

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

启用最新的wsl systemd特性前,可先阅读微软和Canonical提供的文档:

https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/

https://ubuntu.com/blog/ubuntu-wsl-enable-systemd

https://devblogs.microsoft.com/commandline/a-preview-of-wsl-in-the-microsoft-store-is-now-available

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

  1. 操作系统为windows 11
  2. wsl 版本为 0.67.6 或以上。

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

截至2022/9/30,wsl 0.67.6及以上版本还是预览版本,

如果你是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=service
systemctl list-unit-files --type=service --state=enabled

结束语

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

此外还想插两句题外话:

在微软生态下开发开源项目其实是很被动的,因为你不知道什么时候会被官方降维打击。 为genie和distrod而感到惋惜,最后的最后,RIP appget - https://github.com/appget/appget

WSL 2 上启用微软官方支持的 systemd的更多相关文章

  1. 工具系列 | 如何在阿里云负载均衡上启用WS/WSS支持

    官方文档:https://help.aliyun.com/document_detail/63421.html?spm=5176.10695662.1996646101.searchclickresu ...

  2. CoreWCF 1.0.0 发布,微软正式支持WCF

    2022年4月28日,我们达到了一个重要的里程碑,并发布了CoreWCF的1.0.0版本.对Matt Connew (微软WCF团队成员)来说,这是5年前即 2017年1月开始的漫长旅程的结束.Mat ...

  3. 微软官方网站线上兼容测试平台-Browser screenshots

    前端开发时最不想做的就是在不同浏览器.平台和分辨率测试网页显示效果,通常这会浮现许多问题,尤其浏览器版本就可能让显示成效完全不同,也只好尽力维持让每一种设备都能正常浏览网页.修改到完全没有问题必须投入 ...

  4. 一大波开发者福利来了,一份微软官方Github上发布的开源项目清单等你签收

    目录 微软Github开源项目入口 微软开源项目受欢迎程度排名 Visual Studio Code TypeScript RxJS .NET Core 基础类库 CNTK Microsoft cal ...

  5. 微软智能云Azure – 中国首家官方支持CoreOS的公有云

    北京2016年6月24日, 在由中国开源软件推进联盟(COPU)主办, 开源社协办,微软赞助的“第十一届开源中国开源世界高峰论坛”上,微软亚太研发集团云计算高级总监梁戈碧女士正式对外宣布一个令人振奋的 ...

  6. ubuntu14.04上Virtualbox安装win7(使用Ghost镜像安装,启用USB设备支持,设置共享目录)

    由于某些软件只有windows版本,于是只好安装个虚拟机win7 /**************************安装*************************************/ ...

  7. 【转】在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持--不错

    原文网址:http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.html 虚拟机我一直在用,不是说离不开Windows,而是有些时候一些应 ...

  8. 在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持

    在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持  http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.htm ...

  9. 如何在 Ubuntu 和 CentOS 上启用 Nginx 的 HTTP/2 协议支持

    HTTP/2 是 HTTP 网络协议的主要修订版本,其专注于 HTTP 协议的性能改进.HTTP/2 协议的目标是减少延迟,并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求,因此 W ...

随机推荐

  1. for_in循环

    for-in循环也可以简单称为for循环 in表达从(字符串,序列等)中依次取值,又称为遍历(全部都要取到) for-in遍历的对象必须是可迭代对象 目前可以简单认为只有字符串和序列是可迭代对象 它是 ...

  2. 计算机二级Python(第一阶段)

    介绍   本篇文章主要针对于计算机二级考试的崽崽,当然想了解Python和学习Python的崽崽也是可以看本篇文章的:毕竟,手机和电脑都可以运行Python:本篇我文章虽然是笔记,但是也纯靠手打,希望 ...

  3. javascript相邻节点元素获取

    <script> window.onload = function () { var myLinkItem = document.getElementById('linkItem'); v ...

  4. [spring]spring详细总结

    spring 1.spring简介 Spring框架是一个开源的应用程序框架,是针对bean的生命周期进行管理的轻量级容器. Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强 ...

  5. Visual Studio Code 中文设置教程

    本文仅供学习交流使用,如侵立删!demo下载见文末 Pycharm中文设置教程 1.首先打开VisualStudioCode,点击扩展:extensions. 2.搜索chinese. 3.选择需要的 ...

  6. 一文带你了解webrtc基本原理(动手实现1v1视频通话)

    webrtc (Web Real-Time Communications) 是一个实时通讯技术,也是实时音视频技术的标准和框架. 大白话讲,webrtc是一个集大成的实时音视频技术集,包含了各种客户端 ...

  7. Spring源码 05 IOC 注解方式

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

  8. linux设置系统环境变量的天坑

    在设置系统环境变量,也就是 .bash_profile 或者 /etc/proflie 或者 .bashrc 中把path写错或者是把设置系统环境变量的格式写错! 会 导致 系统无法进入.登录无限循环 ...

  9. Nodemon 如何实时监听 TypeScript 项目下的文件并热部署?

    首先你的项目要安装ts-node和nodemon: npm i -D ts-node nodemon 在package.json文件中配置运行脚本: "dev": "no ...

  10. java中使用 POI导出excel表格的简单实现

    大概流程分7步: 1.创建工作簿 --> 2.创建sheet表 --> 3.创建row行(建议使用循环) --> 4.用row行逐一创建单元格(建议使用循环) --> 5.单元 ...