首页 > 系统相关 >Windows wsl2支持systemd

Windows wsl2支持systemd

时间:2023-02-25 16:36:12浏览次数:82  
标签:systemd Windows wsl init systemctl 发行版 进程 wsl2

背景

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

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

相关知识

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

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

前三个脚本都工作在图中的** 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,可以使用如下命令进行配置,其中修改成2即可:

wsl --set-default-version <Version>

还可以使用如下方式设置默认的Linux发行版,其中替换为要配置的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 20.04

标签:systemd,Windows,wsl,init,systemctl,发行版,进程,wsl2
From: https://www.cnblogs.com/codesail/p/17154699.html

相关文章

  • windows-win+快捷键用不了
    win10按win+e、win+r、win+d等win键无反应原因:win键盘被锁解决方式fn+win解锁win键即可(如果按过无反应,连按两次三次尝试即可)依旧无反应尝试fn+F2、fn+F6、fn+键盘......
  • Windows黑客编程之进程伪装
    描述通过NtQueryInformation函数获取进程信息,并修改peb参数,可以欺骗ProcMon等查看进程信息的工具,将其伪装成一个看起来无害的进程代码实现NtQueryInformationProces......
  • java——spring boot集成RabbitMQ——windows本地安装和运行
    思维导图  一、什么是消息队列消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。 “消息队列(MessageQueue)......
  • 【windows】测试获取进程资源占用的API的性能消耗
    背景一次性获取所有进程信息的API:NtQuerySystemInformation分别获取进程的cpu、mem、io的API:GetProcessTimes、GetProcessMemoryInfo、GetProcessIoCounters如果关注......
  • Windows黑客编程之Bypass UAC
    描述用管理员权限运行CompMgmtLauncher.exe,由于它是白名单程序,不会被UAC拦截,可以直接以管理员权限运行CompMgmtLauncher的功能是去遍历指定注册表路径下的程序,并启动只......
  • Windows常见问题处理
    默认启动系统选择运行输入msconfig将不用的引导删除重启进入bios/U盘win+X呼出快捷操作面板。按住shift不放,点击关机或注销,再点击重启a.使用设备->选择U盘......
  • Windows黑客编程之提升进程令牌权限
    描述利用AdjustTokenPrivileges提升进程的令牌访问权限代码外层调用#include"stdafx.h"#include"AdjustToken.h"int_tmain(intargc,_TCHAR*argv[]){ if(......
  • 信息安全之windows服务器的基线安全(等保要求)
    windows服务器的基线安全(等保要求参考)下图是需要做基线配置的选项备注:具体都已经贴出来了,按照这个参考可以达标合格,有部分需要人工现场核实确认,这个要根据具体环境进行操......
  • Windows下QT生成的程序默认以管理员身份运行
    只需要在工程文件.pro中添加下面这行:QMAKE_LFLAGS+=/MANIFESTUAC:\"level=\'requireAdministrator\'uiAccess=\'false\'\" 生成的exe就会带上盾牌标志,双击就以管......
  • 信息安全之基线管理与安全配置—Windows安全配置
    一、Windows安全配置简介二、账户配置根据需求可以进行相关配置(里面有说明)1、密码策略  密码最短期限:意思就是密码更改后,多少天内能再次更换密码2、用户权......