Windows Subsystem for Linux (WSL) で Systemd を有効にする方法

Windows Subsystem for Linux (WSL) で Systemd を有効にする方法

Windows Subsystem for Linux (WSL) は、Linux バイナリ実行可能ファイルを Windows 11/10 クライアント コンピューターおよび Windows Server 2019 以降のコンピューターでネイティブに実行するための互換性レイヤーです。WSL 2 のリリースに伴い、Hyper-V 機能のサブセットを通じて、実際の Linux カーネルなどの重要な変更が加えられました。この投稿では、WSL で Systemd を有効にする方法について説明します。

システムドとは何ですか?

Systemd は、Linux システムの基本的なビルディング ブロックのセットです。これは、PID 1 として実行され、システムの残りの部分を開始するシステムおよびサービス マネージャーを提供します。Systemd は、Ubuntu、Debian など、いくつかの有名なディストリビューションにデフォルトでインストールされています。この変更により、WSL はベアメタル マシンで優先 Linux ディストリビューションを実行するのとさらに同等になり、systemd サポートを必要とするアプリケーションを使用できるようになります。systemd に依存する Linux アプリケーションの例としては、snap、microk8s、および systemctl があります。

マイクロソフトによると:

Systemd のサポートには、WSL アーキテクチャの変更が必要でした。systemd には PID 1 が必要なため、Linux ディストリビューションで実行されている WSL init プロセスは systemd 子プロセスになります。WSL プロビジョニング プロセスは、Linux コンポーネントと Windows コンポーネント間の通信のためのインフラストラクチャを提供する役割を担っているため、この階層を変更するには、WSL プロビジョニング プロセス中に行われたいくつかの仮定を再考する必要がありました。クリーンなシャットダウンを確実にし (シャットダウンが systemd によって制御されるようになったため)、WSLg との互換性を確保するために、追加の変更が必要でした。これらの変更により、systemd サービスは WSL インスタンスの稼働を維持しないことに注意することも重要です。

これにより WSL のブート動作が変更されるため、これをユーザーの既存の WSL ディストリビューションに適用する場合は注意が必要でした。そのため、現在、特定の WSL ディストリビューションに対して systemd を有効にするために登録する必要があります。フィードバックを監視し、将来的にこの動作をデフォルトにする方法を調査します。

Windows Subsystem for Linux (WSL) で Systemd を有効にする方法

これまでのところ、この記事の執筆時点で、Windows Subsystem for Linux (WSL) コミュニティは systemd を実装する方法を探していました。しかし、Canonical とのパートナーシップに続いて、Microsoft は正式に WSL に systemd を実装しました。WSL で利用可能な systemd サポートにより、WSL ディストリビューション内で systemd を実行できるようになり、Windows マシンで Linux ワーカー プロセスをさらに活用できるようになりました。

マシンに systemd をインストールするには、次の手順を実行する必要があります。

WSL バージョン 0.67.6 以降を使用していることを確認してください。

PowerShell 経由で WSL を有効にし、デバイスの Microsoft Store からダウンロードしなかった場合、最初は systemd がありません。Windows 11 Insider Build を実行しているユーザー、または Microsoft Store からダウンロードした WSL を使用しているユーザーのみが利用できます。WSL で Ubuntu プレビューを実行している場合、systemd が自動的に追加されます。したがって、サポートされているバージョンの WSL があるかどうかを確認するには、Windows ターミナルを開き、PowerShell コンソールで次のコマンドを実行します。

wsl –version

出力に基づいて、WSL が 0.67.6 以前であれば、Microsoft Store にアクセスして WSL をダウンロードできます。また、PC ユーザー (特に Windows Insider でない場合) は、WSL GitHub リポジトリから最新バージョンをダウンロードできます。Systemd のサポートは、将来的にすべてのユーザーに追加されます。WSL の更新を確認するには、PowerShell で次のコマンドを実行します。

wsl –update

WSL ディストリビューション設定で systemd フラグを設定します。

systemd サービスのステータスを表示する

systemd が必要とするサポートされているバージョンの WSL を実行していることを確認したら、wsl.conf ファイル (WSL Linux ディストリビューションにある構成ファイルで、ディストリビューションごとのカスタマイズを可能にするため、一般設定 WSL) を使用して、起動時に systemd が確実に開始されるようにします。このタスクを完了するには、次の手順に従います。

  • sudo 権限でエディターを実行し、次の行を追加します。

[boot]systemd=true

  • その後、ファイルを保存して終了します。
  • これで、WSL Windows ディストリビューションを閉じ、PowerShell で次のコマンドを実行して、WSL インスタンスを再起動できます。

wsl.exe --shutdown

  • 起動したら、systemd が実行されているはずです。サービスのステータスを確認して表示するには、次のコマンドを実行します。

systemctl list-unit-files --type=service

Windows Subsystem for Linux (WSL) で Systemd を有効にする方法は次のとおりです。

systemd を init として起動するにはどうすればよいですか?

systemd で起動するには、その目的のために作成した起動メニュー項目を選択します。ブート メニュー エントリを作成していない場合は、パッチを適用したカーネルのエントリを選択し、カーネル コマンド ラインを grub で直接編集して、次の行を追加します: init=/lib/systemd/systemd。

出典: Windows クラブ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です