Windows 10でLinuxのプログラムが改変なしにそのまま動かせるLinux互換環境「Windows Subsystem for Linux(WSL)」。Linuxプログラムに対してWindowsカーネルをあたかもLinuxカーネルのように見せる仕組みだ。その互換性は、WSLがどこまでLinuxカーネルとして振る舞えるかにかかっている。

 WSLは、Linuxの実行ファイルをWindowsで直接実行する。WSLで動作するLinuxディストリビューションの「Ubuntu」や「openSUSE」を構成するプログラムは、オリジナルのそれと同じだ。

 しかし当然、Linuxの実行ファイルが呼び出すOSの機能、いわゆるシステムコールは、Windowsのそれとは異なる。そこでLinuxプログラムによるシステムコールの呼び出しを検知し、Linuxプログラムが要求する形式で処理結果を返す仕組みがWindows側に必要になる。

 このシステムコールの違いを吸収するのが、WSLの実体と言える「lxss.sys」だ。

Windows Subsystem for Linuxのシステムコール(公式ブログ記事を基に作成)
[画像のクリックで拡大表示]

 WSLを有効にしたWindows 10上でLinuxプログラムを実行すると、Windowsカーネルはそのプログラムが要求するシステムコールをlxss.sysドライバに渡す。lxss.sysは、Windowsカーネルが持つ同等のシステムコールを呼び出すか、自身が持つLinux互換のシステムコールで処理する。

この先は有料会員の登録が必要です。今なら有料会員(月額プラン)登録で5月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料会員と登録会員に関するFAQはこちら