WSL上でのWindowsアプリケーションの起動と相互運用

情報源: Windows and Ubuntu Interoperability – Windows Subsystem for Linux

今日公開されたInsider Previewのビルドに含まれるWSLでは、WSLのbash上からWindowsアプリケーションの起動が可能になったほか、WindowsプロセスとWSLのプロセスとの間でリダイレクト・パイプが使用できるようになりました。

それを実現する仕組みを示したのが下の図です。

当然WSLのプロセス空間の中でWindowsプロセスが作られるわけではなく、実際にはWSLのローダー側でWindowsのbinがロードされようとされたことを検知したら、それをbash.exeに通知して、Bash.exeに起動させます。また、WinプロセスとWSLのプロセス間でのリダイレクト・パイプを実現するために、その起動したWindowsプロセスの入出力とWSL側のプロセスの入出力をWSLのサービスとbash.exeが橋渡しをします。

どの様にリダイレクトを実現しているのか、Linux側のローダーをどのように設定変更しているかについては、元のBlogにもう少し細やかな説明がありますのでご確認ください。

実際にWSL上でどうWindowsバイナリを使っていくかについては、以下のmsdnライブラリの文書を参考にしてください。

Windows Interoperability

参考:リリースノート