Windows 10にWSL2をインストールする

2020年7月29日コンピューターLinux,Ubuntu,Windows,WSL,超長い記事(4000字以上)

Windows 10には「WSL(Windows Subsystem for Linux)」という、Windows上でLinuxディストリビューションを動かす仕組みがあります。Windows 10 May 2020になって、このWSLもバージョン2にアップデートされました。

WSL2は、WSL1よりもよりネイティブにLinuxが動くようになり、DockerもWSL2に対応したものが公開されているようです。今回は、このWSL2をインストールしてみました。ついでに、WSL1時代にインストールしていたUbuntu 18.04もWSL2で動くように設定します。

システム要件の確認

WSL2はWindows 10の中でも「バージョン2004(May 2020 Update)・ビルド19041以上」である必要があります。

バージョンやビルドの確認は、Win+R(ファイル名を指定して実行)で「winver」と入力してOKを押します。次の画像のように、バージョンが2004以上、ビルドが19041以上であれば問題ありません。

古いバージョン、ビルドだった場合は、Windowsのアップデートを確認してみましょう。バージョン2004が配信されていたら、アップデートします。

環境によっては、既知の不具合が報告されていて2004へのアップデートがブロックされているかもしれません。Insider Previewを使ったら配信されるかもしれませんが、基本的には配信されるまで待った方が無難でしょう。

WSL2をインストールする

WSL2をインストールしていきます。

これ以降PowerShellを使っていますが、次の2つのコマンドと同等のことは「設定」アプリ → 「アプリ」 → 左の欄から「アプリと機能」 → 「オプション機能」 → 右の欄の「Windowsのその他の機能」からもできるはずです。

まず、管理者権限でPowerShellを開きます。"Linux 用 Windows サブシステム"をオンにするため、dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartを実行します。

PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.329
イメージのバージョン: 10.0.19041.388
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

一度再起動しておきます。

もう一度、管理者権限でPowerShellを開きます。"仮想マシン プラットフォーム"をオンにするため、dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartを実行します。

PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.329
イメージのバージョン: 10.0.19041.388
機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

もう一度再起動します。

次に、WSL2を既定のWSLバージョンとして設定します。こちらの設定を行うと、それ以降インストールするLinuxディストリビューションはWSL2で実行されます。(デフォルトバージョンは、後からでも変更可能です)

PowerShellを(一般ユーザー権限で)開いて、wsl --set-default-version 2を実行します。

PS C:\> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

このとき、「カーネルコンポーネントが必要です」的なメッセージでhttps://aka.ms/wsl2kernelに行くように出てくる場合は、そちらのURLの指示に従ってLinuxカーネルの更新を行ってから、再度上記のコマンドを実行します。

Linuxディストリビューションのインストール

MicrosoftストアからLinuxディストリビューションをインストールします。

今回はUbuntu 20.04をインストールします。Microsoftストアのリンクはこちらです。

続いて、Linux側の初期設定を行っていきます。WindowsのスタートメニューからUbuntu 20.04を起動します。

初回起動時は、数分間待たされます。その後、一般ユーザー作成の案内が表示されますので、それに従ってユーザーを作成します。ユーザー名を入れた後、パスワードを2回入力します(パスワードは、***や●●●も表示されませんが、入力できています)。このユーザー名やパスワードは、Windowsログイン時のものと違くてOKです。

下図のように、プロンプトが表示されたら完了です。

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: ユーザー名
New password:
Retype new password:
passwd: password updated successfully
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 4.19.104-microsoft-standard x86_64)

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

  System information as of Sun Jul 26 11:37:17 JST 2020

  System load:  0.13               Processes:             8
  Usage of /:   0.4% of 250.98GB   Users logged in:       0
  Memory usage: 0%                 IPv4 address for eth0: 192.168.245.214
  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/ユーザー名/.hushlogin file.
ユーザー名@ホスト名:~$

最後に、念のためUbuntu 20.04環境のバージョンアップをしておきます。apt updateapt upgradeでインストール済みパッケージのバージョンアップができます。(sudoのパスワードは、Unixユーザー作成時に入力したパスワードです)

ユーザー名@ホスト名:~$ sudo apt update
出力省略

ユーザー名@ホスト名:~$ sudo apt upgrade
出力省略

「wsl」コマンドの補足

WSLをインストールしている環境では、PowerShellやコマンドプロンプトから「wsl」というコマンドが利用できます。これについていくつか説明しておきます。

WSLのバージョンの確認

前述の説明でインストールしたUbuntu 20.04が、ちゃんとWSL2で動いているのか確認してみます。

コマンドプロンプトかPowerShellから、wsl --list --verboseを実行します。こちらのコマンドを実行すると、インストール済みのLinuxディストリビューション、WSLバージョン、デフォルトのLinuxディストリビューション(アスタリスク)が確認できます。

PS C:\> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         1
  Ubuntu-20.04    Running         2

Ubuntu 20.04は「VERSION:2」となっており、WSL2で実行されていることが分かります。私の場合、以前WSL1時代にUbuntu 18.04をインストールしていたので、2つのLinuxディストリビューションが列記されています。

WSLバージョンの変更

インストールしたLinuxディストリビューションをWSL1で動かすかWSL2で動かすかは、後からでも変更できます。

試しに、現在WSL1で動いているUbuntu 18.04を、WSL2で動くように設定してみます。

コマンドの書式は、wsl --set-version <distribution name> <versionNumber>です。実際に実行してみると、WSLバージョンの変更のため数分間待たされます。

PS C:\> wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。

もう一度リストを表示します。

PS C:\> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         2
  Ubuntu-20.04    Running         2

Ubuntu 18.04も「VERSION:2」になりました。

同様に、WSL1に戻すこともできます

デフォルトで起動するLinuxディストリビューション

上記のリストでUbuntu 18.04にアスタリスクが付いていますが、これはデフォルトで起動するLinuxディストリビューションであることを示します。つまり、コマンドプロンプトやPowerShellから「wsl」コマンドを実行すると、Ubuntu 18.04が起動します。

せっかくなので、デフォルトをUbuntu 20.04に変更してみます。

デフォルトの変更は、wsl --set-default <distributionName>です。

PS C:\> wsl --set-default Ubuntu-20.04

何も表示されず、プロンプトが帰ってきたらOKです。もう一度リストを表示してみます。

PS C:\> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         2
  Ubuntu-18.04    Stopped         2

Ubuntu 20.04がデフォルトになりました。

これで、コマンドプロンプトなどからwslと打つだけで、Ubuntu 20.04が起動します。

PS C:\> wsl
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ユーザー名@ホスト名:/mnt/c/$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04 LTS"
ユーザー名@ホスト名:/mnt/c/$

ちなみに、wslではなくbashと入力しても、同様に起動できます。また、コマンドプロンプトやPowerShellではなく、スタートメニューの検索画面にwslbashと入れても起動できます。

マウス派なら、WindowsのスタートメニューからUbuntu 20.04をクリックしても実行できます。


この記事は、Microsoftのドキュメントを参考にしました。