はじめに
WSL2にアップグレードする前に、Windows10 バージョン2004 ビルド19041に上げてみたをご覧ください。
WSL2へのアップグレード方法について、Windows 10 用 Windows Subsystem for Linux のインストール ガイドに書かれているようだが、WSLのインストール方法しか見つからない。「WSL 2 に更新する」とあるが、項目だけで、アップグレード方法らしき手順が見当たらない。
どうも、話しをまとめると、次の2点ができていれば良いだけらしい。
-
Windows Subsystem for Linux
(Linux用Windowsサブシステム
)のインストール -
仮想マシン プラットフォーム
をインストール
しかしながら、後で分かることだが、次の手順も必要。
- インストール済みのLinuxディストリビューションをWSL2に設定
- コンテナファイルをWSLからWSL2に変換するために、なんと、1ディストリビューション当たり1時間コース!!
-
WSL2 Linuxカーネル更新プログラム
をインストール -
仮想ハードディスクファイルの圧縮と暗号化
を解除
アップグレード手順?
次に混乱したのが、PowerShellのコマンドしか載っていないこと。
WindowsユーザはGUIだからWindowsを使い続けるのであって、コマンドラインベースの手順しか載せていないところから、この記事が広くWindowsユーザを対象としていないことが分かる。もちろん、Windows上でLinuxを動かそうとしているユーザはLinuxユーザに違いない訳だから、shellで書いてあるなら納得が行く。
PowerShellのような、どこから生まれた思想なのかも分からないコマンドを載せられても、誰も分からないし、戸惑うだけだと思います。
GUIの場合
という訳で、GUIからWSL2を有効化する方法は次の通りです。
- [スタートメニュー]をクリックする。
- [設定]をクリックする。
- [アプリ]をクリックする。
- [オプション機能]リンクをクリックする。
- [Windowsのその他の機能]リンクをクリックする。
-
[Windowsの機能]
ダイアログが表示されるので、[Linux用Windowsサブシステム]
にチェックが付いていることを確認する。
CUIの場合
みんな大好きPowerShell(CUI)では、次のコマンドを実行します。
-
PowerShell
か管理者としてコマンドプロンプトを起動
します。 -
[Linux用Windowsサブシステム]
を有効化する。dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
-
[仮想マシンプラットフォーム]
を有効化する。dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
-
オプションの機能
が有効化されていることを確認する方法は次の通りです。grep
のやり方が分からないので、ガンバってみてください。dism.exe /online /get-features
機能名 : Microsoft-Windows-Subsystem-Linux 状態 : 有効 機能名 : VirtualMachinePlatform 状態 : 有効
インストール済みのLinuxディストリビューションをWSL2に設定
-
インストール済みのLinuxディストリビューションの一覧を表示する。
wsl --list --verbose
NAME STATE VERSION * Ubuntu Stopped 1 kali-linux Stopped 1
-
ここでは、インストール済みの
Ubuntu
をWSL2にアップグレードします。wsl --set-version Ubuntu 2
WSL2 Linuxカーネル更新プログラム
をインストール
-
おや?
指示通り、https://aka.ms/wsl2kernel にアクセスします。
WSL 2 Linux カーネルの更新にリダイレクトされます。変換中です。この処理には数分かかることがあります... WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
-
CPUアーキテクチャに従い、次のいずれかをダウンロードする。
-
インストールが終了すると、次の画面が開くので、
[Finish]
ボタンをクリックする。 -
もう一度、次のコマンドを実行します。
wsl --set-version Ubuntu 2
仮想ハードディスクファイルの圧縮と暗号化
を解除
-
おや?
エラーメッセージが変わった!急いでいるんですけど...。変換中です。この処理には数分かかることがあります... WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください 仮想ディスク システムの制限により、要求された操作を完了できませんでした。仮想ハード ディスク ファイルの圧縮と暗号化が解 除されている必要があります。また、仮想ハード ディスク ファイルをスパースに設定することはできません。
-
このページに「この問題の最新情報が追跡されている WSL Github スレッド #4103 を参照してください。」とあるので、アクセスした。
-
要するに、
%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.*
というフォルダの圧縮と暗号化を解除する必要がある。 -
Windows Explorer
で%USERPROFILE%\AppData\Local\Packages
フォルダを開く。 -
CanonicalGroupLimited.UbuntuonWindows_*
で始まるファイルを探し、[右クリック]-[プロパティ]を開く。 -
元の
[プロパティ]
ダイアログに戻るので、[OK]
ボタンをクリックする。 -
[属性変更の確認]
ダイアログが開くので、[変更をこのフォルダー、サブフォルダーおよびファイルに適用する]
が選択されていることを確認し、[OK]
ボタンをクリックする。
-
属性の適用中
ダイアログが開いて、変換処理が開始する。残りおよそ2時間45分
...。 -
さらに、もう一度、次のコマンドを実行します。
wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります... WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください 変換が完了しました。
-
ようやく終わりました。
wsl --list --verbose
NAME STATE VERSION * Ubuntu Stopped 2 kali-linux Stopped 1
WSL2をデフォルトに設定
-
WSL-WSL2の変換はもう懲り懲りなので、WSL2をデフォルトに設定します。
wsl --set-default-version 2
-
が、次のどのディストリビューションをダウンロードしても、WSL2ではエラーになってインストールできませんでした。
WSLに変更すると、正常にインストールできるため、WSL-WSL2変換は避けては通れない?
この辺りは宿題です。
Ubuntu 20.04 LTS
-
Microsoft Store
からUbuntu 20.04 LTS
をインストール
する。 -
一時的に、
WSL
に戻す。wsl --set-default-version 1
-
Windows Explorer
で%USERPROFILE%\AppData\Local\Packages
フォルダを開く。 -
CanonicalGroupLimited.Ubuntu20.04onWindows_*
で始まるファイルを探し、[右クリック]-[プロパティ]を開く。 -
[詳細設定]
ボタンをクリックする。 -
[内容を圧縮してディスク領域を節約する]
のチェックを外し、[OK]
ボタンをクリックする。 -
元の
[プロパティ]
ダイアログに戻るので、[OK]
ボタンをクリックする。 -
[属性変更の確認]
ダイアログが開くので、[変更をこのフォルダー、サブフォルダーおよびファイルに適用する]
が選択されていることを確認し、[OK]
ボタンをクリックする。 -
[属性の適用エラー]
ダイアログが開くので、[すべて無視]
ボタンをクリックする。 -
属性の適用中
ダイアログが開いて、変換処理が開始する。残りおよそ7時間30分
...。
筆者の環境では40分程で完了。 -
次のコマンドを実行し、
WSL
からWSL2
に変換する。
筆者の環境では5分程で完了。wsl --set-version Ubuntu-20.04 2
変換中です。この処理には数分かかることがあります... WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください 変換が完了しました。
-
ようやく終わりました。
wsl --list --verbose
NAME STATE VERSION * Ubuntu Stopped 2 Ubuntu-20.04 Stopped 2
-
WSL2
に戻す。wsl --set-default-version 2
さいごに
Edge
はChromeのダウンローダー、PowerShell
はWSLのインストーラーとして活躍の場を見出すことができました。1つのディストリビューションコンテナがあれば、Dockerを試せるので、次は、WSL2上でDockerを動かすことにチャレンジしたいと思います。