LoginSignup
12
9

WSL2のUbuntu 22.04.3 LTSにリモートデスクトップ接続する。(その2’:xrdpインストール)

Last updated at Posted at 2024-02-03

はじめに

以前「WSL2のUbuntuにリモートデスクトップ接続する。(その2:xrdpインストール)」でWSL2Ubuntu 20.04geniexrdpの組み合わせでWindowsからRDP接続するやり方を紹介しましたが、WSL2Ubuntu 22.04.3(ネイティブSystemd)+xrdpの組み合わせでやってみたところ、いくつか前回の手順から変更しないとできなかったので、若干タイトルを変更して改めてまとめてみようと思います。

以下はWSL2Ubuntu 20.04geniexrdpで紹介した以前の記事。

環境

以下環境のマシンにインストールします。

リソース スペック
CPU AMD Ryzen 7 3700U 2.30 GHz
メモリ 16.0 GB

OSは前回から変更となっています。

アプリケーション バージョン
Windows 11 Pro 23H2
Ubuntu 22.04.3 LTS

genieとネイティブSystemdの違い

以前の記事でも少し紹介しましたが、genieはボトルという疑似コンテナのような環境を構成することでSystemdPID 1で動作できるようにした仕組みです。

WSLは今までSystemdをネイティブで実行することができなかったためgenie等を挟んで実行する必要がありましたが、WSL自体でSystemdを実行できるようになったことから通常のLinuxと同等に使うことができるようになったのが一番の違いかと思います。

Ubuntuデスクトップ環境のインストール

Ubuntu 22.04.3を起動して、Ubuntu Desktopをインストールしますがacpidacpi-supportの更新を抑止しないとubuntu-desktopインストール時に「Transport endpoint is not connected」のようなエラーが出続けてインストールできない状態となるため、抑止してインストールします。

Ubuntuパッケージのアップグレード
sudo apt update
sudo apt upgrade
パッケージ更新の抑止とUbuntu Desktopのインストール
sudo apt-mark hold acpid acpi-support
sudo apt install ubuntu-desktop

xrdpのインストール

xrdpは普通にインストールします。

xrdpのインストール
sudo apt install xrdp

xrdpインストール後のセットアップ

Ubuntu Desktopxrdpを使用する場合、いくつか修正する必要があるため、ファイルの修正と必要ファイルの作成を行っていきます。

  • クリップボード用ドライブの名前の変更
/etc/xrdp/sesman.iniファイルの修正
sudo sed -i -e '/FuseMountName/s/thinclient_drives/shared-drives/g' /etc/xrdp/sesman.ini

ログイン確認してみた限り、今回はXwrapper.configを修正しなくても良さそうではありますが、一応変更しておきます。

  • 一般ユーザでのX起動を許可
/etc/X11/Xwrapper.configの修正
sudo sed -i -e '/allowed_users/s/console/anybody/g' /etc/X11/Xwrapper.config

メッセージ抑止は前回と同様設定を行っておきます。

  • PolKit関連メッセージの抑止
45-allow-colord.pklaファイルの作成
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_
  • リポジトリ更新のポップアップメッセージの抑止
46-allow-update-repo.pklaファイルの作成
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_

前回作成していたstartubuntu.shは、今回はうまく行かなかったので、後述の.xsessionrcで実行するように変更しています。

xrdp待ち受けポート番号の変更

WSL2で起動している仮想マシンでは、WSL2を動かしているWindowsホストと仮想マシン間のみでやり取りするための個別のネットワーク(以下図の内部ネットワーク)を持っているため、ip a等のコマンドで確認できるアドレスに対してWindowsホスト`からリモートデスクトップ接続を行えば接続できますが、このアドレスはPCを再起動すると変更されてしまいます。

またWSL2では、ホスト側となるWindowsで、WSL2の仮想マシンで待ち受けているポートに対してポートフォワードする機能があり、デフォルトではWSL2に転送するようになっているため、ホスト側のWindowslocalhostを指定してリモートデスクトップアクセスすると、WSL2で動作しているxrdpにアクセスするような動作となります。

port_forwarding.png

今回の環境はWindows 11 Proの環境となり、Windowsホスト側でもリモートデスクトップサービスを動作させていることから、使用ポートが被ってしまうため、xrdpの待ち受けポートを変更するようにします。

変更するポート番号はRDPが動作する3389以外なら何でもいいですが、ウェルノウンポート以外のポートにするのが望ましいので、今回は338910000を加えた13389にします。

xrdp待ち受けポート番号の変更
sudo sed -i -e '/^port/s/3389/13389/g' /etc/xrdp/xrdp.ini

Dock環境表示の設定

UbuntuUbuntu Desktop環境で使うと、画面左にDockと呼ばれるアプリケーション起動用のバーが表示されますが、xrdpではそのままでは表示されません。

今回は各ユーザのホームディレクトリに.xsessionrcを作成して、Dock表示用の設定を行うことでDockが表示できるようなので、作成します。

今回は後述する事情で新たにリモートデスクトップ接続用のユーザを作成するので、ユーザ作成時に.xsessionrcファイルが展開されるようスケルトンディレクトリにファイルを作成しておきます。

Dock有効化用の.xsessionrcファイル作成
sudo tee /etc/skel/.xsessionrc << _EOF_ > /dev/null
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
_EOF_

Ubuntuの日本語化

WSL2Ubuntuは日本語化されていないため、日本語化しておきます。

日本語言語パックのインストール
sudo apt -y install language-pack-gnome-ja-base
sudo apt -y install language-pack-ja
ロケールの変更
sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
キーマップの変更
sudo localectl set-x11-keymap jp

入力ソースの追加は、各ユーザで実行するため、後ほどリモートデスクトップで接続後に以下実行します。

入力ソースの追加
gsettings set org.gnome.desktop.input-sources sources "[('ibus', 'mozc-jp'), ('xkb', 'jp')]"

不足している日本語パッケージのインストール

Ubuntu Desktopの画面から「設定」→「地域と言語」→「インストールされている言語の管理」をクリックした際に、足りないと言われるパッケージを予めインストールしておきます。

不足している日本語パッケージのインストール
sudo apt -y install task-japanese-gnome-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 fonts-noto-cjk-extra
sudo apt -y install libreoffice-help-ja

xrdpの再起動

この時点でxrdpが起動しているので、再起動して設定を反映させます。

xrdpの再起動
sudo systemctl restart xrdp

デフォルトユーザでログインできないことの回避策

前回WSL2xrdpをインストールした際にはデフォルトのユーザでログインできたはずですが、今回はデフォルトユーザでログインしようとすると、画面が落ちてしまいログインできませんでした。

色々と調査したもののどうしてもデフォルトユーザではログインできなかったため、他の回避策を紹介します。

リモートデスクトップ接続用ユーザの作成

コマンドで一般ユーザを作成すれば、作成した一般ユーザにはログインできるので、コマンドで一般ユーザを作成します。

一般ユーザの作成(rdpuserという名前のユーザを作成した場合)
sudo adduser rdpuser

パスワード等を設定すればOKです。

パスワード等の入力
Adding user `rdpuser' ...
Adding new group `rdpuser' (1001) ...
Adding new user `rdpuser' (1001) with group `rdpuser' ...
Creating home directory `/home/rdpuser' ...
Copying files from `/etc/skel' ...
New password: [任意のパスワードを入力]
Retype new password: [任意のパスワードを入力]
passwd: password updated successfully
Changing the user information for rdsuser
Enter the new value, or press ENTER for the default
        Full Name []: [そのままEnterでOK]
        Room Number []: [そのままEnterでOK]
        Work Phone []: [そのままEnterでOK]
        Home Phone []: [そのままEnterでOK]
        Other []: [そのままEnterでOK]
Is the information correct? [Y/n] y

rootユーザのパスワードを設定する。(非推奨)

こちらの方法はroot権限でログインすることになるため、あまり推奨できませんが、もう一つの方法としてはデフォルトで設定されていないrootユーザのパスワードを設定してリモートデスクトップ接続でログインできるようにする方法です。

passwdコマンドで設定しましょう。

rootユーザのパスワード設定
sudo passwd

WSL2のUbuntuへのリモートデスクトップアクセス

先ほど記載した通り、WSL2Ubuntuに割り当てられているIPアドレスは再起動ごとに変わってしまうため、localhostを指定してUbuntuにポートフォワーディングさせます。

Windowsホスト側の「リモートデスクトップ接続」を起動し、localhostでポート転送して接続します。

また、先ほどxrdp側のポート番号を変更しているため、後ろに13389を加えてアクセスします。

capture_18072021_235051.jpg

ユーザ名、パスワードを入力後、以下の様な画面が表示されれば完了です。

Monosnap_20240203_174242.png

おわりに

今回はWSL2で正式サポートされた、ネイティブなSystemdxrdp接続を行ってみましたが、Ubuntuバージョンの違いなのか、ネイティブSystemdになったことの影響なのか、やっていることは前回と同じでも手順が思った以上に変わりました。

今回、WindowsWindows 10 HomeからWindows 11 Proになったことで、Homeでできなかったブリッジ接続ができるようになったので、次回はUbuntuにブリッジ接続して、外部のクライアントから直接接続できるようにしてみたいと思います。

12
9
0

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
12
9