Windows wsl2支持systemd

news2025/1/13 17:47:46

背景

很多Linux发行版都是使用systemd来管理程序进程,但是在WSL中默认是用init来管理进程的。

为了符合长久的使用习惯,且省去不必要的学习成本,就在WSL的发行版(我这里安装的是Ubuntu20.04)中支持systemd,也就可以使用systemctl命令来启停进程。

相关知识

能够支持使用systemctl命令,提供完整 systemd 的项目有很多:

  • diddledani/one-script-wsl2-systemd: The one-script variant of the systemd hack for WSL2 (github.com)
  • ubuntu-wsl2-systemd-script
  • wsl2-hacks
  • genie
  • subsystemd
  • Angea

这些项目的核心原理并无大异,无非是细节处理的好坏和附加功能的多少,但最重要的一点可能是工作层次不同。

前三个脚本都工作在图中的** shell **层,要依赖外置命令执行系统调用。

genie 工作在应用程序层,它使用 C# 编写,通过 shell 执行系统调用,比前三个还多了一层。

最后两个虽然也是应用程序,但它们由 Rust 编写,不经 shell,而直接由 C system call wrapper 执行系统调用,依赖最少,动态链接编译后只有几百 K。

systemd

在较新的Linux系统上,都使用systemd 管理进程,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。

systemd为系统启动和管理提供了完整的解决方案。它提供了一组命令。字母d是守护进程(daemon)的缩写。

init

WSL2 的发行版均拥有微软提供的 init,它是一种 systemd 的替代方案,不支持 systemctl 命令,

WSL2 本身是由 Windows 负责运行的,因此使用 tree 或 ps 命令时会看到根进程不是 systemd,这将导致无法启动 Linux 系统服务的守护进程 (deamon)。

当我们执行 systemctl 命令的时候,会显示出我们的 init system (PID 1) 并非 systemd,而是微软提供的 init。

systemctl
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

安装

首先,需要确认使用的是WSL2版本,可以在PowerShell中执行如下命令查看:

wsl -l -v

如果显示为1,可以使用如下命令进行配置,其中<Version>修改成2即可:

wsl --set-default-version <Version>

还可以使用如下方式设置默认的Linux发行版,其中<distro name>替换为要配置的Linux发行版名称。

例如,wsl --set-version Ubuntu-20.04 会将Ubuntu20.04发行版设置为使用WSL2:

wsl --set-version <distro name> 

在网上找到很多种支持的方法,最简单的就是微软官方提供的方法,仅需要添加一个配置文件即可。

  1. 打开PowerShell命令行,更新WSL。

    wsl --update
    
  2. 打开Ubuntu 22.04,在 /etc/目录新建wsl.conf文件,添加如下内容:

    [boot]
    systemd=true
    
  3. 关闭Ubuntu窗口。

  4. 打开PowerShell命令行,重启WSL。

    wsl --shutdown
    
    
  5. 重新在Windows Terminal中打开Ubuntu发行版,输入如下命令检查是否成功:

    systemctl
    

    出现上述的结果则代表支持systemd成功。


  • 参考

    Systemd support is now available in WSL!

  • 环境

    Windows 10 专业版 22H2

    Ubuntu 22.04.2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/917109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日汇评:英镑的韧性掩盖了更广泛的疲态,英镑相关货币分析

1、尽管英国CPI数据强劲&#xff0c;但英镑/美元未能延续涨势&#xff1b; 2、欧元/英镑向下突破的时机可能已经成熟&#xff0c;英镑/日元的反弹目前正在失去动力&#xff1b; 3、英镑交叉盘的关键水平至关重要&#xff1b; 上周英国公布强劲通胀数据后&#xff0c;英镑未能…

Microsoft Message Queuing Remote Code Execution Vulnerability

近期官方公布了一个MSMQ的远程代码执行漏洞&#xff0c;可能因为网络安全设备的更新&#xff0c;影响业务&#xff0c;值得大家关注。 Microsoft Message Queuing 概述 MicroSoft Message Queuing&#xff08;微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输…

根据学生学习水平量身定制指导以促进知识蒸馏的效果

文章目录 Tailoring Instructions to Student’s Learning Levels Boosts Knowledge Distillation一、PPT内容P1 BackgroundP2 L2T--online distillationP3 L2T--Meta distillationP4 Approach--LGTMP5 Distillation influenceP6 Finite difference approximationP7 Teachers a…

VMware 17 Player下CentOS的安装与配置

本文详细记录VMware 17 Player的安装&#xff0c;以及其中Centos虚拟机的安装&#xff1b;内容包含下载、安装全过程&#xff1b;另外包含一些基本的应用测试阐述。 安装VMware VMware下载 点击即可下载&#xff1a;https://www.vmware.com/go/getplayer-win 官网里面找版本&…

对于pycharm 运行的时候不在cmd中运行,而是在python控制台运行的情况,如何处理?

对于pycharm 运行的时候不在cmd中运行&#xff0c;而是在python控制台运行的情况&#xff0c;如何处理&#xff1f; 比如&#xff0c;你在运行你的代码的时候 它总在python控制台运行&#xff0c;十分难受 解决方法 在pycharm中设置下即可&#xff0c;很简单 选择运行点击…

介绍Server-Sent Events,以及使用,超级简单!

一、SSE 的本质 严格地说&#xff0c;HTTP 协议无法做到服务器主动推送信息。但是&#xff0c;有一种变通方法&#xff0c;就是服务器向客户端声明&#xff0c;接下来要发送的是流信息&#xff08;streaming&#xff09;。 也就是说&#xff0c;发送的不是一次性的数据包&…

文心一言 VS 讯飞星火 VS chatgpt (80)-- 算法导论7.4 5题

五、如果用go语言&#xff0c;当输入数据已经“几乎有序”时&#xff0c;插入排序速度很快。在实际应用中&#xff0c;我们可以利用这一特点来提高快速排序的速度。当对一个长度小于 k 的子数组调用快速排序时&#xff0c;让它不做任何排序就返回。当上层的快速排序调用返回后&…

_0x4c9738 怎么还原?嘿,还真可以还原!

_0x4c9738 变量名还原&#xff0c;噂嘟假嘟&#xff1f; 代码混淆&#xff08;obfuscation&#xff09;和代码反混淆&#xff08;deobfuscation&#xff09;在爬虫、逆向当中可以说是非常常见的情况了&#xff0c;初学者经常问一个问题&#xff0c;类似 _0x4c9738 的变量名怎么…

免安装版本python安装pip模块

免安装版本python安装pip模块.md 免安装python 下载便携式 Python 版本 前往 Python 官方网站的下载页面&#xff0c;在“Looking for a specific release?”下拉菜单中选择一个合适的便携式版本&#xff08;例如&#xff0c;Python 3.8.12 64-bit 精简版本&#xff09;&am…

微鳄0A系统在电子加工业的应用

1.微鳄OA系统功能介绍 OA办公系统是可以通过特定流程或特定环节与日常事务联系在一起&#xff0c;使公文在流转、审批、发布等方面提高效率&#xff0c;实现办公管理规范化和信息规范化&#xff0c;降低企业运行成本。 微鳄365 OA办公系统含公文管理、考勤管理、考勤查询、报销…

C++--内存管理和模板

前言&#xff1a;在C中&#xff0c;内存管理是一项关键的任务&#xff0c;因为程序需要为变量、对象和数据结构等动态分配内存。有效的内存管理是确保程序在运行期间高效使用系统资源的重要一环。此外&#xff0c;C还引入了模板的概念&#xff0c;以提供一种通用的编程方式。模…

C++模板与泛型编程:条款41~48

"绝境之中才窥见 winner winner 无限的精彩" 条款41: 了解隐式接口和编译器多态 我们给出一组类定义和函数实现(无意义): class Widget { public:Widget();virtual ~Widget();virtual size_t size() const;virtual void normalize();void swap(Widget&…

19项第一之上,是63%的极致带宽降低

近日&#xff0c;2022 MSU世界视频编码器大赛成绩正式揭晓。报告显示&#xff0c;阿里媒体处理服务MPS&#xff08;Alibaba Media Processing Service&#xff09;s264及s265编码器共计斩获19项评测第一&#xff0c;相较大赛指定基准编码器&#xff08;AWS Elemental MediaConv…

【Java8特性】——函数式接口方法引用

一、函数式&#xff08;Functional&#xff09;接口 1. 概述 如果一个接口中&#xff0c;只声明了一个抽象方法&#xff0c; 则这个接口就称为函数式接口。 注解&#xff1a;FunctionalInterface 显式指明改接口是一个函数式接口。可以检验是否是一个函数式接口&#xff0c;同…

利用 Databend 助力 CDH 分析 | 大参林

作者&#xff1a; 黄志武 大参林医药集团股份有限公司&#xff0c;信息中心数据库组组长&#xff0c;13年数据库行业从业经历&#xff0c;Oracle OCM&#xff0c;关注Oracle、MySQL、Redis、MongoDB、Oceanbase、Tidb、Polardb-X、TDSQL、CDH、Clickhouse、Doris、Databend等多…

【ES6】—【必备知识】—对象的扩展

一、属性简洁表示法 ES5 写法 let name xiao let age 30 let obj {name: name,age: age } console.log(obj) // {name: xiao, age: 30}ES6 简洁写法 对象的属性名 和 属性值的变量名相同&#xff0c;可以简写成 一个属性名 let name xiao let age 30 let obj {name,age …

如果你还不知道电商(淘宝京东1688)API,就看这里!

随着电商的蓬勃发展&#xff0c;现在已经进入了全民电商的时代&#xff1b;从国内电商到跨境电商&#xff0c;可以说是百家争艳&#xff0c;同时&#xff0c;电商运营也变得更精细化&#xff0c;各种运营工具也相继涌现&#xff0c;为店铺业绩做保障&#xff0c;电商API就是这样…

【回眸】牛客网刷刷刷!(七)——通信协议之 网络通讯

目录 前言 1、TCP/IP分层模型 2、ARP缓存 3、TCP 协议之所以提供可靠传输&#xff0c;不怕丢包、乱序的主要的原因是 4、以太网数据链路层MII/GMII/RMII/RGMII四种常用接口 5、在以太网通信协议LWIP中&#xff0c;数据包管理机构采用数据结构pbuf 分类包括 6、关于以太网…

关于css 的选择器和 css变量

css 选择器 常用的选择器 1. 后代选择器&#xff1a;也就是我们常见的空格选择器&#xff0c;选择的对象为该元素下的所有子元素 。例如&#xff0c;选择所有 元素下的 元素 div p{font-size:14px}2. 子元素选择器 ‘>’ 选择某元素下的直接子元素。例如&#xff0c;选择所…

龙蜥白皮书精选:云原生混部资源隔离技术

文/云原生 SIG 01 技术方案简介 混部就是将不同类型的业务在同一台机器上混合部署起来&#xff0c;让它们共享机器上的 CPU、内存、IO 等资源&#xff0c;目的就是最大限度地提高资源利用率&#xff0c;从而降低采购和运营等成本。 混部通常是将不同优先级的任务混合在一起&a…