如何解决win10 子系统用wsl安装ubuntu22.04不能用systemctl?

本文介绍了如何在Windows子系统Linux(WSL)中解决Ubuntu22.04不能使用systemctl的问题。通过安装Distrod,可以在WSL2环境下启用systemd,支持自动启动和端口转发。同时提供了安装新发行版和使现有发行版运行systemd的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你可以邀请下面用户,快速获得回答

委托刘看山邀请

开启后为你智能邀请潜在的回答者
开启邀请
[object Object]

TA 已帮助 34 人获得解答
邀请回答
[object Object]

TA 已帮助 52 人获得解答
邀请回答
[object Object]

TA 已帮助 48 人获得解答
邀请回答
[object Object]

TA 已帮助 28 人获得解答
邀请回答
更多推荐结果
3 个回答
默认排序
31 人赞同了该回答
目录
收起
Distrod
安装方法一:Install a New Distro
安装方法二:Make your Current Distro Run Systemd

2022/9/26更新:

微软的 WSL 现已支持 systemd。


WSL 中使用 systemctl 命令会报错,报错信息如下。

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

WSL 并没有通过 systemd 启动,所以无法执行该操作。但是系统中是有 systemd 命令的,命令位置在 /usr/bin/systemctl。

详情可以查看GitHub:

Systemd support for Windows Subsystem for Linux (WSL) · Issue #8036 · systemd/systemd (github.com)


如果是WSL1的话,可以升级WSL2,按以下方法启用systemd。

要使用systemctl命令 ,要先启用systemd,即system daemon

这里选择安装Distrod来启用systemd。


Distrod

Distrod - WSL2 Distros with Systemd!

GitHub地址:nullpo-head/wsl-distrod: Distrod is a meta-distro for WSL 2 which installs Ubuntu, Arch, Debian, Gentoo, etc. with systemd in a minute for you. Distrod also has built-in auto-start feature on Windows startup and port forwarding ability. (github.com)

Distrod是一个基于systemd的WSL2元发行版,它允许您在一分钟内安装Ubuntu,Arch Linux,Gentoo和许多其他带有systemd的发行版,或者使您当前的发行版以systemd运行。

Distrod还提供内置的自动启动功能和端口转发 服务。这允许您在 Windows 启动时启动 systemd 托管服务,并使其可从 Windows 外部访问。

  • 适用的发行版:以下发行版经过持续测试
  • Ubuntu, Debian, Arch Linux, Fedora, CentOS, AlmaLinux, Rocky Linux, Kali Linux, Linux Mint, openSUSE, Amazon Linux, Oracle Linux, Gentoo Linux

(参见Integration test on Linux (distro_name))

  • 其他发行版可能有效,也可能不起作用

安装方法一:Install a New Distro

安装新的发行版。

  1. 请确保您的默认 WSL 版本为 2。
wsl --set-default-version 2
  1. 下载并解压缩 github.com/nullpo-head/,然后双击exe文件
  2. 按照向导安装新的发行版。
  3. [可选]若要使发行版在 Windows 启动时启动,请运行以下命令。
sudo /opt/distrod/bin/distrod enable --start-on-windows-boot

安装方法二:Make your Current Distro Run Systemd

让您当前的发行版运行Systemd。

通过此安装,systemd 已在 WSL 2 发行版中启用。

1. 下载并运行最新的安装程序 脚本。

2.  curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"
3.  chmod +x install.sh
sudo ./install.sh install

此脚本安装发行版,但尚未启用它。

2. 在发行版中启用Distrod

您有两种选择。如果要在 Windows 启动时自动启动Distrod,请通过以下命令启用 Distrod

/opt/distrod/bin/distrod enable --start-on-windows-boot

否则

/opt/distrod/bin/distrod enable

如果要在以后启用自动启动,则可以再次运行 with 。enable--start-on-windows-boot

3. 重新启动发行版

关闭 WSL 的终端。打开一个新的命令提示符 窗口,然后运行以下命令。

wsl --terminate Distrod

重新打开新的WSL窗口后,shell将在systemd会话中运行。


安装完毕后,可以运行以下命令进行查询

systemctl status | cat

如果帮助到了你,不妨点个赞或者点个关注。

真诚赞赏,手留余香
赞赏
还没有人赞赏,快来当第一个赞赏的人吧!
赞同 31​ 7 条评论
分享
收藏 ​ 喜欢
收起
13 人赞同了该回答

WSL 中暂时不支持 systemctl,所以使用下面的命令会报错。

sudo systemctl

报错信息为

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

即系统没有通过 systemd 启动,所以不能操作。

WSL 的官方文档上也提到了这一点。

目前 WSL 不支持 systemd(Linux 中的 服务管理系统 )。

但是有折中的方法。

可以把 systemctl 命令换成 /etc/init.d/

例如

sudo systemctl status docker

换成下面这样

sudo /etc/init.d/docker status

也可以使用 service 命令

sudo service docker status

赞同 13​ 添加评论
分享
收藏 ​ 喜欢
收起
6 人赞同了该回答

WSL里的init用的是微软魔改的一个init,要用systemd早些年有些方案,但都不是非常稳定不太推荐,如果真想了解可以看下 genie ,在WSL用户空间额外运行一个systemd 的方案,最早有替换 init 为systemd的脚本但现在不要再用了。

如果只是要启动服务, service 命令调用 init 脚本的方式是可用的,若需要systemd特性依赖的话老实上虚拟机 或者docker里嵌套环境。

如果要使用Docker的话,安装 Docker Desktop 启用 WSL 发行版集成 就能在 WSL 内调用 Docker 了。

赞同 6​ 添加评论
分享
收藏 ​ 喜欢
收起
写回答







如何解决win10 子系统用wsl安装ubuntu22.04不能用systemctl?

<think>好的,我需要帮助用户在WSL安装Ubuntu22.04。首先,我要回忆一下用户之前提到的引用内容,但看起来那些主要是关于CUDA、cuDNN和Ollama的安装步骤,可能和当前的问题关联不大。不过,用户现在需要的是WSL安装教程,所以应该专注于这个主题。首先,用户可能使用的是Windows系统,因此需要确认系统版本是否支持WSL。通常,Windows10版本2004及以上或Windows11都支持。接下来,安装步骤可能包括启用WSL功能、安装Ubuntu22.04发行版,以及可能的初始配置。 我需要确保步骤清晰,分步说明。例如,第一步是启用WSL,可以通过PowerShell命令启用。然后,安装Ubuntu22.04可能通过MicrosoftStore或命令行。还要提醒用户设置用户名和密码,以及更新系统。此外,可能还需要提到安装WSL2和Linux内核更新包,以确保更好的性能。需要检查是否有常见的错误,比如虚拟化未启用,或者Windows功能无法安装的情况。这时可能需要指导用户进入BIOS设置启用虚拟化技术,或者通过其他方式解决问题。另外,用户可能在安装后需要一些基本的配置,比如换源以加快软件下载速度,或者安装必要的工具如curl、wget等。这些可以作为后续步骤提供,但可能超出基本安装指南的范围,不过可以作为相关问题提出。 最后,生成相关问题时,要考虑用户可能的后续需求,比如配置开发环境、安装GPU支持(但WSL可能有限制),或者与其他工具集成等。要确保问题覆盖用户可能感兴趣的方面,帮助他们进一步使用Ubuntu onWSL。</think>### 在WSL安装Ubuntu 22.04的步骤指南 #### 1. **启用WSL功能** - 以管理员身份打开**PowerShell**,运行以下命令: ```powershell wsl --install ``` 此命令会自动启用虚拟机平台和Linux子系统功能,并安装默认的Ubuntu发行版[^1]。 *若提示功能未启用,可手动执行:* ```powershell dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ``` - **重启计算机**。 #### 2. **设置WSL 2为默认版本** - 安装WSL 2内核更新包(下载地址:[微软官方文档](https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package))[^1]。 - 在PowerShell中设置默认版本: ```powershell wsl --set-default-version 2 ``` #### 3. **安装Ubuntu 22.04** - 打开**Microsoft Store**,搜索“Ubuntu 22.04 LTS”并安装。 - 或通过命令行安装: ```powershell wsl --install -d Ubuntu-22.04 ``` #### 4. **初始化Ubuntu系统** - 安装完成后,首次启动会提示设置用户名和密码(无需与Windows账户关联)。 - 更新软件包列表: ```bash sudo apt update && sudo apt upgrade -y ``` #### 5. **配置WSLWindows的交互** - 访问Windows文件系统:路径为`/mnt/c/`(对应C盘)。 - 优化性能:建议在`/etc/wsl.conf`中添加配置: ```ini [automount] options = "metadata" ``` --- ### 常见问题解决 - **虚拟化未启用**:进入BIOS设置启用Intel VT-x或AMD-V。 - **安装后无法启动**:尝试重置WSL: ```powershell wsl --shutdown wsl -d Ubuntu-22.04 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坦笑&&life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值