概要
前回に引き続きまた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を開いて
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にて、
echo "export DISPLAY=:0.0" >> ~/.profile
echo 'export LIBGL_ALWAYS_INDIRECT=1' >> ~/.profile
を実行するとかして、~/.profile
に
export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=1
なんかを記述済みなのにも関わらず、xeyesを実行すると
$ 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
の代わりに
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を起動してくれるようになるのでおすすめです。
くわしいことはここに書かれてました。
https://github.com/microsoft/WSL/issues/4106
以上です。ありがとうございました。