LoginSignup
76
65

More than 3 years have passed since last update.

WSL2でのError: Can't open display問題の解決

Last updated at Posted at 2020-06-23

概要

前回に引き続きまたWSLネタです。

Windows 10 May 2020 Update (Version 2004)が配信され、私のデスクトップPCはWindows 10 2004になりました。この機会にと思い、WSLのUbuntuを18.04LTSから20.04LTSに変更し、WSLのバージョンも2にして、18.04からの移行も済ませました。

追記:KB4566116適用後のWindows 10 1903,1909でもWSL2が使えるようになっているみたいです
https://forest.watch.impress.co.jp/docs/news/1272017.html

しかし、Displayの設定がWSL1のときとは異なっているようで、ネット上にまだ情報が少なかったため今回記事にすることにしました。(まあちゃんと探せば出てくるんだろうけど)

前提

環境はWindows 10 2004で、WSL2を有効化していることです。
環境はWindows 10 1903,1909(KB4566116適応済)または2004以降で、WSL2を有効化していることです。

確認方法

WindowsのバージョンはWindows+Rキーを押して、winverと入力すると出てきます。(以下参照)
https://support.microsoft.com/ja-jp/help/13443/windows-which-version-am-i-running

WSLのバージョンは、Powershellを開いて

powershell
wsl --list --verbose

として、バージョンが2であればWSL2が実行中です。

今からWSL2を使いたいんや!って方はこちらを御覧ください
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#enable-the-virtual-machine-platform-optional-component

本題

何が起きてるの

おそらく、ここを見ておられる方のほとんどは
https://www.atmarkit.co.jp/ait/articles/1812/06/news040.html
こちらに書かれている内容をすべて実行済みかと思われます。
もし、お済みでない方はこちらを参考に設定をしてみてください。

さて、ここからが本題です。
WSL2にて、

bash
echo "export DISPLAY=:0.0" >> ~/.profile
echo 'export LIBGL_ALWAYS_INDIRECT=1' >> ~/.profile

を実行するとかして、~/.profile

bash
export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=1

なんかを記述済みなのにも関わらず、xeyesを実行すると

bash
$ xeyes
Error: Can't open display: :0.0

だとかがでてくる、ということが起こりました。

WSL2で仮想的なイーサネットアダプター(vEthernet WSL)が実装され、ホスト(Windows10側)と異なるIPアドレスが与えられているため、localhost:0.0みたいな指定ではだめみたいです。

更に厄介なことに、現状では、WSL 2のIPアドレスの割り当ては、WSL 2の仮想ネットワークが立ち上がるときに行われるため、一定のIPアドレスにならないようで、直接IPアドレス指定すればいいみたいなのですが、毎回ipconfigなんかで確認して、DISPLAY環境変数を変えなくてはいけないみたいです。

(自分もあんまり良くわかってないです。間違えてたらすみません。)

そんなんいいからはよ解決策を教えてくれ

結論を言えば、2つだけです。

まず、
echo "export DISPLAY=:0.0" >> ~/.profileの代わりに

bash
echo "export DISPLAY=\$(cat /etc/resolv.conf | grep nameserver | awk '{print \$2}'):0.0" >> ~/.profile

としてやる(もしecho "export DISPLAY=:0.0" >> ~/.profileを実行していたらviとかで編集したほうがいいかも)

2つ目に、
VcXsrvを起動する際、3枚めの画面のAdditional parameters for VcXsrvの欄に-acと書き込むだけでした。
このあと、save configurationで設定ファイルをshell:startupに保存しておくと、Windows起動時に自動でVcXsrvを起動してくれるようになるのでおすすめです。
image.png

くわしいことはここに書かれてました。
https://github.com/microsoft/WSL/issues/4106

以上です。ありがとうございました。

76
65
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
65