WSL1 から WSL2への移行


はじめに

自身の環境に WSL2 を導入したので備忘録としてその手順を書いていく。前提条件は WSL1 を使っていて、WSL2 は未インストールの状況である。

windows のバージョン確認と機能確認

windows + Rwinver を実行し、windows のバージョンを確認する。WSL2 の起動条件は「x64 システムの場合:バージョン 1903 以降、ビルド 18362 以上。」である。

自身のバージョンは20H2、ビルドは19042.867なので問題無し。

次に「Linux 用 Windows サブシステム」と「仮想マシンプラットフォーム」の有効化が必要である。コントロールパネルのWindowsの機能の有効化または無効化でそれぞれにチェックボックスが入っていることを確認する。入ってない場合は、管理者権限で実行した PowerShell で以下のコマンドを実行する。

PowerShell
#Linux 用 Windows サブシステム の有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

#仮想マシンプラットフォーム の有効化
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart


自分の場合はどちらもチェックが入っていたため、次の手順に進む。

Linux カーネル更新プログラムパッケージのダウンロードとインストール

こちらのページの手順4から最新のパッケージをダウンロードし実行する。

インストール済みの Ubuntu を WLS2 で起動できるようにする。

まずデフォルトで WSL2 が動くようにする。以下を実行すると今後インストールする Linux パッケージは全て WSL2 で起動することになる。

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

次に現状インストールされているパッケージがどの WSL で起動するかを確認する。

PowerShell
PS C:\Users\r_yamamoto> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         1

Ubuntu-18.04 が WSL1 で起動される事が分かるので、これを WSL2 で起動するように設定する。

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

ここで30分以上待つ。

PowerShell
変換が完了しました。

このコマンドが通ったら再度確認。

PowerShell
PS C:\Users\r_yamamoto> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         2

以上より WSL2 に移行できた。

参考文献