このページの本文へ

Windows Info 第373回

Windows Subsystem for Linuxでsystemdが動くようになったので試した

2023年04月02日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

WSLでのsystemdのサポートが開始 早速使ってみる

 Unixを祖先に持つLinuxには、起動時にデーモン(Windowsでいうところのサービス)を起動したり、初期化などをするプログラムを実行するinitシステムがある。ただ、WSL(Windows Subsystem for Linux)では特殊な起動をすることから、従来initシステムは動作できなかった。そもそもWSLは当初のコンセプトからして、Linuxコマンドラインを使うための環境であり、たとえばHTTPサーバーなどを動作させることは想定外とされていたのだ。

 一方でLinuxには、さまざまなプログラムがあり、その中にはinitシステムで起動されるプログラムが必要なものがある。こうしたプログラムを動作させるためには、どうしてもinitシステムを組み込む必要があった。

 Linuxのinitシステムには、Unix System V互換のSysVinitやBSD系Unix由来のBSDinit、Linux用に作られたupstartなどいくつかあるが、現在ではsystemdと呼ばれるinitシステムが普及している。

 WSL Ver.0.67.6からWSLでのsystemdのサポートが開始された。本稿執筆時点では、Microsoftストア版WSLがインストールしてあれば、systemdは利用可能だ。ここでは、Ubuntu-22.04 LTSを使い、systemdを使ってみることにする。なお、systemdは必ずしも使うべきものではなく、使い方によっては無効のままでも問題ない。WSLの標準では無効にされている。

そもそもsystemdとは?

 systemdとは、UNITと呼ばれるサービス、デーモンの起動処理を行ない、システムの初期化をするものだ。Linuxでは、バックグラウンドで動作しさまざまな処理をする、デーモンと呼ばれるプログラムを利用するが、アプリケーションでもデーモンを必要とするものは、systemdに対して、UNITを組み込み起動をさせるようになっている。

 UNITは、設定(プロパティという)を記述したテキストファイルで記述されている。ただし、UNITファイルから実行時に生成されるファイルではないUNITもある。UNITファイルの中で起動するプログラムやスクリプトが定義されており、UNITファイルは、実行の前後関係や依存関係を記述する。

 なお、systemdは大規模で複雑なプログラムであるため、ここで全体を解説することは難しい。とりあえず「さわり」だけとさせていただきたい。

 systemdのUNITファイルは「/usr/lib/systemd/system」にある。ここには、末尾が「.service」「.target」やその他の単語を持つファイルやディレクトリがある。ここにあるのは、システム全体のUNITの雛形であり、これらを編集してはならない。

 設定を変更するにはいくつかの正しいやりかたがある。単に有効・無効を切り替えるなら、systemctlコマンドを使う。設定を変更したい場合、ドロップインディレクトリを作り、「~.conf」ファイルで差分を記述する。あるいは「/etc/systemd/system」にUNITファイルをコピーして編集する必要がある。なお、systemdでは同名のUNITファイルがあった場合、「/etc/systemd/system」のものが優先される。

UNITを調べる

 まずは、どのようなUNITがあるのかを調べる方法だが、上記のディレクトリを調べてもいいが、専用のコマンドとして「systemctl」がある。UNITのファイルを表示させるには、「systemctl list-unit-files」を使う。serviceのUNITファイルだけを表示させたければ「systemctl list-unit-files --type=service」とする。メモリに読み込まれているUNITを表示するには、「systemctl list-units」だ。

 前述のようにメモリに読み込まれているUNITには、直接対応するUNITファイルを持たないものもある。そのほか詳細は、systemctlのmanページを参照してほしい。

 これらのlistサブコマンドでは、lessがページャー(ページ単位で表示を一時停止するプログラム)が使われており、右側に反転表示の「>」がある場合、行にはみ出した部分があることを示す。このとき、左右カーソルキーで横スクロールさせることが可能だ。

 UNITで定義されたサービスなどを起動させたい場合には、

systemctl␣start/stop/reload/restart␣<UNIT名>...

などとする。UNITの状態を調べるには、

systemctl␣status␣<UNIT名>

とする。

 UNITを含むアプリケーションをインストールしてsytemdを使ってみることにしよう。テストに使うのは、HTTPサーバーの「nginx」である。以下のコマンドでnginxの基本版をインストールする。

sudo apt update
sudo apt install nginx-light

 これで、HTTPサーバーnginxが導入され起動したはずである。systemdでnginx.serviceの状態を調べるには、

systemctl status nginx.service

とする。curlコマンドでnginxが動いているかをテストする。Win32側でWebブラウザから「http://localhost」を開いてもnginxのページが表示できる。

HTTPサーバーnginxをインストールして、Win32側で「http://localhost」を開けば、nginxのページが表示される

 Win32側で開けない場合、ユーザーフォルダにある「.wslconfig」のlocalhostForwardingを確認する。trueでないと開けない。

 WSL側でテストするには、

curl http://localhost

とすると、出力の最後のほうに「Thank you for using nginx.」と表示されているはずだ。

systemctlコマンドを使うことで、UNITの状態を調べたり、起動や停止が可能になる。また、curlコマンドでnginxが動作しているかも調べられる

 nginxサービスを「sudo systemctl stop nginx.service」で停止させ、再度curlコマンドを実行するとコマンドは失敗する。再開するには、「sudo systemctl start nginx.service」とする。

 systemd関連のログを表示させるには、journalctlコマンドを使う。UNITを編集した場合など、エラーで起動しないといった問題が発生したとき、ログを調べる必要がある。たとえば、前回のブート以降の“nginx.service”のログを表示させるには、

journalctl --boot -u nginx.service

とする。systemdが動作すると基本的なログは、journaldと呼ばれるサービスが管理するようになる。journalctlは、その表示・管理用のコマンドである。標準では、ログはファイルとして記録される。「--boot」は、前回の再起動以降のログを表示するもの(後ろに数字を置くことで、前回、前々回の再起動以降のログを表示できる)。「-u」は、ログを表示させるUNITを指定するものだ。そのほか、journalctlには多数のコマンドがある。詳細はmanページなどで調べてほしい。

WSLの起動と継続

 systemdを有効にすることで、たとえばHTTPサーバーなどを、WSLと同時に起動することが可能になる。ただし、WSL自体は自動起動されないので、Win32側のスタートアップフォルダーなどで該当のディストリビューションを起動させる必要がある。たとえば、Windows Terminalなどで、「wt.exe -p <WSLプロファイル名/GUID>」などとする。

 また、WSLは、コンソールからセッションを開いていないと、一定時間で自動的にシャットダウンされる。その時間は、Win32側のユーザーフォルダにある「.wslconfig」ファイルの「vmIdleTimeout」で指定する。これで最後のコンソールが閉じてから自動シャットダウンされるまでの時間が長くできる。

 コンソールが開いていないと、HTTPサーバーが起動して、外部からアクセスされていても、シャットダウンがされてしまう。vmIdleTimeoutにゼロを入れても無効にはならないので、かなり大きな値を入れておくか、常にWSLのコンソールを開いておく必要がある。ただし、WSLを起動し続けると、メモリなどリソースが専有されたままになる点には注意が必要だ。

 systemdを有効にすると、WSLの起動時間が長くなってしまう。コマンドラインを使う用途が中心の場合、必ずしも有効にする必要はない。こうしたデメリットもあるので、利用するアプリケーションや使い方、ハードウェアスペックを考えて、利用の可否を考える必要がある。

カテゴリートップへ

本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
1
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥37,900
2
Apple 2026 MacBook Neo A18 Proチップ搭載13インチノートブック:AIとApple Intelligenceのために設計、Liquid Retinaディスプレイ、8GBユニファイドメモリ、256GB SSDストレージ、1080p FaceTime HDカメラ - シトラス
Apple 2026 MacBook Neo A18 Proチップ搭載13インチノートブック:AIとApple Intelligenceのために設計、Liquid Retinaディスプレイ、8GBユニファイドメモリ、256GB SSDストレージ、1080p FaceTime HDカメラ - シトラス
¥95,768
3
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、日本語キーボード、Touch ID - ミッドナイト
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、日本語キーボード、Touch ID - ミッドナイト
¥177,333
4
【整備済み品】 富士通 タブレット ノートパソコン ARROWS Tab V727 12.3インチ 中古 タブレット【Windows 11 】【MS Office2019 H&B 搭載 】第7世代 Core M3/ メモリ 4GB / SSD 128GB /無線LAN/HDMI/LTE/タッチペン 付属(整備済み品)
【整備済み品】 富士通 タブレット ノートパソコン ARROWS Tab V727 12.3インチ 中古 タブレット【Windows 11 】【MS Office2019 H&B 搭載 】第7世代 Core M3/ メモリ 4GB / SSD 128GB /無線LAN/HDMI/LTE/タッチペン 付属(整備済み品)
¥11,800
5
【整備済み品】 NEC 15.6型 ノートPC VX ノートパソコン/Windows 11 /MS Office H&B 2019/第8世代 Core i5-8350U / HDMI/WIFI/8GB/SSD 256GB/テンキー
【整備済み品】 NEC 15.6型 ノートPC VX ノートパソコン/Windows 11 /MS Office H&B 2019/第8世代 Core i5-8350U / HDMI/WIFI/8GB/SSD 256GB/テンキー
¥31,800

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,386
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥1,080
4
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
5
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
6
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
¥743
7
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
NIMASO ガラスフィルム iPad 第11世代(A16) 2025用/iPad 10.9インチ 第10世代 2022用 衝撃吸収 強化 ガラス 保護フィルム 指紋防止 ガイド枠付き NTB22I574
¥1,359
8
KIOXIA(キオクシア)【日本製】SDカード 128GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA128G
KIOXIA(キオクシア)【日本製】SDカード 128GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA128G
¥2,364
9
対応 iPad 11世代 / 10世代 ガラスフィルム (2025/2022モデル) ガイド枠付き 【2枚セット-日本旭硝子素材】対応 iPad第10世代 2022 第11世代A16 10.9インチ 保護フィルム フィルム 強化ガラス スマートタブレット 第11世代2025 第10世代2022 液晶保護フィルム ガイド枠 全面保護 2.5D 硬度9 H 耐衝撃 飛散防止 貼り付け簡単 自動吸着 気泡ゼロ 指紋防止 ラウンドエッジ加工 超薄0.26mm 超高質感 スマートタブレット SENTM-2IP10D-1
対応 iPad 11世代 / 10世代 ガラスフィルム (2025/2022モデル) ガイド枠付き 【2枚セット-日本旭硝子素材】対応 iPad第10世代 2022 第11世代A16 10.9インチ 保護フィルム フィルム 強化ガラス スマートタブレット 第11世代2025 第10世代2022 液晶保護フィルム ガイド枠 全面保護 2.5D 硬度9 H 耐衝撃 飛散防止 貼り付け簡単 自動吸着 気泡ゼロ 指紋防止 ラウンドエッジ加工 超薄0.26mm 超高質感 スマートタブレット SENTM-2IP10D-1
¥998
10
JAMJAKE iPad用ペンシル アップルペンシル代用ペン 2018年~2026年 iPad対応 タッチペン 超高感度 極細 スタイラスペン Type-C急速充電 傾き感知/磁気吸着/誤作動防止機能対応 軽量 耐摩 学生 子供 筆記 絵を描く デザイン用 ドローイング用
JAMJAKE iPad用ペンシル アップルペンシル代用ペン 2018年~2026年 iPad対応 タッチペン 超高感度 極細 スタイラスペン Type-C急速充電 傾き感知/磁気吸着/誤作動防止機能対応 軽量 耐摩 学生 子供 筆記 絵を描く デザイン用 ドローイング用
¥1,880

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン