このページの本文へ

前へ 1 2 次へ

Windows Info 第259回

WSL2ではRDPでLinux GUIアプリのウィンドウを表示する

2021年01月24日 10時00分更新

文● 塩田紳二 編集● ASCII

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

 WSL2(Windows Subsystem for Linux 2)では、LinuxのGUIアプリケーションへの対応であるWSLGを開発中というところまでが前回の記事だ(「LinuxのGUIアプリケーションに対応するWSL2」)。今回は、具体的にどうやって仮想マシン内部のGUIアプリケーションが、Windowsのデスクトップにウィンドウを表示するのかについて解説する。

 ただし、WSLGについては、Microsoftが公開した情報に基づいてはいるものの、正式版が公開されたわけではないため、実際にプレビューなどが開始されたときに答え合わせをしたい。とりあえずは、あくまでも現時点での内容として受け止めてほしい。

WSL2からRDPでLinux GUIアプリケーションのウィンドウを表示

 WSL2は仮想マシンの中で動作する。そこで専用の仮想マシン環境(軽量ユーティリティVM)が作られた。Win32側とWSL2側は分離されており、お互いに簡単にアクセスすることはできない。Windows 10に含まれるHyper-Vでは、仮想マシンのデスクトップ表示にRDP(Remote Desktop Protocol)を使う。

 WSLGも基本的に同じで、RDPを使ってWSL2ディストリビューション内からの表示をWin32側で描写する。しかし、Hyper-VのVMではゲストOSのデスクトップをウィンドウとしてホスト側のデスクトップに表示するのに対して、WSLGではLinux GUIアプリケーションのウィンドウをホスト側のデスクトップに表示する。

 この仕組みはどちらかというと、WDAG(Windows Defender Application Guard)に近い。WDAGは、EdgeやOfficeをホストWindows側とは分離された仮想マシン内で動作させる。しかし、その表示はウィンドウとしてされるため、ユーザーには通常実行されているEdgeやOfficeと見た目では区別がつかない。

 RDPには、アプリケーション仮想化のために、リモートサーバー側で実行されるアプリケーションのウィンドウをデスクトップに表示するための機能を持っている。ということはすでに「Desktop」ではないし、「Protocol」だけでもないのだが、名称はいまだに「RDP」なのである(NT4.0から使われているので、名前を変えるのはもう難しいのではないかと思う)。

 リモートのデスクトップを表示するのとウィンドウを表示するのは同じように思えるが、実際には大きく違う。デスクトップを表示させる場合、表示自体はサーバー側で管理するので、クライアント側では送られてくるデスクトップの描画をすればいいだけだ。しかし、ウィンドウを表示するとなると、クライアント側のデスクトップに関する情報をサーバー側に送り、サーバー側アプリケーションは、クライアントのデスクトップにいるのと同じ情報を得られるようにしなければならない。たとえば、クライアント側に複数のモニターがあるとする。その場合は、それぞれの解像度や位置などをサーバー側に送らねばならない。アプリケーションはデスクトップ内での表示位置を自分で制御するかもしれないし、クライアント側のモニターだって、ユーザーが解像度を変更したり、突然デスクトップの構成が変化することもある。

 RDPは、アプリケーション仮想化やWDAGなどのために、こうした「リモートウィンドウ」のための仕組みを整えてきた。現在利用できない仮想GPUを使って、GPUアプリケーションなどを動作させるRemoteFXもこのRDPの一部として開発された。ある意味、Windowsの仮想化機能(Hyper-Vやコンテナ、WSLやWDAGなど)と歩調を合わせてずっと改良され続けてきたのがRDPなのである。WSLGでRDPを使うというのは自然なやり方なのである。RDPが持つリモートウィンドウの表示機構は、「RAIL」(Remote Application Integrated Locally)と呼ばれる。

Westonをどこで実行するのか?

 WSL2では、Microsoftストアなどから入手できる「WSLディストリビューション」とWSL2側のLinuxカーネルの組み合わせで動作する。WSLディストリビューション側は、WSL2への対応は必要だが、基本的には、通常のLinuxディストリビューションに準じたものだ。

 では、WSLG用のWayland(Weston)をどうやって組み込むのか? WSLGでは、WSL側にSystemディストリビューション(System Distro)が用意され、WSLディストリビューションと組み合わさってLinux環境を実現するようだ。

 このSystem Distroはコンテナーのように働き、WSLディストリビューションとは分離された状態で動作し、影響を受けない。WSLディストリビューション側は、別のWaylandなどを導入し、従来どおりに外部のXサーバーに表示するといったことも可能になるようだ。また、WSLGの導入に対して、ディストリビューション自体を作り替える必要もないようだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

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