以前折腾了很久的 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. 5.1 从C到C++

    在前4章中介绍了C语言的主要内容,已经足以应付许多算法竞赛的题目了,然而能写不代表好写,有些虽然能够用C语言实现,但是使用C++写起来往往会更快,并且不容易出错 从c到c++ C语言是一门很有用的语言 ...

  2. impl和dyn用法

    先推荐一个链接 理解 Rust 2018 edition 的两个新关键字 -- impl 和 dyn 官方文档中,impl是限定泛型的语法糖,所以 trait Trait {} fn foo<T ...

  3. Dubbo源码(四) - 服务引用(消费者)

    前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 上一篇文章,讲了Dubbo的服务导出: Dubbo源码(三) - 服务导出(生产者) 本文,咱们 ...

  4. python面向对象的特征及反射

    目录 派生类实操 面向对象特征之封装 property伪装属性(python内置装饰器) 面向对象特征之多态 面向对象之反射 派生类实操 1.将时间字典序列化成json格式,由于序列化数据类型的要求, ...

  5. 【原创】Python 懂车帝口碑爬虫

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! 懂车帝综合口碑 需求 操作环境 win1 ...

  6. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  7. Docker Compose之容器编排开发初探

    1.前言 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 是一个用于定义和运行多个 Docker 应用 ...

  8. 自己做一个RTOS

    什么是操作系统?其实就是一个程序, 这个程序可以控制计算机的所有资源,对资源进行分配,包括CPU时间,内存,IO端口等,按一定规则分配给所需要的进程(进程?也就是一个程序,可以单独执行),并且自动控制 ...

  9. 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

    前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ...

  10. Java jdk常用工具集合

    jdk 常用工具包目录: windows: 默认安装目录:C:\Program Files\Java\jdk1.8.0_152\bin> 1.查看Java进程 jps -l 查看当前机器的Jav ...