みねっちょのマイコン関係ブログ

組込開発系フリーソフトやハードの情報発信ブログ

WSL から WSL2 への移行で、X サーバーの設定変更が必要になる

 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 の記事に詳しく書かれています。

ascii.jp

VcXsrv のユーザー側での設定の変更:

Windows 用のメジャーな X サーバソフト、VcXsrv を使っていた人は、次の通り設定の変更が必要となります。

  1. Windows ホスト側での起動時に、アクセス コントロールを無効化する
    XLaunch 起動時に、3画面目で「Disable access control」にチェックを入れます。

    f:id:minettyo:20210219233129j:plain

    これは、localhost (127.0.0.1) 以外からの全てのアクセスを許可する事になります。
  2. タスクバーから起動する場合
    XLaunch 起動時の4画面目で「Save configuration」を押した場合、VcXsrv をタスクバーにピン留めしておけば、右クリックから次の様に「config.xlaunch」を選択すれば、上記1のチェックを入れた状態で起動出来ます。

    f:id:minettyo:20210226105645j:plain

  3. WSL2上での DISPLAY 環境変数の指定の変更
    WSL1では 「:0」で使えて居ましたが、WSL2ではホストの仮想化されていない実 IP アドレスを入力する必用が有ります。ホストの IP アドレスは、次の様に調べます。
    Winows 上でコマンドプロンプトを開き、ipconfig と入力する。表示された中の「イーサネット アダプター Ethernet:」の「IPv4 アドレス」を確認する。確認した IPv4 アドレスを、WSL2 上で「export DISPLAY="確認したアドレス”:0」と指定する。

    f:id:minettyo:20210222144238j:plain

  4. ルーターでのパソコンの IPv4 アドレスを固定にする
    ホストの IPv4 アドレスは、パソコンを接続しているルーターDHCP の設定で変わります。常に同じアドレスを取得したい場合には、ルーターの設定を「手動割当」に変更しておくと良いでしょう。その上で、WSL2の .bashrc に「export DISPLAY="確認したアドレス”:0」を記載しておくと、毎回人手で指定する必用が無くなります。下記の例では「export DISPLAY=127.168.11.2:0」となります。

    f:id:minettyo:20210222152356j:plain


X-Window の目次へ戻る