Windows 11にWSL 2、WSLgをインストール

2021年7月10日WSL 2Linux,Ubuntu,Windows,Windows 11,WSL2

Windows11のInsider Previewで、WSL2とWSLgをインストールしてみました。

WSL2 (Windows Subsystem for Linux)は、Windows上でLinuxを動かす仕組み(の第2世代)で、Ubuntuなどのディストリビューションをインストールすれば、Windows上でUbuntuのアプリが利用できます。また、WSLg (Windows Subsystem for Linux GUI)は、WSL2にインストールしたGUIアプリを利用する仕組みです。従来は、VcXsrvなどのXサーバーアプリを経由してGUIアプリを表示させる設定が必要でしたが、Win10 Insider PreviewからはWSLgのプレビュー版が配信され、VcXsrvなどを入れなくてもGUIアプリが利用できるようになりました。

現在、Windows11のInsider Previewが配信されていますが、それでもWSL2やWSLgが使えるみたいですので、インストール方法と使い方をまとめました。

話の前提

この記事は、執筆時点で配信されている、Windows 11 Pro Insider Previewを使用して確認しています。OSのバージョンは21H2、ビルドは22000.65です。また、実機ではなく、Windows 10のHyper-V中にインストールしたWindows 11で確認しています。

Windows 11のインストールに関しては、こちらの記事にまとめています。良ければ合わせてご覧ください。

Windows11、WSLgともに開発途上のソフトですので、正式リリース版では本記事の内容と異なる箇所があるかもしれません。

WSL2 と Ubuntu 20.04 を インストール

インストールには管理者権限が必要なため、管理者権限でcmdなどを開きます。Windows 11では、Windows Terminalがプリインストールされていますので、せっかくなので使ってみたいと思います。

スタートボタンを右クリックし、「Windows Terminal (Admin)」を開きます。

スタートボタンを右クリックし、管理者権限でPowerShellを開きます

UACのメッセージが表示されますので、「はい」をクリックします。

UACメッセージが出ますので、「はい」を押します

インストール可能なディストリビューションを調べるため、wsl --list --onlineを実行します。

PS C:\Users\username> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
既定の分布は ' * ' で表されます。
 'wsl --install -d <Distro>'を使用してインストールします。

  NAME            FRIENDLY NAME
* Ubuntu          Ubuntu
  Debian          Debian GNU/Linux
  kali-linux      Kali Linux Rolling
  openSUSE-42     openSUSE Leap 42
  SLES-12         SUSE Linux Enterprise Server v12
  Ubuntu-16.04    Ubuntu 16.04 LTS
  Ubuntu-18.04    Ubuntu 18.04 LTS
  Ubuntu-20.04    Ubuntu 20.04 LTS
インストール可能なLinuxディストリ一覧です

「規定の分布」というのは「規定の(デフォルトに設定されている)ディストリビューション」の誤訳でしょう。ディストリ名を指定せずにインストールを実施すると、無印の「Ubuntu」がインストールされるものと思います。ちなみに、無印「Ubuntu」は「最新のUbuntu」の意味で、上記の例でいえば「Ubuntu-20.04」と中身は同じです。が、表面上は「Ubuntu」と「Ubuntu 20.04」は別物として扱われており、それぞれ別環境として設定していくことも可能です。

ここでは、ディストリビューションとして「Ubuntu-20.04」を指定してインストールしてみたいと思います。コマンドは上記の説明の通り、wsl --install -d Ubuntu-20.04です。緑の部分は、使いたいディストリ名に読み替えてください。また、このコマンドは管理者権限が必要で、10分くらいかかります。

PS C:\Users\username> wsl --install -d Ubuntu-20.04
インストール中: 仮想マシン プラットフォーム
仮想マシン プラットフォーム はインストールされました。
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム はインストールされました。
ダウンロード中: WSL カーネル
インストール中: WSL カーネル
WSL カーネル はインストールされました。
ダウンロード中: GUI アプリ サポート
インストール中: GUI アプリ サポート
GUI アプリ サポート はインストールされました。
ダウンロード中: Ubuntu 20.04 LTS
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要
があります。
1コマンドで全自動でセットアップしてくれます

Windows 11(Windows 10のInsider Preview以降)では、設定メニューを探し回らなくても、上記コマンド一つだけで各種設定やインストールを行ってくれます。上記コマンドで行ってくれるのは、次の通りです。(カッコ内に、対応する手動操作です。これらを自動で行ってくれます)

  • 仮想マシン プラットフォーム のインストール
    (設定 > アプリ > Optional features > Windows のその他の機能 の設定)
  • Linux 用 Windows サブシステム のインストール
    (設定 > アプリ > Optional features > Windows のその他の機能 の設定)
  • WSL カーネル のインストール
    (多分、https://aka.ms/wsl2kernel をインストールしている)
  • GUI アプリ サポート のインストール
    (多分WSLgのことで、Win10 Insider Previewでいう wsl --update を実行している)
  • Ubuntu 20.04 LTS のインストール
    (Microsoftストアから「Ubuntu 20.04」アプリをインストール)

上記のコマンドが終わると、システムの再起動を求められますので、一旦再起動します。

再起動を求められた場合は、再起動します

再起動後、Ubuntu 20.04 アプリが自動起動して初期設定が始まります。(タスクバーに隠れているかもしれません)

再起動後、続きの設定が再開されます

しばらくすると下記の画面になります。これはUbuntu 20.04のユーザーアカウントを作成する画面ですので、画面の案内に従ってユーザー名とパスワードを入力します。あくまでLinux側のユーザーアカウントですので、必ずしもWindows 11のユーザー名と同じにする必要はありません。(パスワード入力画面は、キー入力しても「●●●」などとは表示されませんが、入力できています)

Ubuntu側のユーザーアカウント作成画面です
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: (Ubuntu側で使用するユーザー名を入力して[Enter])
New password:(パスワードを入力して[Enter]。※表示されません)
Retype new password:(同じパスワードを再入力し[Enter]。※表示されません)

その後、下記のようにプロンプトが表示されたら初期設定完了です。

Ubuntuの初期設定が完了しました
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.72-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat Jul 10 10:56:48 JST 2021

  System load:  0.0                Processes:             8
  Usage of /:   0.4% of 250.98GB   Users logged in:       0
  Memory usage: 3%                 IPv4 address for eth0: 172.23.18.86
  Swap usage:   0%

0 updates can be installed immediately.
0 of these updates are security updates.


The list of available updates is more than a week old.
To check for new updates run: sudo apt update


This message is shown once once a day. To disable it please create the
/home/username/.hushlogin file.
username@Win11HyperV:~$  (プロンプトが表示されたらインストール完了)

WSLg を試してみる

Ubuntu 20.04のセットアップが完了しましたので、実際にWSLgを使ってGUIアプリの使用を試してみたいと思います。ここまでセットアップが完了したら、Windows Terminalの方にUbuntu 20.04のプロファイルが追加されています。Windows Terminalの方が使いやすいですので、以降はこちらを使うことにします。

Windows Terminal で Ubuntu 20.04 を起動する

Windows Terminalは、スタートボタンを右クリックして「Windows Terminal」を選択すると起動できます(これ以降、管理者権限は要りません)。もしくは、スタートメニュー右上の「すべてのアプリ」を押してWindows Terminalを起動します(検索欄に「term」などと入力しても出てきます)。

Windows Terminalを起動したら、タブバーの「v」ボタンを押し「Ubuntu-20.04」を選択します。(この項目は、前述のUbuntu ユーザーアカウントの作成を行うと出てきます)

Ubuntuを起動します

これで、Windows TerminalでUbuntu 20.04が起動できました。

Ubuntuが起動できました

ちなみに、初期設定だとUbuntuを起動したときのカレントディレクトリが「/mnt/c/Users/<Winユーザー名>/」になっています。こちらは、Windows 11側のユーザーディレクトリ(%USERPROFILE%)です。この例のように、WSLでは、Windows側の各ドライブが/mnt/以下にマウントされています。

また、Ubuntu起動時のカレントディレクトリは、Windows Terminalの設定から変更できます。設定欄は、タブバーの「v」 → 設定 → 左列から「Ubuntu-20.04」 → ディレクトリの開始 欄です(「ディレクトリの開始」は、「開始ディレクトリ」の誤訳と思われます)。その他、「外観」タブでは配色やフォントも変えられますから、お気に入り設定がある方はカスタムしておきましょう。

開始ディレクトリはこちらから変更できます

Ubuntu環境をアップデートする

Ubuntuをセットアップした直後は、Ubuntu環境の各パッケージが古いですので、全体的にアップデート(apt upgrade)しておきましょう。sudo apt update && sudo apt upgrade -y を実行します。直後に、sudo昇格のためパスワードを聞かれますので、上記で設定したパスワードを入力します。なお、コマンドの末尾につけている-yは、途中で聞かれる「インストールを継続しますか?」の問いに「Yes」と答えるための引数です(以下同様)。

username@Win11HyperV:/mnt/c/Users/username$ sudo apt update && sudo apt upgrade -y
[sudo] password for username: (ここでパスワードを入力し[Enter])
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]

(中略)

Processing triggers for man-db (2.9.1-1) ...
Processing triggers for ca-certificates (20210119~20.04.1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Processing triggers for initramfs-tools (0.136ubuntu6.6) ...
username@Win11HyperV:/mnt/c/Users/username$

プロンプトが戻ってきたら完了です。

GUIアプリをインストール

GUIアプリをインストールして、WSLgが正常に動くがチェックしてみたいと思います。

ここでは、軽量なxeyesなどのアプリが入った「x11-apps」をインストールするため、sudo apt install x11-apps -y を実行します。

username@Win11HyperV:/mnt/c/Users/username$ sudo apt install x11-apps -y
Reading package lists... Done
Building dependency tree
Reading state information... Done

(中略)

Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
username@Win11HyperV:/mnt/c/Users/username$

エラーなくプロンプトが帰ってきたらインストール完了です。

それでは、xeyesを実行してみたいと思います。xeyes を実行し、下図のように目玉が表示されたら成功です。(GUI初回起動時は少し時間がかかるみたいです)

通常通り、GUIアプリも起動できます

重量級アプリも入れてみる

軽量なGUIアプリが動くことが確認できましたので、重量級アプリも動くのか確認してみたいと思います。

Ubuntuのリポジトリーに含まれるソフトであれば、aptコマンドでインストールできます。ここでは、Firefox、Blender、LibreOfficeをインストールしてみたいと思います。

sudo apt install firefox blender libreoffice -y を実行します。

username@Win11HyperV:/mnt/c/Users/username$ sudo apt install firefox blender libreoffice -y
(中略)
username@Win11HyperV:/mnt/c/Users/username$

しばらく時間がかかると思いますが、こちらもプロンプトが戻ってきたらインストール完了です。

では、実際に起動してみたいと思います。GUIアプリは、フォアグラウンドで起動するとBashの制御が奪われてしまいますので、バックグラウンドで起動するため末尾に & をつけて起動します。

$ firefox &
$ blender &
$ libreoffice &
重量級アプリもWSL2で動かせます

いずれも正しく起動しました。ただ、日本語は正しく表示されていません(Wikipedia画面のEnglishの右には本来「日本語」と書かれています)。また、Windows 11のIMEをオンにしても日本語入力はできません。

日本語表示、日本語入力に関しては、別記事にまとめましたので、こちらをご覧ください。(ただし、Firefoxの日本語文字化けは直りませんでした)

また、Firefoxに関しては、次の記事で紹介したWindows 10 Insider PreviewのWSLgと同様、右クリックの挙動がおかしいです。

WSLgアプリ起動方法

WSL2中にインストールしたGUIアプリの起動方法はいくつかあります。

Ubuntu側からGUIアプリを起動する

1つ目は、前項で紹介した、UbuntuのBashから起動したいコマンドを実行する方法です。

前述の通り、BashからGUIアプリを起動すると、Bashの制御が奪われてしまいますので、末尾に&をつけてバックグラウンドで起動しましょう。

$ firefox &
UbuntuのBashから起動する場合は、末尾に「&」をつけます

Windows側からwslgコマンドでGUIアプリを起動する

2つ目は、Windows 11側のPowerShellやコマンドプロンプトから起動する方法です。wslgコマンドを使用して起動します。書式は wslg -d <ディストリビューション名> <起動したいコマンド> です。複数のディストリビューションをインストールしている場合は、-dオプションで「どのディストリで起動するか」を指定できます。-dを指定しない場合は、デフォルト設定となっているディストリでアプリが起動します。

こちらは、コマンド実行後にすぐ制御が戻ってきます。なお、ディストリ名やアプリ名が間違っていたり、指定したディストリにアプリが入っていない場合でも、エラーなくプロンプトが戻ってきます。しばらく待っても起動しない場合は、ディストリ名やアプリ名が間違っていないか確認してみてください。

PS C:\> wslg -d ubuntu-20.04 firefox
Windows側から、wslgコマンドで起動することもできます

WindowsのスタートメニューからGUIアプリを起動する

3つ目は、Windows 11のスタートメニューから起動する方法です。WSL2側でインストールしたGUIアプリは、自動でスタートメニューにも追加されます。ちなみに、ここに並んでいるものは、2つ目の方法で紹介したwslgコマンドで実行するショートカットです。

GUIアプリをインストールすると、スタートメニューにもショートカットが作成されます

失敗談とトラブルシューティング

Error: 0x80370102 が出る場合

インストールの際、wsl --install -d Ubuntu-20.04 を実行して再起動後、Ubuntuを起動すると、下記エラーでUbuntuが起動しないことがあります。

Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Error: 0x80370102 ??????????????????????????????????????

Press any key to continue...
Error: 0x80370102 が出る場合は、UEFI (BIOS)設定でCPUの仮想化技術を有効にしてください

これは、CPUの仮想化技術関連が使えない(機能がない or 無効になっている)場合に出ます。最近のCPUであれば仮想化技術が使えると思いますので、UEFI (BIOS)設定からCPUの仮想化技術を有効にしてみてください。

Hyper-Vの場合はNested VM(入れ子VM)の設定を行う必要があります。

WSLgのインストールが途中で止まり、アプリを起動するとError: 0x80072eff が出る場合

wsl --install -d Ubuntu-20.04 が途中で止まってしまう場合があります。もう一度実行しても何も起きないので、正常にインストールできたように見えますが、実際に起動してみると0x80072effエラーで起動しないことがあります。

正常にWSLgがインストールできている場合、echo $DISPLAY をすると「:0」と表示されますが、本エラーが出るときは、echo $DISPLAY が空欄だったりします。この場合、WSLgのインストールに失敗した可能性がありますので、一旦、WSL関連のソフトをアンインストールしてから再インストールを試してみてください。

おそらく、設定 > アプリ > アプリと機能 から、次のものをアンインストールすればよいと思います。

  • Windows Subsystem for Linux Update
  • Windows Subsystem for Linux WSLg Preview

(私の場合、Hyper-Vのスナップショットで古い状態に戻してしまったので、再インストールで解決するかは確認できていません)

参考サイト

この記事は、MicrosoftのWSLgのページを参考にしました。

こちらの記事もどうぞ

WSL2+WSLg環境を日本語化して、日本語表示や日本語入力を行いたい場合は、こちらの記事をご覧ください。

WSL2でCUDAを使いたい場合(CUDA on WSL)は、こちらの記事を参考にセットアップしてみてください。

また、Windows 11でWSL2バックエンドなDocker Desktopをインストールする方法も紹介しています。


その他、Windows 11関連の記事もいくつか書いていますので、よければご覧ください。

次の記事では、Windows 11をクリーンインストールする方法を紹介しています。

Windows 11へリモートデスクトップ接続したい場合は、こちらの記事をご覧ください。


現行のWindows 10(正式リリース版)で、WSL2やWSL上でのGUIアプリを利用する方法は、こちらの記事で紹介しています。

また、Windows 10のInsider PreviewでWSLgを使ってみた時の記事はこちらです。