次の方法で共有


systemd を使用して WSL で Linux サービスを管理する

Windows Subsystem for Linux (WSL) では、ubuntu、Debian などの多くの一般的な Linux ディストリビューションで使用される systemd、init システムおよびサービス マネージャーがサポートされるようになりました。 (systemd とは何ですか?

init システムの既定値は最近 SystemV から変更されました。systemd は、wsl --installの既定値を使用してインストールされる現在のバージョンの Ubuntu の既定値になりました。 現在のバージョンの Ubuntu 以外の Linux ディストリビューションでも、SystemV init と同様に WSL init を使用できます。 systemd に変更するには、「 systemd を有効にする方法」を参照してください。

Linuxにおけるsystemdとは何ですか?

systemd.io によると、「systemd は Linux システムの基本的な構成要素のスイートです。 PID 1 として実行され、システムの残りの部分を起動するシステムおよびサービス マネージャーを提供します。

主に init システムおよびサービス マネージャーである systemd には、デーモンのオンデマンド開始、マウントと自動マウント ポイントのメンテナンス、スナップショットのサポート、Linux コントロール グループを使用したプロセス追跡などの機能が含まれています。

ほとんどの主要な Linux ディストリビューションは systemd で実行されるようになったため、WSL で有効にすると、ベアメタル Linux の使用にさらに近いエクスペリエンスが得られます。 systemd が提供する必要がある内容の詳細については、systemd デモや systemd の使用例を含むビデオのお知らせを参照してください。

systemd を有効にする方法

Systemd は現在 のバージョンの Ubuntu の既定値 となり、 wsl --install コマンド の既定値を使用してインストールされます。

WSL 2 で実行されている他の Linux ディストリビューションに対して systemd を有効にするには (systemv init を使用して既定値を変更します)。

  1. WSL バージョンが 0.67.6 以降であることを確認します。

  2. Linux ディストリビューションのコマンド ラインを開き、「 cd / 」と入力してルート ディレクトリにアクセスし、 ls してファイルを一覧表示します。 ディストリビューションの WSL 構成ファイルを含む "etc" という名前のディレクトリが表示されます。 このファイルを開き、「 nano /etc/wsl.conf」と入力して Nano テキスト エディターで更新を行うことができます。

  3. wsl.conf ファイルに次の行を追加します。このファイルを開いて、systemd に使用される init を変更します。

    [boot]
    systemd=true
    

    WSL 2 で systemd を有効にする

  4. Nano テキスト エディターを終了します (Ctrl + X、Y キーを押して変更を保存し、 enter キーで確認します)。

  5. その後、Linux ディストリビューションを閉じる必要があります。 PowerShell のコマンド wsl.exe --shutdown を使用して、すべての WSL インスタンスを再起動できます。

  6. Linux ディストリビューションを再起動すると、systemd が実行されます。 これを確認するには、コマンド systemctl status を使用して 、実行中 の状態と、Linux ディストリビューションに関連付けられているサービスの状態を表示するコマンド systemctl list-unit-files --type=serviceを表示します。

Linux ディストリビューションが Debian/Ubuntu/Kali Rolling の場合は、systemd パッケージをインストールしただけでなく、systemd-sysv パッケージがインストールされていることを確認する必要があります。

sudo apt-get update -y && sudo apt-get install systemd systemd-sysv -y

WSL の詳細設定の構成の詳細については、wsl.conf (ディストリビューション固有) と .wslconfig (グローバル) 構成ファイルの違い、自動マウント設定の更新方法などについて説明します。

Systemd デモ ビデオ

Microsoft は、Systemd サポートを WSL に提供するために Canonical と提携しました。 Craig Loewen (Microsoft の WSL の PM) と Oliver Smith (PM for Ubuntu on WSL at Canonical) がシステムサポートを発表し、有効な機能のデモをいくつか紹介します。

Systemd の例

systemd に依存する Linux アプリケーションの例をいくつか次に示します。

  • snap: Linux カーネルと systemd init システムを使用するオペレーティング システム用に Canonical によって開発されたソフトウェア パッケージおよび展開システム。 パッケージは "スナップ" と呼ばれ、スナップを構築するためのコマンド ライン ツールは "Snapcraft" と呼ばれ、スナップをダウンロードまたはインストールできる中央リポジトリは "Snap Store" と呼ばれ、スナップを実行するために必要なデーモン (ストアからのダウンロード、場所へのマウント、アプリの閉じ込め、実行) は "snapd" と呼ばれます。 システム全体は、"snappy" と呼ばれることもあります。 snap install spotifyコマンドを実行してみてください。

  • microk8s: オープンソースで、運用の手間を抑えた、最小限のプロダクション Kubernetes で、コンテナー化されたアプリのデプロイ、スケーリング、管理を自動化します。 手順に従って WSL2 に MicroK8s をインストールするか、 概要チュートリアルを確認するか、 MicroK8s と WSL 2 を使用した Windows 上の Kubernetes のビデオをご覧ください。

  • systemctl: systemd を制御および検査し、Linux ディストリビューション上のサービスを操作するのに役立つコマンド ライン ユーティリティ。 systemctl list-units --type=serviceコマンドを試して、使用可能なサービスとその状態を確認します。

systemd の使用方法を示すいくつかの関連チュートリアル:

systemd を有効にすることは WSL アーキテクチャにどのように影響しますか?

システムに必要な WSL アーキテクチャの変更のサポートを有効にする。 systemd に PID 1 が必要な場合、Linux ディストリビューション内で開始された WSL init プロセスは systemd の子プロセスになります。 WSL init プロセスは Linux コンポーネントと Windows コンポーネント間の通信のためのインフラストラクチャを提供する役割を担うため、この階層を変更するには、WSL init プロセスで行われた前提条件の一部を再考する必要があります。 クリーンシャットダウンを確保し(シャットダウンは現在システムによって制御されているため)、 また、WSLg、Linux グラフィカル ユーザー インターフェイス (GUI) を実行する WSL のコンポーネント、またはコマンド ラインではなくウィンドウに表示される Linux アプリとの互換性を確保するために、追加の変更を加える必要がありました。

また、これらの変更により、systemd サービスは WSL インスタンスを維持しないことに注意することも重要です。 WSL インスタンスは、この更新プログラムの前と同じ方法で動作し続けます。この詳細については、 2017 年のバックグラウンド タスク サポートに関するブログ記事を参照してください。