Windows 10 バージョン2004は、ファイルI/Oのパフォーマンスを改善し、Linuxカーネルの機能を呼び出すシステムコールの互換性を大きく高めたWSL 2(Windows Subsystem for Linux 2)を搭載する。Docker DesktopのホストもHyper-V仮想マシンからWSL 2へ移行したことで、Windows 10 Homeエディションでも開発環境を整えることが可能になった。

  • Docker Desktopの設定画面。Dockerと統合するLinuxディストリビューションを選択できる

  • WSL 2で動作するDebian GNU/Linuxでhello-worldコンテナを実行した状態

Windows 10とLinuxを併用する環境は、これで完成と思われていたが、Microsoftは先のBuild 2020でWSLの新たなロードマップを示している。セッションの1つである「The new Windows command-line: Windows Terminal and WSL 2」の情報をまとめた公式ブログでは、WSL 2を有効化する手段を「Windowsの機能」によるGUI操作や、Windows PowerShellによるCUI操作に加えて、「wsl.exe -install」とシンプルなものを追加することを示しつつ、GPUのサポートを表明した。

  • 今後のWSL 2はGPUコンピューティングをサポートするため、PythonとTensorFlowでAIモデルの開発やテストが可能になる(セッション動画より抜粋)

具体的には、NVIDIA CUDAとDirectML(Machine Learning)をサポートする。前者はNVIDIA製のGPUを描画以外に利用する並列コンピューティングプラットフォーム。後者はDirectX 12ベースの低レベルAPIとして、各種GPUを利用できる。動作ロジックは別の公式ブログで詳しく解説していたので、その一部を紹介したい。

GPUの仮想化はWDDM(Windows Display Driver Model)2.5以降にGPU-PV(Paravirtualization:準仮想化)として組み込まれているが、利用範囲は仮想マシンやコンテナで動作するWindowsに限定していた。この範囲を拡大するため、今後のWindows 10 Insider PreviewのWSL 2に、GPU-PVを使用可能にするWDDM 2.9と、Linuxカーネルドライバーを提供する。

  • WSL 2におけるGPU利用時の構造図。Linux版Dxgkrnl(DirectXグラフィックカーネルサブシステム)はWindows版Dxgkrnlを通してGPUを利用する(公式ブログより抜粋)

もう1つの注目点がGUIのサポートだ。従来のWSLがサポートするのはあくまでテキストのみで、WSL 2についても同様だが、今後はGUIアプリを段階的にサポートしていく。Build 2020の基調講演では、WSL 2上でディスプレイサーバーのWaylandを稼働させ、FreeRDPに描画させていた。だが、本セッションを視聴する限り、Linuxアプリを直接デスクトップに描画しており、パフォーマンスに不自然な素振りもない。どのような仕組みで実現しているのかは、Microsoftによる解説を待ちたい。

  • Windows 10上でGNOMEのテキストエディター「Gedit」が動作している(セッション動画より抜粋)

  • メディアプレーヤーの「mpv」も動作。Windows版ではないことを示すため、WSL 2上から実行していた(セッション動画より抜粋)

初期のWSLでは、Windows 10で動作するXサーバーをインストールし、強制的にGUI環境を構築していたが、Microsoftは「Linux GUIアプリをデスクトップ上でWindowsアプリと並行かつシームレスに実行できる」ことを開発目標に掲げている。Linuxの膨大なアプリがWindows 10で利用可能になれば、使い慣れたWindowsのGUI環境下で、より多くの課題を解決できるようになるだろう。それはWindows 10自身の価値向上につながる。