2023.02.03追記
WSL2のネイティブSystemdでxrdpを動作させる記事を書きました。
WSL2でSystemdが公式にサポートされるようになったため今後は以下の記事を参照してください。
はじめに
前回、WSL2のUbuntuにgenieをインストールしたため、今回はxrdpをインストールしてリモートデスクトップでアクセスできるように設定していきます。
Ubuntuデスクトップ環境のインストール
Ubuntu 20.04を起動して、Ubuntu Desktopをインストールします。
sudo apt update
sudo apt upgrade
sudo apt install ubuntu-desktop
xrdpのインストール
xrdpインストール&セットアップの大枠は以前書いた以下の記事と大体同じですが、WSL環境の場合、一部手順が異なるため、今回は手作業でやっていきます。
sudo apt install xrdp
xrdpインストール後のセットアップ
Ubuntu Desktopでxrdpを使用する場合、いくつか修正する必要があるため、ファイルの修正と必要ファイルの作成を行っていきます。
sudo sed -i -e '/FuseMountName/s/thinclient_drives/shared-drives/g' /etc/xrdp/sesman.ini
sudo sed -i -e '/allowed_users/s/console/anybody/g' /etc/X11/Xwrapper.config
sudo tee /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla << _EOF_ > /dev/null
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
_EOF_
sudo tee /etc/polkit-1/localauthority/50-local.d/46-allow-update-repo.pkla << _EOF_ > /dev/null
[Allow Package Management all Users]
Identity=unix-user:*
Action=org.freedesktop.packagekit.system-sources-refresh
ResultAny=yes
ResultInactive=yes
ResultActive=yes
_EOF_
sudo tee /etc/xrdp/startubuntu.sh << _EOF_ > /dev/null
#!/bin/sh
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
exec /etc/xrdp/startwm.sh
_EOF_
sudo chmod +x /etc/xrdp/startubuntu.sh
xrdp待ち受けポート番号の変更
WSL2で起動している仮想マシンでは、個別のアドレスを持っているため、ip a等のコマンドで確認できるアドレスに対してリモートデスクトップ接続を行えば接続できますが、このアドレスはPCを再起動すると変更されてしまいます。
またWSL2では、ホスト側となるWindowsで、WSL2の仮想マシンで待ち受けているポートに対してポートフォワードする機能があり、デフォルトではWSL2に転送するようになっているため、ホスト側のWindowsでlocalhostを指定してリモートデスクトップアクセスすると、WSL2で動作しているxrdpにアクセスするような動作となります。
今回の環境ではWindows 10 Homeの環境となることから、Windowsホスト側でリモートデスクトップサービスが動かないのでデフォルトのポートのままでも問題ありませんが、リモートデスクトップサービスが動作するWindows 10 Proでは、localhostによるアクセスを行うとポートフォワードできずに失敗するため、xrdpの待ち受けポートを変更するようにします。
変更するポート番号はRDPが動作する3389以外なら何でもいいですが、ウェルノウンポート以外のポートにするのが望ましいので、今回は3389に10000を加えた13389にします。
sudo sed -i -e '/^port/s/3389/13389/g' /etc/xrdp/xrdp.ini
Dock環境のインストール
UbuntuをUbuntu Desktop環境で使うと、画面左にDockと呼ばれるアプリケーション起動用のバーが表示されますが、今回の環境では表示されないようなので、gnome-tweak-toolをインストールして、Dockを使用できるようにします。
sudo apt install gnome-tweak-tool
gsettings set org.gnome.shell enabled-extensions "['ubuntu-dock@ubuntu.com']"
Ubuntuの日本語化
WSL2のUbuntuは日本語化されていないため、日本語化しておきます。
sudo apt install language-pack-ja
sudo localectl set-locale LANG=ja_JP.UTF-8
sudo dpkg-reconfigure tzdata
sudo apt install manpages-ja manpages-ja-dev
sudo apt install ibus-mozc
sudo localectl set-keymap jp106
入力ソースの追加は、各ユーザで実行するため、sudo無しで以下実行します。
gsettings set org.gnome.desktop.input-sources sources "[('ibus', 'mozc-jp'), ('xkb', 'jp')]"
不足している日本語パッケージのインストール
Ubuntu Desktopの画面から「設定」→「地域と言語」→「インストールされている言語の管理」をクリックした際に、足りないと言われるパッケージを予めインストールしておきます。
sudo apt -y install language-pack-gnome-ja
sudo apt -y install gnome-user-docs-ja
sudo apt -y install libreoffice-l10n-ja
sudo apt -y install firefox-locale-ja
sudo apt -y install mozc-utils-gui
sudo apt -y install thunderbird-locale-ja
sudo apt -y install gnome-getting-started-docs-ja
sudo apt -y install fonts-noto-cjk-extra
sudo apt -y install libreoffice-help-ja
xrdpの再起動
この時点でxrdpが起動しているので、再起動して設定を反映させます。
前回の記事の通り、genieが起動しているようであればsystemctlコマンドが使えるはずなので、systemctlで再起動します。
sudo systemctl restart xrdp
先ほど記載した通り、WSL2のUbuntuに割り当てられているIPアドレスは再起動ごとに変わってしまうため、localhostを指定してUbuntuにポートフォワーディングさせます。
WSL2のUbuntuへのリモートデスクトップアクセス
Windowsホスト側の「リモートデスクトップ接続」を起動し、localhostでポート転送して接続します。
また、先ほどxrdp側のポート番号を変更しているため、後ろに13389を加えてアクセスします。
ユーザ名、パスワードを入力後、以下の様な画面が表示されれば完了です。
おわりに
今回はUbuntu Desktopをインストールする方法で行いましたが、genieによりsystemdが使えるようになっているので、他のデスクトップ環境を使用する場合でも、通常のUbuntuにインストールするのと同じような感覚で作業できるようになっているかと思います。

