このページの本文へ

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 MU937 超軽量 薄型ノートPC■Win11搭載 / MS Office H&B 2019 / FHD(1920x1080)/第七世代 Celeron/8GBメモリ/SSD 256GB/Webカメラ内蔵/13.3インチ
【整備済み品】 富士通 ノートパソコン LIFEBOOK MU937 超軽量 薄型ノートPC■Win11搭載 / MS Office H&B 2019 / FHD(1920x1080)/第七世代 Celeron/8GBメモリ/SSD 256GB/Webカメラ内蔵/13.3インチ
¥19,800
2
Lenovo ノートパソコン パソコン IdeaPad Slim 3 14.0インチ 第13世代 インテル® Core™ i5 プロセッサー搭載 13420H メモリ16GB SSD512GB MS Office 2024搭載 Windows11 バッテリー駆動14.1時間 重量1.39kg ルナグレー 83K00072JP ノートPC
Lenovo ノートパソコン パソコン IdeaPad Slim 3 14.0インチ 第13世代 インテル® Core™ i5 プロセッサー搭載 13420H メモリ16GB SSD512GB MS Office 2024搭載 Windows11 バッテリー駆動14.1時間 重量1.39kg ルナグレー 83K00072JP ノートPC
¥107,800
3
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
4
【整備済み品】富士通 ノートパソコン 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)
¥36,979
5
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
¥134,377

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
¥1,880
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
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥980
4
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
5
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
6
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
7
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
8
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,545
9
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥1,980
10
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
¥880

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

デジタル用語辞典

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