Windows11 WSL中Llinux报错:システムは初期化システム(PID 1)としてsystemdを使用して起動されていません。操作できない

1. はじめに

Windows 11 に Ubuntu をインストールし、docker を実行してエラーを報告します。インストール手順は次のとおりです。

Windows11 Microsoft Store は ubuntu サブシステムをインストールします
Linux Ubuntu は Docker をインストールします

Windows で WSL とともに Ubuntu を使用する場合、systemctl コマンドを使用するとエラーが発生します。

hh@LAPTOP-O6A604DC:~$ systemctl start docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

ここに画像の説明を挿入します

2.問題分析

この Ubuntu システムでは systemd が使用されておらず、システムの初期化に SysV init (sysvinit) が使用されている可能性があります。
次のコマンドで表示できます:

 ps -p 1

ここに画像の説明を挿入します
ここに画像の説明を挿入します

その場合、CMD 列に init と表示され、SysV init 初期化システムが使用されていることを示します。

SysV init: システムが初期化システムとして SysVinit を使用している場合は、service コマンドを使用してサービスのステータスを管理および確認できます。たとえば、Docker サービスのステータスを確認するには、次を実行できます。

sudo service docker status

Systemd とは何ですか?
Systemd は、Linux システムの基本的な構成要素のセットです。これは、PID 1 として実行され、システムの残りの部分を起動するシステムおよびサービス マネージャーを提供します。
systemctl は、systemd のツールとして、Linux マシン上のサービスとの対話を提供します

3.問題解決

3.1. オプション 1:

それでも systemd を使用したい場合は、WSL で systemd を有効にしてください
前提条件: Microsoft Store からバージョン番号 0.67.6 以降の WSL を実行していることを確認してください< a i=2> WSL を最新バージョンに更新します

wsl --update

バージョンを表示

wsl --version

ここに画像の説明を挿入します

WSL 2 をデフォルト バージョンとして設定します WSL1 の場合、デフォルトで wls.conf ファイルもありますが、systemtcl コマンドはサポートされていないため、WLS に設定する必要があります

wsl --set-default-version 2

コマンドを実行してバージョンを表示する

wsl -l -v

ここに画像の説明を挿入します
Ubuntu インスタンスで、/etc/wsl.conf ファイルを開くか追加し (これはすでにここにインストールされていますが、インストールされていない場合は手動で追加します)、内容を次のように編集します。

[boot]
systemd=true

ここに画像の説明を挿入します
ここに画像の説明を挿入します

次に、wsl --shutdown コマンドを使用して、実行中の Linux ディストリビューションをシャットダウンします。
Ubuntu を再実行します。
初期化情報を再度確認すると、systemd が使用されていることがわかります。

クエリ systemctl バージョンを実行します。完璧で使用できます。
ここに画像の説明を挿入します
正常に開始され、クエリは正常です。
ここに画像の説明を挿入します

3.2. オプション 2:

このエラーは、システムが初期システム (PID 1) として systemd を使用して起動されていないことを示します。これは、システムが別の init システム (Upstart や SysVinit など) を使用していることが原因である可能性があります。したがって、systemctl コマンドは systemd に依存しているため、このコマンドを使用しようとすると問題が発生します。

システムが init システムとして systemd を使用していない場合は、init システムに適切なコマンドを使用してサービスのステータスを確認する必要があります。一般的な init システムの例をいくつか示します。

Upstart: システムが初期化システムとして Upstart を使用している場合は、initctl コマンドを使用してサービスのステータスを確認できます。たとえば、Docker サービスのステータスを確認するには、次のコマンドを実行できます。

sudo initctl status docker

SysVinit: システムが初期化システムとして SysVinit を使用している場合は、service コマンドを使用してサービス ステータスを管理および確認できます。たとえば、Docker サービスのステータスを確認するには、次のコマンドを実行できます。

sudo service docker status

結果は利用可能で有効です
ここに画像の説明を挿入します
正常に開始され、クエリは正常です
ここに画像の説明を挿入します

4. 両方のコマンドがクエリおよび使用可能であり、完全であることを確認します。

ここに画像の説明を挿入します

官方文档:
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
参考帖子:
https://blog.csdn.net/B11050729/article/details/132498547
https://blog.csdn.net/m0_68736501/article/details/130289727
https://blog.csdn.net/qq_44610529/article/details/126488898
https://blog.csdn.net/weixin_41982608/article/details/132310451

おすすめ

転載: blog.csdn.net/Ying_ph/article/details/134344910