WSL から WSL2 への移行により、X Window サーバーを使用している方は、設定変更が必要になるので備忘録として記載します。表にまとめると、次の通りです。また、本記事後半には VcXsrv のユーザー側での設定についても記載しています。
WSL1 | WSL2 | |
---|---|---|
IP アドレス | ホストと共通 毎回同一 |
仮想化されて独立 起動毎に変わる |
DISPLAY 指定 | :0 | "ホストのIPアドレス":0 |
ホストでのクライアントの認識 | 自分のマシンから | 他のマシンから |
X サーバのアクセスコントロール | 操作不要 | 要解放 |
目次:
IP アドレス管理の違い:
WSL1ではホストと同一のイーサネット用 IP アドレスを共有していましたが、WSL2では Hyper-V の上で仮想化された完全な Linux が独立して動きますので、IP アドレスも仮想化されて独立した物となります。
従って、WSL1では localhost (127.0.0.1) はホストと同じコンピュータを指して居ましたが、WSL2ではホストとは別の仮想化されたコンピュータになります。
つまり、Linux の DISPLAY 環境変数の値は、WSL1では localhost で問題無かったのが、WSL2ではホストの IP アドレスを指定する必用が有ります。これは、WSL1で「export DISPLAY=:0」の指定をしていた人は、WSL2では「export DISPLAY="ホストのIPアドレス”:0」への変更が必用になるという事です。
尚、WSL2での IP アドレスの仮想化については、次の ASCII の記事に詳しく書かれています。
VcXsrv のユーザー側での設定の変更:
Windows 用のメジャーな X サーバソフト、VcXsrv を使っていた人は、次の通り設定の変更が必要となります。
- Windows ホスト側での起動時に、アクセス コントロールを無効化する
XLaunch 起動時に、3画面目で「Disable access control」にチェックを入れます。
これは、localhost (127.0.0.1) 以外からの全てのアクセスを許可する事になります。 - タスクバーから起動する場合
XLaunch 起動時の4画面目で「Save configuration」を押した場合、VcXsrv をタスクバーにピン留めしておけば、右クリックから次の様に「config.xlaunch」を選択すれば、上記1のチェックを入れた状態で起動出来ます。
- WSL2上での DISPLAY 環境変数の指定の変更
WSL1では 「:0」で使えて居ましたが、WSL2ではホストの仮想化されていない実 IP アドレスを入力する必用が有ります。ホストの IP アドレスは、次の様に調べます。
Winows 上でコマンドプロンプトを開き、ipconfig と入力する。表示された中の「イーサネット アダプター Ethernet:」の「IPv4 アドレス」を確認する。確認した IPv4 アドレスを、WSL2 上で「export DISPLAY="確認したアドレス”:0」と指定する。
- ルーターでのパソコンの IPv4 アドレスを固定にする
ホストの IPv4 アドレスは、パソコンを接続しているルーターの DHCP の設定で変わります。常に同じアドレスを取得したい場合には、ルーターの設定を「手動割当」に変更しておくと良いでしょう。その上で、WSL2の .bashrc に「export DISPLAY="確認したアドレス”:0」を記載しておくと、毎回人手で指定する必用が無くなります。下記の例では「export DISPLAY=127.168.11.2:0」となります。