WSLgでUbuntuを使えるようにするには

WSLgの世界へようこそ!

WSLg動作の前提条件

Windows 10 ビルド 19044 以降 または Windows 11 である必要があります。

WSLgとは

WSL2とWSLgについて簡単に説明します。WSL2は、仮想化技術を活用して実際のLinuxカーネルを使用しています。これにより、WSL2以前のバージョンであるWSL1よりも高速に動作し、Linux起動時のメモリ消費量が少なく済むため、より高速に起動できるようになっています。一方、WSLgは、WSL2の新機能の1つであり、Windows 11またはWindows 10(特定バージョン/ビルド以降)でのみ使用できます。WSLg(Windows Subsystem for Linux GUI)は、Windows上でLinux GUIアプリケーションを実行するための仕組みといえます。
一般的な仮想環境では、WindowsとLinuxは完全に隔離された環境と言えます。一方、WSLgでは、WindowsとLinuxを統合し、LinuxをWindowsと同じ使い勝手で利用することを目的に設計されています。たとえば、LinuxのGUIベースのアプリがWindows上でシームレスに動作します。ただし、現時点(2024年1月)のWSLgでは、Windows側の日本語IMEが利用できない制約があるため、WSL2に導入したLinuxディストリビューション側で日本語入力を対応させる必要があります。

本稿では、WSLgでUbuntuが利用できるようにするところまでを紹介します。

WSLgをインストールしよう

Windowsターミナルを管理者権限で起動します。
①タスクバーの検索フィールドに「ターミナル」と入力します。
②現れた検索結果の「ターミナル」を右クリックします。
③表示されたメニューの「管理者として実行」をクリックします。Windowsターミナル(ターミナル)が管理者権限で起動されます。

ターミナルでは図のように、コマンドの入力を促すプロンプトが表示されています。Windows PowerShellのプロンプトです。

WSLg環境の初期化をしよう

利用可能な Linux ディストリビューションの一覧を確認するには、以下に示すように「wsl –list –online」または「wsl -l -o」と入力します。
下のコマンド実行結果で、「Ubuntu」の行に”*”マークがついているのは、この後述べる「wsl –install」コマンドを実行した際の、デフォルトでインストールされるディストリビューションが「Ubuntu」であることを表しています。

まず、WSLgの実行環境を初期化するために、以下のコマンドを実行します。

wsl --install

この操作により、Linuxに最適化された軽量仮想マシン、WSL用カーネル、GUIを表示する機能などが読み込まれて初期設定されます。また、デフォルトの「Ubuntu」がインストールされます。下のように、コマンド引数にディストリビューションを指定することも可能です。

wsl --install <ディストリビューション名>

上のコマンド実行結果は以下の通りです。
途中でエラーが表示されますが、あわてる必要はありません。

PS C:\Users\win> wsl --install
ダウンロード中: Linux 用 Windows サブシステム 2.5.10
インストール中: Linux 用 Windows サブシステム 2.5.10
Linux 用 Windows サブシステム 2.5.10 はインストールされました。
Windows オプション コンポーネントをインストールしています: VirtualMachinePlatform

展開イメージのサービスと管理ツール
バージョン: 10.0.26100.1150

イメージのバージョン: 10.0.26100.4946

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
ダウンロードしています: Ubuntu
インストールしています: Ubuntu
必要な機能がインストールされていないため、操作を開始できませんでした。
エラー コード: Wsl/InstallDistro/Service/RegisterDistro/CreateVm/HCS/HCS_E_SERVICE_NOT_AVAILABLE
PS C:\Users\win>

上の表示で注目すべきは「VirtualMachinePlatform」コンポーネントがインストールされ、「要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。」と表示されている点です。
ここで上記メッセージの通り、Windowsを再起動します。
再起動の完了後、再びWindowsにログインし、以下のコマンドを実行します。

wsl --install

以下はコマンド実行時の出力結果です。

PS C:\Users\win> wsl --install
ダウンロードしています: Ubuntu
インストールしています: Ubuntu
ディストリビューションが正常にインストールされました。'wsl.exe -d Ubuntu' を使用して起動できます
Ubuntu を起動しています...
Provisioning the new WSL instance Ubuntu
This might take a while...
Create a default Unix user account: win

「Enter new UNIX username: 」の行に、任意のユーザ名を入力します。ここでのユーザ名とは、Linuxシステムのユーザ名であり、Windowsにサインインするときのアカウントとは別物なので、ご注意ください。Windowsのアカウント名と同じにする必要はありません。
続いて2回、パスワードの入力を求められます。Linux全般的にターミナルからのパスワード入力では、”*”など文字が何も表示されません。
以下に、ユーザ名とパスワードを入力して、プロンプトが表示されるまでを示します。

Create a default Unix user account: lin
New password:
Retype new password:
passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

lin@DESKTOP-3BUJRL9:/mnt/c/Users/win$

上の最終行はプロンプトで、次の形式です。

<LinuxユーザID>@<PCデバイス名>:<カレントディレクトリ>$

WSLの導入直後のカレントディレクトリは”/mnt/c/Users/win”、すなわちWindows上のユーザ名”win”のホームフォルダであることが、プロンプトでわかります。
以下のコマンドを実行してみます。

lin@DESKTOP-3BUJRL9:/mnt/c/Users/win$ pwd
/mnt/c/Users/win
lin@DESKTOP-3BUJRL9:/mnt/c/Users/win$ cd
lin@DESKTOP-3BUJRL9:~$ pwd
/home/lin

pwdコマンドはカレントディレクトリを表示するコマンドです。
cdコマンドを引数なしで実行すると、カレントディレクトリはホームディレクトリに移動します。そのことから、Linuxのユーザ名”lin”のホームディレクトリは”/home/lin”だとわかります。ホームディレクトリは、”~”という記号に置き換え可能なので、プロンプトでは”~”と表示されています。

コマンド「cat /etc/lsb-release」を実行して、ディストリビューションを確認します。

lin@DESKTOP-3BUJRL9:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.3 LTS"
lin@DESKTOP-3BUJRL9:~$

「DISTRIB_DESCRIPTION」の行の記述によって、Ubuntuのバージョンが分かります。

次に、新しいターミナルを起動して、Windows PowerShellのプロンプトから以下を実行すると、インストール可能なディストリビューションが一覧で表示されます。

PS C:\Users\win> wsl -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                            FRIENDLY NAME
AlmaLinux-8                     AlmaLinux OS 8
AlmaLinux-9                     AlmaLinux OS 9
AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
AlmaLinux-10                    AlmaLinux OS 10
Debian                          Debian GNU/Linux
FedoraLinux-42                  Fedora Linux 42
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
SUSE-Linux-Enterprise-15-SP7    SUSE Linux Enterprise 15 SP7
Ubuntu                          Ubuntu
Ubuntu-24.04                    Ubuntu 24.04 LTS
archlinux                       Arch Linux
kali-linux                      Kali Linux Rolling
openSUSE-Tumbleweed             openSUSE Tumbleweed
openSUSE-Leap-15.6              openSUSE Leap 15.6
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_10                Oracle Linux 8.10
OracleLinux_9_5                 Oracle Linux 9.5

同様に、Windows PowerShellのプロンプトから「wsl -l -v」を実行してみます。WSLのバージョン2(WSL2)が実行されています。

PS C:\Users\win> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2

これで、Ubuntuのインストールは完了です。

Ubuntuでは、次の二つのコマンドを実行することにより、インストールされているソフトウェアをまとめて最新にすることができます。
PowerShellからUbuntuのターミナルに移って以下を実行します。

sudo apt update
sudo apt -y upgrade

上記の”sudo”コマンドは、管理者権限で実行するためのものです。
下の例のように、「[sudo] linux のパスワード:」と表示され、管理者のパスワード入力を求められます。パスワードは、先ほどインストールの時に入力したパスワードです。

lin@DESKTOP-3BUJRL9:~$ sudo apt update
[sudo] password for lin:

スタートメニューからUbuntuを起動するには

上のように、[Ubuntu]等がメニューに登録され、起動ができるようになります。

WindowsターミナルからUbuntuを起動するには

WSLでのLinuxディストリビューション(Ubuntuなど)をインストール後、ターミナルを新たに起動すると、ターミナルの上部①(下図)から表示されるメニューにディストリビューションが追加されます。下の例では、Ubuntuが表示されています。

起動後のターミナルです。

GUIのゲームを起動してみよう

テトリス「Quadrapassel」をプレイしてみます。落ちてくるブロックを回転や移動させながら、横一列に敷き詰めて消していくゲームです。
ターミナルから以下のコマンドを実行して、インストールします。

$ sudo snap install quadrapassel

「Quadrapassel」を起動します。

$ quadrapassel

無事、起動できました。
キーボードの矢印キーを使って操作します。

操作キー
左に移動
右に移動
下に加速
落とすスペース
回転

ログを抑止するには

「Quadrapassel」実行中は、ターミナルに大量のログが表示されます。次のように起動すれば、ログの表示を抑止することができます。

$ quadrapassel >/dev/null 2>&1

最後に

WSLgの世界は、これからさらに便利に使いやすくなっていくとおもわれますので、皆様もぜひ注目ください。