Win10にWSL2とUbuntu 20.04をインストールする
WSL 2は、WSL 1よりもよりネイティブにLinuxが動くようになり、DockerもWSL 2に対応したものが公開されているようです。今回は、このWSL 2をインストールしてみました。ついでに、WSL1時代にインストールしていたUbuntu 18.04もWSL 2で動くように設定します。
システム要件の確認
WSL2はWindows 10の中でも「バージョン2004(May 2020 Update)・ビルド19041以上」もしくは「バージョン1903(May 2019 Update)・ビルド18362以上」である必要があります。
バージョンやビルドの確認は、Win+R(ファイル名を指定して実行)で「winver」と入力してOKを押します。次の画像の赤線部分に、バージョンとビルド番号が表示されますので、適合しているか確認します。
古いバージョン、ビルドだった場合は、Windowsのアップデートを確認してみましょう。バージョン2004が配信されていたら、アップデートします。環境によっては、既知の不具合が報告されていて2004へのアップデートがブロックされているかもしれません。Insider Previewを使ったら配信されるかもしれませんが、基本的には配信されるまで待った方が無難でしょう。
もしくは、バージョン1903や1909のまま「KB4566116」の更新を適用しても使えるようになります。これを適用すると、OSのリビジョンナンバー(上の図の赤線でいう388の部分)が1049以上になります。
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%==========================]
操作は正常に完了しました。続いて"仮想マシン プラットフォーム"をオンにするため、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」を含むエラー(???というように文字化けしてるかも)が表示される場合は、後述のトラブルシューティングの項をご覧ください。
Linuxディストリビューションのインストール
MicrosoftストアからLinuxディストリビューションをインストールします。
今回はUbuntu 20.04をインストールします。Microsoftストアのリンクはこちらです。
続いて、Linux側の初期設定を行っていきます。WindowsのスタートメニューからUbuntu 20.04を起動します。
このとき、「https://aka.ms/wsl2kernel」を含むエラー(???というように文字化けしてるかも)が表示される場合は、後述のトラブルシューティングの項をご覧ください。
初回起動時は、数分間待たされます。その後、一般ユーザー作成の案内が表示されますので、それに従ってユーザーを作成します。ユーザー名を入れた後、パスワードを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を実行します(もしくは、ショートオプションを使ってwsl -l -v)。こちらのコマンドを実行すると、インストール済みのLinuxディストリビューション、WSLバージョン、デフォルトのLinuxディストリビューション(アスタリスク)が確認できます。
PS C:\> wsl --list --verbose
NAME STATE VERSION
* Ubuntu-18.04 Stopped 1
Ubuntu-20.04 Running 2Ubuntu 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 2Ubuntu 18.04も「VERSION:2」になりました。
同様に、WSL1に戻すこともできます
デフォルトで起動するLinuxディストリビューション
上記のリストでUbuntu 18.04にアスタリスクが付いていますが、これはデフォルトで起動するLinuxディストリビューションであることを示します。つまり、コマンドプロンプトやPowerShellから「wsl」コマンドを実行すると、Ubuntu 18.04が起動します。
せっかくなので、デフォルトをUbuntu 20.04に変更してみます。
デフォルトの変更は、wsl --set-default <distributionName>です(もしくは、ショートオプションを使ってwsl -s <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 2Ubuntu 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ではなく、スタートメニューの検索画面にwslやbashと入れても起動できます。
マウス派なら、WindowsのスタートメニューからUbuntu 20.04をクリックしても実行できます。
トラブルシューティング
Error: 0x800701bcなどが出る場合
WSLのデフォルトバージョンを2にしたり、Ubuntu 20.04を初回起動したりしたとき、エラー0x800701bcなどが発生することがあります。
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ???????????? ??????????????????????? https://aka.ms/wsl2kernel ?????????
Press any key to continue...途中文字化けしてよく分からないですが、海外のサイトを見てみると、英語版Windowsだとこのようなエラーらしいです。(こちらのサイトから引用させていただきました)
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel
Press any key to continue...訳すと「WSL2のカーネルコンポーネントが必要です。詳細はhttps://aka.ms/wsl2kernelを見てください」ということなので、この案内に従ってください。
https://aka.ms/wsl2kernelにアクセスすると、「最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロード」というリンクがありますので、ここからwsl_update_x64.msiをダウンロードします。
ダウンロードしたら実行してインストールすればOKです。とくに設定項目はなく[Next]を押すだけです。
インストールが終わったら、続きの設定を行ってみてください。
参考サイト
この記事は、Microsoftのドキュメントを参考にしました。
おすすめ記事
インストールしたWSL2環境を使って、いろいろ試してみています。よければ、これらの記事もご覧ください。
GUIアプリ関連
Docker関連
バックエンドにWSL2を使用したDocker環境の構築もしてみました。
トラブルシューティング記事
何かおかしいと思ったときは、一度WSL2の再起動を試してみてください。
通常、WSL2上のUbuntuからみたWindows側のフォルダは/mnt/c/などにマウントされており、所有者はUbuntuのユーザーになっています。これが、Ubuntuインストール直後だと所有者がrootになっており、それに起因してソフトがうまく動かないことがあります。それについては次の記事をご覧ください。(解決法は上と同じで、WSL2の再起動です。)
記事の変更履歴
Windows 10 ver1903以降対応になりました(2020/8/30)
今まで、WSL2はWindows 10 ver2004(May 2020 Update)以降に対応するとされていましたが、少し前のバージョンにバックポートされてWindows 10 ver1903(May 2019 Update)以降使用可能になりました。この点に関する参考サイトはこちらです。
実際に、未だにver2004が落ちてこないSurface Pro 7(Windows 10 ver1909 build18363)にWSL2をインストールしてみたので、それに合わせて記事の内容を少し変更しました。Surfaceの方でwinverを実行すると、こんな感じのバージョン表記でした。
2回も再起動する必要ありませんでした(2020/8/30)
当初、「"Linux 用 Windows サブシステム"をオンにして再起動し、"仮想マシン プラットフォーム"をオンにしてもう一度再起動する」と紹介していましたが、途中の再起動は不要でしたので書き換えました。
初回起動時のエラーについて追記しました(2020/8/30)
Surfaceにインストールしたところ、Ubuntu 20.04を初回起動した際、0x800701bcエラーが発生して起動しませんでした。これはWSL2カーネルの更新で解決できますので、そのことについて追記しました。
ディスカッション
コメント一覧
まだ、コメントがありません