2020年5月28日木曜日

[WSL] WSL 2上でXサーバ(VcXsrv)を動かす [更新 2020年5月28日]

Windowsのアップデート(2020 May update[Build 19041])でWSL 2が使えるようになったのでやってみる。

WSL2の環境構築手順

PowerShellを管理者権限で起動し、以下コマンドを実行する。
PS > Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
PS > dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
PS > dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

PCを再起動する。

WSL 2 Linux カーネルの更新
上記のサイトから wsl_update_x64.msi をダウンロードし、インストールする。

現在のバージョンを確認する。
PS > wsl -l -v
以下コマンドを実行してUbuntuをWSL 2へ変換する。
PS > wsl --set-version Ubuntu-18.04 2
PS > wsl --set-default-version 2
変換後のバージョンを確認する。
PS > wsl -l -v

VcXsrvを起動し、xeyesを動かす。

$ Error: Can't open display: localhost:0.0と表示されて動かない。

"wls 2 Can't open display"で検索して下記を見つけた。
https://superuser.com/questions/1476086/error-cant-open-display-0
https://github.com/microsoft/WSL/issues/4106

要点はこれ
garg10may commented on 1 Oct
-----
For me I had to enable all 4 options only then it is working.
1. put the "-ac" option
2. select "Disable access control"
3. vi ~/.bashrc
   export DISPLAY=cat /etc/resolv.conf | grep nameserver | awk '{print $2}':0
4. disable "firewall" (was using Nod32 firewall), switched to windows firewall and it by self asks whether to allow this application over the firewall and just select 'yes' for that.

1. XLaunchの起動時に"-ac"オプションを追加
2. XLaunchの"Disable access control"にチェックを入れる
3. ~/.bashrcのDISPLAY変数を下記に変更
   export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
4. Windows FirewallでVcXsrvを許可する
最後の画面で"Save Configuration"をクリックしてconfig.xlaunchというファイルを作っておけば、これをクリックすると上記設定でVcXsrvが起動する
Windows Firewallの設定


ついでにPowerShellを最新のPowerShell Coreにした

下記のリンクから最新版をダウンロードしてインストール
https://github.com/PowerShell/PowerShell/releases

インストールの最初の画面の"Add ‘Open here’ context menus to Explorer "にチェックを入れるとエクスプローラーのコンテキストメニューにPowerShellが追加される
エクスプローラーのコンテキストメニュー

0 コメント: