WSL2にUbuntu Desktop環境をインストールしてみた

2020年8月9日WSL 2Linux,Ubuntu,Windows,WSL2

Windows 10のWSL2(Windows Subsystem for Linux)のUbuntu 20.04に、デスクトップ環境(Ubuntu Desktop)をインストールしてみました。

Windows 10の仮想環境でUbuntuのデスクトップ環境を使うというと、通常はVirtualBoxやVMWare、Hyper-V+RDP(リモートデスクトップ接続)などを使うと思いますが、フレームレートが低いため個人的にはレスポンスが悪いように感じます(設定が悪いだけかもしれません)。

対して、WSL2のUbuntu+VcXsrvでは、フレームレートが高いため、サクサク感があります。

WSL2のインストール

まだWindowsにWSL2をインストールしていない、という方は、こちらを参考にWSL2とUbuntu 20.04をインストールしてください。

Windows側でVcXsrvを設定

まず始めに、GUI環境を表示する先として、Windows側にXサーバーをインストールします。今回は、XサーバーソフトとしてVcXsrvを使用します。

VcXsrvのインストールと設定は上記の記事をご覧ください。ただし、「Display setting」の所では、「Multiple windows」ではなく「One large window」を選択してください。

理由は、「Multiple windows」のままUbuntu Desktop環境を起動すると、フルスクリーンでUbuntuの画面が表示されてしまって扱いづらいためです。

設定が終わると、ただの黒い画面が表示されます。後ほど、ここにUbuntu Desktopが表示されます。

One large windowでVcXsrvを起動すると、こんな感じの画面が出てきます

Ubuntu Desktopのインストール

Ubuntu Desktop自体は、コマンド一つでインストールできるのですが、そもそもUbuntu Desktopを動かすには、WSL2でGUIアプリが動くように設定してある必要があります。

まっさらなWSL2+Ubuntu 20.04の状態からUbuntu Desktopをインストールする場合と、既にGUIアプリが動くように設定済みの場合の、2パターンでインストール方法をまとめました。どちらか適切な方でインストールしてください。

まっさらなUbuntu 20.04にUbuntu Desktopをインストールするには

WSL2をインストール → Microsoftストアで「Ubuntu 20.04」アプリをインストール → 「Ubuntu 20.04」アプリを起動 → Unixユーザーの作成とパスワードの設定をしただけ、という所から環境を構築する人向けにBashスクリプトを用意しました。

これを任意の場所に保存して実行すれば、関連ソフトのインストールと初期設定ができます(例えば、Windows上のC:\init.shに保存したとすると、Ubuntu上でbash /mnt/c/init.shを実行すればOKです)。結構時間がかかります。

#!/bin/bash
# Copyright (c) 2020 astherier
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
#
#WSL2+Ubuntu 20.04でGUIアプリが動くように設定し、Ubuntu Desktopをインストールします

function guide_exit(){
    echo "終了しました。"
    echo "環境変数の設定をしていますので、bashの再起動か"
    echo " $ source ~/.profile"
    echo "を実行してください。"
    exit 0
}

# https://astherier.com/blog/2020/07/install-wsl2-on-windows-10-may-2020/
#WSL環境の各パッケージをアップデートします。
sudo apt update -y
sudo apt upgrade -y

# https://astherier.com/blog/2020/08/run-gui-apps-on-wsl2/
#GUIアプリを動かすため、いくつかソフトを入れて設定します。
#Windows側の設定も必要です。詳細はリンクを見てください。
sudo apt install -y libgl1-mesa-dev xorg-dev xbitmaps x11-apps

echo 'export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '\''{print $2}'\''):0.0' >> ~/.profile

cat << EOS | sudo tee /etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>
EOS
#起動確認:
# $ xeyes

#https://astherier.com/blog/2020/08/install-ubuntu-desktop-on-wsl2/
#Ubuntu Desktopのインストール
sudo apt -y install ubuntu-desktop
sudo service x11-common start
sudo service dbus start
#起動確認:
#WSLの再起動(管理者権限PowerShellでnet stop LxssManager)をし、
#VcXsrvの設定を変更し、
# $ sudo service x11-common start && sudo service dbus start && gnome-shell --x11 -r

guide_exit 

上記を実行したら、環境変数を読み込み直すため、source ~/.profileを実行します。

$ source ~/.profile

これで準備完了です。ここまで終わったら、起動確認のためUbuntu Desktopを起動するに進んでください。

GUIアプリが動く環境にUbuntu Desktopをインストールするには

既にGUIアプリが動くように設定済みの場合は、単にUbuntu DesktopをインストールするだけでOKです。ここでは、こちらの記事の Ubuntu側にGUIアプリをインストール の設定が終わっている前提で話を進めます。

Ubuntu Desktopをインストールするには、次のコマンドを実行します。

$ sudo apt install ubuntu-desktop

依存ソフトも大量にインストールされるため、結構時間がかかります。

インストールが終わったら、関連サービスを起動します。

$ sudo service x11-common start
$ sudo service dbus start

これで準備完了です。

Ubuntu Desktopを起動する

早速、Ubuntuのデスクトップ環境を起動してみます。起動するには次のコマンドを実行します。

$ sudo service x11-common start && sudo service dbus start && gnome-shell --x11 -r

サービスの起動は既に行っていますので本来不要ですが、Ubuntuを閉じるとサービスも止まってしまうことがあるようなので、上記のコマンドが良さそうです。

Windows側のVcXsrvにUbuntuのデスクトップ環境が表示されたら成功です。通常のUbuntuと同じように、マウス操作でいろいろ操作できます。

WSL2のUbuntu 20.04でUbuntu Desktopが動いています

冒頭で「サクサク」と書きました。マウスでウィンドウを移動したり、動画を視聴したりしても高フレームレートで表示されて、サクサク感はあります。

ただし、動画をフルスクリーンで再生したりすると、かなり負荷が大きく、Core i7 9700KのCPU使用率が50~60%くらい、GeForce RTX 2080のGPU使用率が30%くらいになります。また、(LANを経由しているわけではないと思いますが、)WSLの仮想イーサネットが4Gbpsくらい通信しています。

なので、WSL2でデスクトップ環境を動かしてパフォーマンスを求めるのはやめた方が良さそうです。

参考サイト

この記事は、こちらのページを参考にさせていただきました。

おすすめの記事

本記事の解説の場合、日本語フォントが表示できるように設定していますが、日本語の入力はできません。日本語入力も必要な場合は、こちらをご覧ください。

また、Ubuntu側で音を鳴らしたい場合は、こちらの記事が参考になると思います。

ついでに、Ubuntu 20.04にGoogle Chromeをインストール方法もまとめています。こちらもどうぞ。

created by Rinker
SB Creative
¥2,970(2020/12/04 15:14:38時点 楽天市場調べ-詳細)
著者・三宅英明
Bashシェルスクリプトをイチから学べる本です。よく見かけるものの一見トリッキーな「ifの条件式にコマンドを書く」、「&&や||でコマンドをいくつか並べる」などの書き方も、一つ一つ細かく動きを解説していて分かりやすかったです。また、grep、sed、xargs、getoptなどの使い方や正規表現についても、詳細に説明があります。
網羅的に書かれており、辞書的に使えるおすすめの書籍です。