先週はWindows 10クラウドPC(仮)に関するウワサや、次期Visual StudioとなるVisual Studio 2022の64ビット化など気になる話題が盛りだくさんだったが、ここではWindows 10 Insider PreviewでサポートしたLinux GUIアプリを取り上げたい。WSL 2(Windows Subsystem for Linux 2)をベースとしてLinux GUIアプリを稼働させる取り組みは、Build 2020で発表済み。本稿執筆時点のアーキテクチャーは下記に示した図のようになっている。
公式ブログによれば、RDPバックエンドは大幅に拡張。リモートアプリ(Linux GUIアプリ)をローカル(Windows 10)に統合するため、ウィンドウのピクセルデータを描画するRAIL(Remote Application Interface Layer)と、仮想化されたアプリをローカルに統合するVAIL(Virtualized Application Interface Layer、別称GrfxRedirection)をサポート。
RAILはデスクトップ全体ではなく個々のウィンドウでRDP処理を施し、GrfxRedirectionはVM(仮想マシン)の境界を越える転送に最適。GUI描画はXサーバーのXWaylanが担い、上記のRDPバックエンドとオープンソース版RDP実装であるFreeRDPを経由して、Windows 10デスクトップに描画する。
WSLgは米国時間2021年4月21日にリリースしたWindows 10 Insider Preview ビルド21364でサポートしているが、そのままでは動作しない。WSLgが利用するMesaドライバー対応のGPU用デバイスドライバーが必要だ(Intel、AMD、NVIDIA)。筆者もIntel用GPUのデバイスドライバーを更新しようと試してみたが、すでにWindows 10 Insider Previewにインストール済みのデバイスドライバーのほうが新しかった。
GitHubの有効化手順を参考に試してみると、当然ながら別途Xサーバーを用意する必要もなければ、定番の環境変数「DISPLAY」の設定も不要で、各種Linux GUIアプリが起動した。今回はIntel Core i7搭載のSurface Pro 7で検証してみたが、動作が極端に遅いということはない。ただ、MicrosoftがGpuTestでベンチマークを取ったところ、Surface Book Gen3のIntel Iris Plusグラフィックスでも18fps程度。リアルタイムな応答を求めるアプリやゲームは厳しいものの、テキストエディターやフォトレタッチアプリであれば十分に動作するだろう。
ネイティブWin32 (Mesa) |
WSLg (vGPU・Mesa) |
WSLg (Software・Mesa) |
|
---|---|---|---|
NVIDIA RTX 3090 | 540fps | 350fps | 4fps |
Surface Book Gen3 (Intel・GPU) |
19fps | 18fps | 1fps |
Windows 10用アプリとLinux GUIアプリの混合は、アプリ管理に混乱を招く可能性も考えられるが、Windows 10用アプリはWindows Package Manager(winget)の機能拡充に伴って利便性は向上する。Linux GUIアプリも、Linuxディストリビューションが利用するパッケージシステムで一定の管理が可能になるため、さほど混乱は生じないだろう。現在は「動いた」という段階であり、実用レベルには達していないのだが、Microsoftが2021年5月に開催するBuild 2021で詳細が解説され、Windows 10 バージョン22H1あたりで標準機能として実装されるのではないだろうか。