WSLとウインドウシステム

WSL (Windows Subsystem for Linux)を使うと、WindowsカーネルでLinuxバイナリを実行することができる。この仕組みを利用することでLinuxディストリビューションをそのままWindows 10上で実行できるようになったわけだが、まだ実装されていない機能は使えないし、根本的にあまり相性の良くないものもある。Linuxで使われるウインドウシステムがそれだ。

Linuxディストリビューション、特にデスクトップ向けのディストリビューションではウインドウシステムとして「X Window System」が使われていることが多い。ほとんどはXorgを実装系として採用している。WSLでLinuxのときのようにXorgが使えるかと言うと、今のところそこまでは実装されていない。

もちろんWSLでXorgが動作するようにすることも、原理的には可能だ。しかし、すでにWindowsというウインドウシステムが動作している状態で、Xorgがシームレスに動作するように実装することにどれだけ需要があるかはよくわからない。最終的にそこは実装されないような気がする。

しかし、X Window Systemはそもそもの設計がネットワーク透過になっているので、現状でも利用しようと思えば利用できる状態になっている。WSLでこうした使い方が一般化するかどうかはまだわからないが、一応試すことはできるようになっている。今回はKali Linux on WSLでその様子を見てみよう。

リモートデスクトップで利用

Linuxのウインドウシステムを利用するアイデアの1つは、リモートデスクトップだ。WSLで動作しているリモートデスクトップサーバにアクセスしてXorgの環境を利用するというもの。Kali Linuxでは実験的にだがそれを試す方法が提供されている。「https://kali.sh/xfce4.sh」にセットアップ用のスクリプトが用意されているので、これを取得して中身を確認してから実行する。

●リモートデスクトップ環境を構築するスクリプトを取得

curl -O https://kali.sh/xfce4.sh

リモートデスクトップ環境を構築するスクリプトを取得して中身を確認

スクリプトはパッケージをアップデートしたのち、Kaliのデスクトップパッケージ、XFce4、Xorg、xrdpをインストールする内容になっている。環境にもよるが、このスクリプトの作業が終わるまでには数十分から数時間くらいかかるので注意していただきたい。

●取得したスクリプトを実行

sudo sh ./xfce4.sh

取得したスクリプトを実行

パッケージインストール中にキーボードの設定を求められる

取得したスクリプトの実行が完了したところ

スクリプトの実行が完了すれば必要なパッケージがインストールされたことになる。この状態で次のようにxrdpを起動させると、Windowsからリモートデスクトップとしてアクセスできるようになる。起動時にポート番号が表示されるので、これを覚えておく(ポート番号はスクリプトにも書いてあり、ここでは3390が使われている)。

●xrdpの起動

sudo service xrdp start

xrdpを起動したところ - 使われたポート番号が表示されている

Windows 10でリモートデスクトップ接続(mstsc)を起動し、「コンピューター」を「127.0.0.1:3390」にして接続を行う。

「リモートデスクトップ接続」ダイアログで接続を実施

確認ダイアログ

リモートデスクトップ接続から接続すると次のようにxrdpの表示するログイン画面にアクセスできる。

xrdpの提供するログインスクリーン

ここまでは多くの環境で動作を確認できるのではないかと思う。現在のところ、WSLでこうした環境を用意するための専用パッケージ(またはメタパッケージ)は用意されていないが、今後需要が高まればそうしたパッケージの提供も開始され、さらに手軽にリモートデスクトップ環境を用意できるようになるだろう。

もっと需要があれば、デフォルトでもインストールされるようになるかもしれない。そうなれば、bashから利用するのではなく、mstsc経由でアクセスして利用する、といったスタイルが標準になる可能性もある。今後の動向に注目だ。

ちなみに、起動したxrdpは次のようにすれば停止することができる。

sudo service xrdp stop

このやり方は普及する?

確かに、Linuxでしか動作しないGUIアプリケーションもあるので、こうした方法でWindowsから利用できれば便利である。ファイルシステムはLinuxからもWindowsからもアクセスできるため、データへのアクセスも簡単だ。Linuxで作業してWindowsで利用するといったことがシームレスに実施できれば、便利なシーンも多いだろう。

利用が始まったばかりのWSLで、こうした使い方がどこまで普遍的なものになるかはまだわからない。しかし、可能性はあるように思う。今後、どういったかたちで進んでいくのか注目していきたい。