当前位置: 首页 > news >正文

Windows wsl2支持systemd

背景

很多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

相关文章:

Windows wsl2支持systemd

背景 很多Linux发行版都是使用systemd来管理程序进程&#xff0c;但是在WSL中默认是用init来管理进程的。 为了符合长久的使用习惯&#xff0c;且省去不必要的学习成本&#xff0c;就在WSL的发行版&#xff08;我这里安装的是Ubuntu20.04&#xff09;中支持systemd&#xff0…...

NLP - 如何解决ModuleNotFoundError: No module named ‘jieba‘的问题

错误描述 在JUPYTER中&#xff0c;使用结巴分词&#xff0c;出错&#xff1a; ModuleNotFoundError: No module named jieba解决方案 在 Anaconda Prompt 中&#xff0c;执行以下指令&#xff08;可以解决&#xff09;&#xff1a; pip install jieba -i https://pypi.tuna…...

Windows10上VS2022单步调试FFmpeg 4.2源码

之前在 https://blog.csdn.net/fengbingchun/article/details/103735560 介绍过通过VS2017单步调试FFmpeg源码的方法&#xff0c;这里在Windows10上通过VS2022单步调试FFmpeg 4.2的方法&#xff1a;基于GitHub上ShiftMediaProject/FFmpeg项目&#xff0c;下面对编译过程进行说明…...

【tkinter 专栏】菜单组件

文章目录 前言本章内容导图1. Menu 菜单组件Menu 组件的基本使用制作二级下拉菜单为菜单添加快捷键2. Treeview 树形菜单组件Treeview 组件的基本使用菜单项的获取与编辑前言 本专栏将参考《Python GUI 设计 tkinter 从入门到实践》书籍(吉林大学出版社 ISBN: 9787569275001)…...

【LeetCode-经典面试150题-day10】

目录 242.有效的字母异位词 49.字母异位词分组 202.快乐数 219.存在重复元素Ⅱ 383.赎金信 205.同构字符串 290.单词规律 242.有效的字母异位词 题意&#xff1a; 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和…...

Transformer在医学影像中的应用综述-分类

文章目录 COVID-19 Diagnosis黑盒模型可解释的模型 肿瘤分类黑盒模型可解释模型 视网膜疾病分类小结 总体结构 COVID-19 Diagnosis 黑盒模型 Point-of-Care Transformer(POCFormer)&#xff1a;利用Linformer将自注意的空间和时间复杂度从二次型降低到线性型。POCFormer有200…...

新服务器基本环境下载conda + docker + docker-compose + git

文章目录 Ubuntu 允许root用户登录 centos无所谓condadockerubuntucentos docker-compose官方下载docker-compose国内镜像 gitUbuntuCentos Ubuntu 允许root用户登录 centos无所谓 # 以普通用户登录系统&#xff0c;创建root用户的密码 sudo passwd root# SSH 放行 sudo sed -…...

Matlab论文插图绘制模板第108期—特征渲染的标签散点图

在之前的文章中&#xff0c;分享了Matlab标签散点图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下特征渲染的标签散点图的绘制模板&#xff0c;以便再添加一个维度的信息。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中…...

设计模式之中介者模式(Mediator)的C++实现

1、中介者模式的提出 在软件组件开发过程中&#xff0c;如果存在多个对象&#xff0c;且这些对象之间存在的相互交互的情况不是一一对应的情况&#xff0c;这种功能组件间的对象引用关系比较复杂&#xff0c;耦合度较高。如果有一些新的需求变化&#xff0c;则不易扩展。中介者…...

css弹性布局的方式

概述 任何一个容器都可以定义为弹性布局容器&#xff0c;使用display:flex(display:inline-flex)开启弹性布局。 2个方向轴&#xff1a;水平主轴和垂直交叉轴 6个容器属性 1.flex-direction &#xff1a;主轴的方向 2.justify-content&#xff1a;子元素在主轴的对齐方式 …...

阿里云源 Python、npm、git、goproxy

阿里云源 Python、npm、git、goproxy 各种设置源的方式也都比较常见&#xff0c;但是根本记不住&#xff0c;每次都查感觉也不太好。 正好发现了个宝藏地址&#xff0c;看起来还挺全的&#xff0c;以后找源也可以先在这个地方翻翻&#xff0c;顺便就搞了几个放到一个脚本里边…...

微服务架构1.0

微服务架构 微服务架构是一种应用程序架构模式&#xff0c;将一个应用程序划分为一组小型、独立、自治的服务&#xff0c;每个服务专注于一个特定的业务功能。 每个微服务都可以独立开发、部署、扩展和维护&#xff0c;通过定义良好的接口和协议&#xff0c;它们可以相互通信…...

iOS开发Swift-基础部分

1.常量 let maxNum 10 //单个常量赋值 let maxNum 10&#xff0c; minNum 2 //多个常量赋值用逗号隔开2.变量 var x 0.0 //单个变量赋值 var x 0.0&#xff0c; y 0.1 //多个变量赋值用逗号隔开3.类型注解 系统可通过赋初始值进行自动推断。 var name&#…...

【LeetCode-经典面试150题-day11】

目录 128.最长连续序列 228.汇总区间 56.合并区间 57.插入区间 452.用最少数量的箭引爆气球 128.最长连续序列 题意&#xff1a; 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并…...

深度学习入门(三):卷积神经网络(CNN)

引入 给定一张图片&#xff0c;计算机需要模型判断图里的东西是什么&#xff1f; &#xff08;car、truck、airplane、ship、horse&#xff09; 一、卷积神经网络整体架构 CONV&#xff1a;卷积计算层&#xff0c;线性乘积求和RELU&#xff1a;激励层&#xff0c;激活函数P…...

网站是如何识别网络爬虫的?

在爬取数据时&#xff0c;你常常会遇到各种网站的反爬机制。网站是如何检测和拦截网络爬虫的呢&#xff1f;本文将为你揭秘网站使用的几种常见的反爬手段&#xff0c;并为你提供一些解决方案&#xff0c;助你越过反爬壁垒&#xff0c;提升你的实际操作效率。 一、Cookie检测 …...

TP-Link 智能灯泡缺陷能让黑客窃取用户 WiFi 密码

来自意大利和英国的研究人员在 TP-Link Tapo L530E 智能灯泡和 TP-Link Tapo 应用程序中发现了4个漏洞&#xff0c;攻击者可以利用这些漏洞窃取目标的 WiFi 密码。 TP-Link Tapo L530E 是包括亚马逊在内的多个市场上最畅销的智能灯泡。TP-link Tapo是一款智能设备管理应用程序…...

接口测试,如何测试?

一 入参 1 正常的入参 输入正常的参数&#xff0c;响应按照接口文档的约定正常返回。 2 异常的入参 参数异常包括&#xff1a;参数为空&#xff0c;多参或少参&#xff0c;错误的参数数据&#xff1b; 错误的参数数据&#xff1a;数据类型错误、非空参数为空&#xff0c;长…...

React源码解析18(11)------ 实现多次setState的批处理

摘要 在React中&#xff0c;如果涉及到了多次setState&#xff0c;组件render几次。setState是同步的还是异步的。这是一个很常见的面试题。 而本篇文章&#xff0c;就是主要实现React中&#xff0c;对于这部分的性能优化&#xff0c;我们称之为批处理。例如当我有下面的JSX。…...

评测凯迪仕K70「千里眼」智能锁:不忘安全初心,便捷体验更上一层

能打败凯迪仕的&#xff0c;只有它自己。这是我们在体验过凯迪仕最新旗舰产品K70「千里眼」智能锁之后的感受。作为凯迪仕2023年最新旗舰机型&#xff0c;K70「千里眼」智能锁在配置上可以说是「机皇」般的存在。3K超高清智能锁猫眼、车规级24GHz雷达、大小双屏设计、三方可视对…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...