WSL2+ubuntu20.04: GUI化して使う方法


WSL2+ubuntu20.04: どうやってGUI化するか

WSL2+ubuntu20.04環境がかなり良い。仮想環境よりずっと速い。
しかしCLI。…なのでGUI化したいと思って、ここQiitaやその他でもそのやり方をいろいろ拝見しましたがうまくいかず。

結局、べつの方法でなんとかした。

結論としてはXRDPを使う

VcXsrvやX410とかDISPLAY環境変数の設定とかいらないからとても簡単。これでよいのでは?

では手順を述べていきます。

WSLの設定

WSL2の有効化

PowerShellを管理者権限で立ち上げて以下のコマンド。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

WSL2のアップグレード

https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel
へ行って、「download the latest WSL2 Linux kernel 」からwsl_update_x64.msiをダウンロード、インストールする。



WSLのバージョンのデフォルトをWSL2にする。

wsl --set-default-version 2

確認コマンド

PS C:\Users\atyah> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2


ubuntuの設定

Microsoft Storeからubuntu20.04をインストール

Microsoft Storeでubuntu20.04を選んで

インストールする。

終わったら起動ボタンで起動。


ubuntuにXRDPをインストール

ubuntu20.04 on WSL2で以下のコマンド:

sudo apt update && sudo apt -y upgrade
sudo apt -y install xfce4
sudo apt-get install xrdp

インストール途中の以下のウィザードではgdm3を選ぶ。

xrdp.iniを編集

xrdp.iniファイルのデフォルトポート番号などを変更する。

sudo cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.bak
sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/max_bpp=32/#max_bpp=32\nmax_bpp=128/g' /etc/xrdp/xrdp.ini
sudo sed -i 's/xserverbpp=24/#xserverbpp=24\nxserverbpp=128/g' /etc/xrdp/xrdp.ini
echo xfce4-session > ~/.xsession

port番号をデフォルトの3389から変更するのは以下のエラーが出てしまうから。どうもWSLで使ってるようだ。

Your computer could not connect to another console session on the remote computer because you already have a console session in progress.


startwm.shを編集

sudo vim /etc/xrdp/startwm.sh

最後の2行をコメントアウトする。
そして、末尾に
startxfce4
を追記する。

#!/bin/sh
# xrdp X session start script (c) 2015, 2017 mirabilos
# published under The MirOS Licence

if test -r /etc/profile; then
        . /etc/profile
fi

if test -r /etc/default/locale; then
        . /etc/default/locale
        test -z "${LANG+x}" || export LANG
        test -z "${LANGUAGE+x}" || export LANGUAGE
        test -z "${LC_ADDRESS+x}" || export LC_ADDRESS
        test -z "${LC_ALL+x}" || export LC_ALL
        test -z "${LC_COLLATE+x}" || export LC_COLLATE
        test -z "${LC_CTYPE+x}" || export LC_CTYPE
        test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION
        test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT
        test -z "${LC_MESSAGES+x}" || export LC_MESSAGES
        test -z "${LC_MONETARY+x}" || export LC_MONETARY
        test -z "${LC_NAME+x}" || export LC_NAME
        test -z "${LC_NUMERIC+x}" || export LC_NUMERIC
        test -z "${LC_PAPER+x}" || export LC_PAPER
        test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE
        test -z "${LC_TIME+x}" || export LC_TIME
        test -z "${LOCPATH+x}" || export LOCPATH
fi

if test -r /etc/profile; then
        . /etc/profile
fi

# コメントアウト # test -x /etc/X11/Xsession && exec /etc/X11/Xsession
# コメントアウト # exec /bin/sh /etc/X11/Xsession

# xfce
startxfce4


RDPでWindowsから接続

ubuntuでXRDPを立ち上げ

sudo /etc/init.d/xrdp start

* Starting Remote Desktop Protocol server
てなる。

※ この後もしかしたらWSL2の再起動も必要かもしれない。
Powershellで再起動コマンド↓

wsl --shutdown

RDPで接続

localhost:3390に接続。

ubuntuにFirefoxのインストール

RDP接続できたら、Firefoxをインストール(しないとデフォルトブラウザを立ち上げようとしてもエラー)。

sudo apt install firefox -y

OK。

以上です。

宣伝

静的サイトジェネレーターGatsbyの基本とnode APIの扱いについて踏み込んで解説・ハンズオンした電子書籍を上梓しましたので、よろしければお手に取ってみて下さい。

JAMStackを学ぼう Gatsby, React bootstrap, Netlifyでつくる企業サイト ~もうレンタルサーバーはいらない~


GatsbyとmicroCMSを組み合わせてのコーポレートサイト作成手順を解説・ハンズオンした続編を上梓しました。どうぞお手に取ってみて下さい。

JAMStackを学ぼう GatsbyとmicroCMSでつくるコーポレートサイト ~WordPressはもう古い~