LoginSignup
2
2

WSL で Ubuntu 24.04 の GUI に リモートデスクトップ接続する環境を作成する

Last updated at Posted at 2023-04-29

WSL 上に Ubuntu 24.04 を インストールしてリモートデスクトップ接続できるようにします。

前提条件

WSL が version 2 としてインストールされている必要があります。

WSL を まだ インストールしていない人は、他のサイトでインストール・初期設定してください。

Ubuntu 24.04 イメージを直接 Ubuntu の サイトから ダウンロードして 環境構築します。

この手順では C:\WSL-Disk に WSL 用の環境を作ります。

インストールイメージのダウンロード

Ubuntu WSL Images

から noble をクリックして その中にある current の中から ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz を選んで ダウンロードして
C:¥WSL-Disk\initial-image ディレクトリに保存します。

コマンドで行う場合
PowerShell を開いて

mkdir C:\WSL-Disk\initial-image
cd C:\WSL-Disk\initial-image
curl https://cloud-images.ubuntu.com/wsl/noble/current/ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz -o ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz

WSL 上に Ubuntu 23.04 をインストールして 初期設定

以下のコマンドは PowerShell から行ってください。

先ほどダウンロードした Ubuntu イメージを Ubuntu-24.04-gui1 という名前でインポートします。

mkdir C:\WSL-Disk\Ubuntu-24.04-gui1
cd C:\WSL-Disk\
wsl --import Ubuntu-24.04-gui1 Ubuntu-24.04-gui1 C:\WSL-Disk\initial-image\ubuntu-noble-wsl-amd64-wsl.rootfs.tar.gz

この Ubuntu-24.04-gui1 に 管理者でログインします。

wsl -d Ubuntu-24.04-gui1 -u root

必要なアプリのインストール

apt-get update && apt-get install xfce4 xfce4-goodies xrdp -y

xrdp の 接続ポートを 13389 に変更します。

sed -i -e 's|^port=[0-9]*$|port=13389|g' /etc/xrdp/xrdp.ini

ユーザが xfce4 デスクトップに接続できる設定

echo "startxfce4" > /etc/skel/.xsession 

リモートデスクトップで利用するためのユーザを追加します。
パスワードを聞かれるので必要に応じて入力してください。

adduser user

ユーザが sudo できるように権限設定します。

usermod -G sudo user

一旦、WSL から出ます。

exit

WSL 上の Ubuntu から PowerShell に戻ってきました。

WSL にログインするデフォルトユーザを変更します。

Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };

WSL-SetDefaultUser Ubuntu-24.04-gui1 user

今度は WSL の Ubuntu-24.04-gui1 に 一般ユーザでログインします。

WSL -d Ubuntu-24.04-gui1

xrdp サービスを起動します。

sudo /etc/init.d/xrdp start

すると
image.png
と表示されます。

これで リモートデスクトップで ポート番号 localhost:13389 で 接続できるようになりました。

リモートデスクトップ接続で 接続します。

image.png

ログイン画面が 表示されたら ユーザ名・パスワードを入力して ログインします。

image.png

ログインできたら 下記のような画面が表示されます。

image.png

GUI 起動を簡単にする ショートカットの作成

WSL を簡単に起動できるためのショートカットを作成します。

WSL に 管理者でログインします。

wsl -d Ubuntu-24.04-gui1 -u root

sudo /etc/init.d/xrdp start をパスワード無しで実行できるように設定します。

echo "user ALL=(ALL:ALL) NOPASSWD:/etc/init.d/xrdp"> /etc/sudoers.d/90_xrdp

WSL から 抜けます。

exit

下記の内容でバッチファイルを作成します。
ファイル名は WSL-GUI起動.bat などでいいでしょう。

wsl -d Ubuntu-24.04-gui1 sudo /etc/init.d/xrdp start
powershell.exe [System.Threading.Thread]::Sleep(3000);
start mstsc.exe /v:localhost:13389
wsl -d Ubuntu-23.04-gui3 tmux new -s backgroundsession

tmux を使うことで WSL が自動シャットダウンする事を防いでいます。
コマンドを実行して最後に表示されるターミナルが不要な場合 「×」で閉じてください。
exit コマンドで 閉じると WSL が自動シャットダウンしてしまいます。

日本語環境の設定

に書かれている手順を参考に 以下のコマンドを実行します。

Ubuntu に GUI でログインします。

画面下にある Terminal Emulator を起動して 下記のコマンドを実行します。

日本語パッケージのインストール

sudo apt -y install language-pack-ja
sudo update-locale LANG=ja_JP.UTF8
sudo apt install -y fcitx-mozc 

ユーザのログイン時に 日本語入力 IME 起動できる設定

cat << 'EOS' | tee -a ~/.profile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
EOS

mkdir ~/.config/autostart -p
cat << 'EOS' > ~/.config/autostart/fcitx.desktop
[Desktop Entry]
Type=Application
Name=Fcitx Autostart
Exec=fcitx-autostart
EOS

※ Ubuntu 24.04 で動きが変更になったのか? $SHLVL 環境変数の判定処理をオリジナルから変更しています。

WSL を 一旦終了させます。

wsl -t Ubuntu-24.04-gui1

もう一度 WSL の Ubuntu にリモートデスクトップ接続でログインします。
すると下記のように日本語入力できるようになりました。

image.png

まとめ

Windows 上から Ubuntu の GUI 環境を簡単に作る手順を紹介しました。

もう一度最初から 作り直したい場合

WSLイメージが肥大化してきたので小さいイメージからやり直す手順 - Qiita

の手順を参考に 最初から 環境を構築したり

別の名前で 環境を構築することもできます。

コマンドで一括設定

上記手順を PowerShell に コピー&ペーストして環境を作る手順です。

PowerShell で実行
$Distro = "Ubuntu-23.04-gui"
$WSLDir = "C:\WSL-Disk"
mkdir $WSLDir\initial-image
cd $WSLDir\initial-image
curl https://cloud-images.ubuntu.com/wsl/lunar/current/ubuntu-lunar-wsl-amd64-wsl.rootfs.tar.gz -o ubuntu-lunar-wsl-amd64-wsl.rootfs.tar.gz
cd $WSLDir
mkdir $WSLDir\$Distro
cd $WSLDir
wsl --import $Distro $Distro $WSLDir\initial-image\ubuntu-lunar-wsl-amd64-wsl.rootfs.tar.gz
wsl -d $Distro -u root
WSL で実行
apt-get update && apt-get install xfce4 xfce4-goodies xrdp -y
sed -i -e 's|^port=[0-9]*$|port=13389|g' /etc/xrdp/xrdp.ini
echo "startxfce4" > /etc/skel/.xsession 
adduser user --disabled-password --gecos ""
echo user:'password' | /usr/sbin/chpasswd
usermod -G sudo user
echo "user ALL=(ALL:ALL) NOPASSWD:/etc/init.d/xrdp"> /etc/sudoers.d/90_xrdp
exit
PowerShell で実行
Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };
WSL-SetDefaultUser $Distro user
wsl -d $Distro sudo /etc/init.d/xrdp restart && start mstsc.exe /v:localhost:13389 && wsl -d $Distro tmux new -s backgroundsession

リモートデスクトップ画面が開くので ユーザ名 user パスワード password でログインします。

RDP ポートのポート番号変更

RDP ポートのポート番号を 23389 に変更する場合下記の手順を行います。

PowerShell で実行

wsl -d $Distro -u root -e sed -i -e 's|^port=[0-9]*$|port=23389|g' /etc/xrdp/xrdp.ini
wsl -d $Distro sudo /etc/init.d/xrdp restart && start mstsc.exe /v:localhost:23389 && wsl -d $Distro tmux new -s backgroundsession

参考

tmux を利用すると自動シャットダウンしない。
https://devblogs.microsoft.com/commandline/tmux-support-arrives-for-bash-on-ubuntu-on-windows/

2
2
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
2
2