WSL2へのバージョンアップ

参考になる記事はたくさんあるけれど、いちおう書き残しておきます。

背景

個人的な事情

GitHub Actionsをローカル環境でテストできるactには、 Docker(Docker Desktop)が必要だったので入れようとしたら、WSL2が必要だったという話。

WSL2と1の比較

WSL 2 と WSL 1 の比較 | Microsoft Docs

うーん、わからない。わざわざWSL1を使う理由はなさそうなのでバージョンアップします。
Linux版のDockerをきちんとインストールできるようになる、のようなメリットを聞いたことがあります。 上述のactのインストールには必要なのでインストールします。

参考文献

以下の2つの記事を読めば全て書いてあります。
(今書いているこの記事は要らないのでは???)

  1. Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs
  2. WSL2導入|WinアップデートからWSL2を既定にするまでのスクショ - Qiita

手順

参考文献の1のほうを基本的には見ていきます。
スクショが見たくなったら2を確認します。前提条件が揃っていなくて、準備が必要な場合も2に記載されています。

Windows Insiderではないので、Manual Installation Stepsの方で実施します。

前提条件

WSLのバージョン

そもそも今使っているWSLのバージョンを確認するには以下のコマンドを実行します。

PS C:\Windows\system32> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

入っているディストリビューションとそのWSLのバージョンが書いてあります。 この場合はUbuntuが入っており、そのWSLのバージョンは2であることがわかります。

Windowsのバージョン

WSL2にはWindowsのバージョンが2004である必要があります。

バージョンの確認方法は以下の通り。

Win + Rで「ファイル名を指定して実行」を開き、winverと入力。
バージョンが表示されます。

バージョンがこれ以前の場合には、Windows Updateをおこないます。

Windows Subsystem for Linuxの有効化

日本語だと「LinuxWindowsサブシステム」となっているWindowsの機能の有効化をおこないます。 以下のコマンドではなくとも コントロールパネル > プログラムと機能 > Windowsの機能の有効化または無効化 から変更することもできます。

Linux用Windowsサブシステムの有効化

コマンドを実行するときにはPowerShellを管理者権限で実行する必要があります。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

コントロールパネルで変更した場合でもコマンドで変更した場合でも、PCを再起動します。

仮想マシン プラットフォームの有効化

さらにWindowsの機能の「仮想マシン プラットフォーム」を有効化します。「LinuxWindowsサブシステム」と同じくコントロールパネルから変更することもできます。

仮想マシン プラットフォームの有効化

また、同じくコマンドを実行することもでき、PowerShellを管理者権限で実行する必要があります。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Linuxカーネルの更新

Linuxカーネルを更新します。
下記のMicrosoft公式サイト(「手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする」)からmsiファイルをダウンロードして実行します。

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

WSL2を既定にする

PowerShellを起動して下記のコマンドを実行します。

wsl --set-default-version 2

Linuxディストリビューションをインストールする

WSL1のさいに何かしらのディストリビューションを入れていればこの部分は飛ばします。

ここまでの手順をおこなって新規にインストールした場合には、WSL2で動くことになります。

Microsoft Storeを開いて、好みのディストリビューションをインストールします。
とりあえず、Ubuntuあたりがよさそう。

インストールしたディストリビューションのバージョンが気になれば、以下のコマンドをPowerShellで実行して確認できます。

PS C:\Windows\system32> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

既にインストールしているディストリビューションをWSL2にする

既に何かしらのディストリビューションをインストールしている場合には、以下のコマンドをPowerShellで実行してバージョンをWSL2にします。

wsl --set-version <distribution name> <versionNumber>

<distribution name>にはディストリビューションの名称にします。例:Ubuntu
<versionNumber>は今回WSL2を使うようにしたいので2にします。

ディストリビューションの名称ですが、下記のコマンドの出力結果NAMEにあたります。

PS C:\Windows\system32> wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         2

終わりに

今回私が実行したときには上述の流れで問題は発生しませんでした。
よくあるトラブルシューティングMicrosoft公式サイトに記載されています。

やはり公式サイトが最強ですね。