このページの本文へ

前へ 1 2 次へ

Windows Info 第485回

Windows Subsystem for Linux(WSL)のソースコードが公開された

2025年06月08日 10時00分更新

文● 塩田紳二 編集● ASCII

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

Build 2025で発表されていたWSLのソースコードが公開

 Windows Subsystem for Linux(WSL)のソースコードが公開された。これまで、WSLを実行するのに必要なソフトウェア、特にWin32側のものは公開されていなかった。

 5月20日(現地時間)に米国で開催されたBuild 2025イベントで、WSLをオープンソース化することが発表された。その後、2日ほどしてソースコードがGitHubで公開されている。もともとWSL用ディストリビューション開発などの情報を提供していたリポジトリである。

 ちなみに以前から、以下の2つに関しては、ソースコードが公開されていた。

●WSL2用Linuxカーネルhttps://github.com/microsoft/WSL2-Linux-Kernel
●Linux GUIアプリケーションを動作させるためのシステムディストリビューションWSLghttps://github.com/microsoft/wslg

 今回公開されたWSLのソースコードは、リポジトリのトップレベルにある「src」ディレクトリ以下にある(https://github.com/microsoft/WSL/tree/master/src)。また、ローカライズされた日本語のメッセージは「localization/ja-JP/Resources.resw」(https://github.com/microsoft/WSL/blob/master/localization/strings/ja-JP/Resources.resw)にある。

WSL

実際にソースコードを見るには

 とは言え、ソースコードのどこから手をつけたらいいのかわからない方も少なくないだろう。そこで筆者はwsl.exeのソースコードから見ていくことにした。

 wsl.exeには、ディストリビューションのインストールや管理、wslの設定、セッションの管理に加えて、Win32側シェル(PowerShellやcmd.exe)とパイプラインで接続してbashコマンドを実行させる機能もある。なので、wsl.exeを調べることがWSLソースコード理解の出発点になると考えた。

 wsl.exeのソースコードは、WSLリポジトリの「src/windows/common/wslclient.cpp」(https://github.com/microsoft/WSL/blob/master/src/windows/common/WslClient.cpp)である。

 以下の表は、WslClient.cppが参照する定数、呼び出している関数やクラスなどが入ったファイルの一覧である。なお、利用するエディタなどの機能により、外部ファイルで定義された関数やクラスなどの定義ファイルを開くことも可能だ。

WSL

 論理的には、src\windows\wsl\main.cppが、wsl.exeを生成するためのコードなのだが、ここでは、前述のWslClient.cppにある「wsl::windows::common::WslClient::Main」(ソースコード末尾にある)を呼び出しているだけである。このため、中身を見るのであれば、このMain関数から取りかかる方がいいだろう。

 Main関数は、WslClient.cppファイルの末尾、1839行から始まる。引数としてコマンドラインを受け取り初期化する。冒頭で環境変数「WSL_UTF8」が1ならば、文字エンコードとしてUTF-8を使う。「WSL_UTF8」が1以外なら、UTF-16(WindowsでいうUnicodeエンコード)を使う。これは、公式のドキュメントにはない機能である。ただ、UFT-16のときBOMが付かない。

WSL

環境変数WSL_UTF8の設定値の違いによるwsl.exe --helpコマンドの出力エンコード。ここではnkfを使って文字コードを判定している

 初期化のあと1892行から「WSL側でコマンド実行(bash)」「WSLの環境設定(wslconfig)」「システムディストリビューションの起動(wslg)」「それ以外のwsl.exeの機能」の4つに分岐する。

 WSLが登場したときには、ディストリビューションを起動するbash.exe、WSLの設定を行うwslconfig.exeという2つのプログラムがあった。これらの機能はwsl.exeに取り込まれ、2つのプログラムは非推奨となった(プログラム自体は存在している)。また、WSLgは追加された機能である。こうした背景から3つの機能とwsl.exe本来の機能の4つに内部が分かれていると推測される。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

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

プレミアム実機レビュー

ピックアップ
1
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
2
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,980
3
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
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
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥1,100
6
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥2,111
7
【Amazon.co.jp限定】バッファロー microSD 128GB 100MB/s UHS-1 U1 microSDXC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-128U11HA/N
【Amazon.co.jp限定】バッファロー microSD 128GB 100MB/s UHS-1 U1 microSDXC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-128U11HA/N
¥3,080
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
¥4,918
9
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
¥1,980
10
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652

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

デジタル用語辞典

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