はじめに
普段WSL1やVMware Workstation Player上に構築したLinuxをちょこっと触ったりしています。
そんな中、次期バージョンのWSL2ではDockerがインストールできるということで興味があるのですが、プレビュー機能のため利用してみたい場合はWindows Insider Programを導入する必要があるとのこと。
Windows Insider Programは評価版のWindowsが導入されるとのことで、普段使いのPCには導入をためらっていました。
そこで未使用のWindows10 Homeエディションを使って、VMware Workstation Player上にWSL2を導入できないか試してみました。
簡単なまとめ
- Windows Insider Programのビルド種類ですが、2020/03/03時点では、WSL2のみを使う目的であれば安定性の面で「ファスト」よりも「スロー」をおすすめします 1。
- WSL2がHyper-Vの機能を利用する関係上、VMware Workstation Playerの「Intel VT-x/EPT または AMD/RVI を仮想化」を有効化しないと動作しません。
- 仮想環境へのメモリ割り当ては最低6GB欲しいところです 2。
検証環境
ホスト側
- Windows10 Pro バージョン1909 64bit
- CPU:Intel Core-i5 2540M
- ハードウェア仮想化支援機能として「VT-x」「VT-d」が利用可能
- メモリ:16GB搭載
ゲスト側
- VMware Workstation Player 15.5.1
- Windows10 Home側にVMware Tools for Windows (11.0.0) をインストール済み
- Windows10 Home バージョン1909 64bit
- メモリ:6GB割り当て
- ストレージ:60GB割り当て
導入手順
仮想化ソフトウェアに「VMware Workstation Player」を利用し、その上でWindows10 Homeが導入済みという前提になります。
※前提の導入手順は省略いたします。
-
PCのBIOSまたはUEFIの設定で、ハードウェア仮想化支援機能を有効化します。
-
Intel CPUの場合は「VT-x」の有効化が必須です。
-
ゲスト側の仮想マシンを停止した状態で、VMware Workstation Playerの「仮想マシン設定」を開き、「ハードウェア」→「プロセッサ」の項目で「仮想化エンジン」の設定を有効化します。
-
Intel VT-x/EPT または AMD/RVI を仮想化 ※必須
-
CPU パフォーマンス カウンタを仮想化 ※お好みでOKかと。
-
IOMMU(IO メモリ管理ユニット)を仮想化 ※Intel VT-dが有効の場合は、チェックを入れても良いかと。
-
設定を保存し、ゲストの仮想マシンを起動します。
-
ゲストの起動後、「スタート」メニューの「設定」から「更新とセキュリティ」→「Windows Insider Program」をクリックします。
-
画面表示に従って手続きを進め、「Insider の設定を選択」画面で「スロー」を選択します。
-
「Windows Insider Program」への登録完了後、ゲストの再起動を行います。
-
「Windows Update」を実行し、バージョン2004を導入します。
-
ゲストのコマンドプロンプトを起動し、「winver」と入力してEnterキーを押下し、「Windows のバージョン情報」ダイアログからOSビルドが「18917」以降であることを確認します。
-
ゲストにおいて管理者権限でPowerShellを起動し、以下のコマンドを実行します。
または、「Windows の機能の有効化または無効化」画面より、以下の2つにチェックを入れます。 -
Linux 用 Windows サブシステム
-
仮想マシン プラットフォーム
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- ゲストを再起動します。
- ゲストのMicrosoft StoreよりWSL用のディストリビューションをダウンロードします。
- 既にWSL1のディストリビューションを導入済みの場合、PowerShellにてWSL2に変換します。
- 初めてダウンロードする場合、PowerShellで設定することで、デフォルトをWSL2形式にすることができます。
以下のコマンドについては、管理者権限は不要です。
# 導入済みのディストリビューションを確認します。
wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 1
# 以下のコマンドでWSL1をWSL2に変換します。環境によりある程度の時間がかかります。
wsl --set-version Ubuntu-18.04 2
wsl --set-default-version 2
# 以下のコマンドでデフォルトをWSL1に戻すことができます。
wsl --set-default-version 1
- 変換後またはダウンロード済みのディストリビューションを開いて、問題なく動作することを確認します。
ハマった点など
- ゲスト側のWindows10 Homeで、「Microsoft Defender」以外のウィルス対策ソフトが動作している場合、WSL2への変換や起動が行えない可能性があります。
- ゲスト側にてavastを動作させていたところ「エラー 0x80370102」が発生して、WSL2をどうやっても起動または変換できませんでした。avastをアンインストールすると解決しました 3。
その他
WSL2のUbuntu (無印版:バージョンは18.04.4) にDockerを入れてみましたが、通常のLinuxへの導入と同じ方法で簡単に入れることができて感動しました。
また、VS CodeのRemote - WSL機能拡張も問題なく動作しました。
一方、2020/03/03時点ではDocker Desktop WSL2 BackendがWindows10 Home環境にインストール出来ないため、VS CodeのRemote - Containers機能拡張は使えないようでした。こちらは今後に期待です。
【2020/03/05追記】2020/03/02リリースのバージョン2.2.2.0より、Docker Desktop WSL2 BackendがWindwos10 Homeでもインストールおよび実行可能になりました。
※こちらを利用する場合はWSL2側にDockerのインストールは不要でした。
※簡単にですが、VS CodeのRemote - Containers機能も動作することを確認しました。
Docker Desktop Community 2.2.2.0
New
Windows 10 Home users can now use Docker Desktop through the experimental WSL 2 support. This requires Windows Insider Preview Build 19018 or later.
Docker Desktop now allows sharing individual folders, rather than whole drives, giving more control to users over what is being shared.
引用元: Docker Desktop for Windows Edge Release notes
仮想環境としてVMware Workstation Playerを使っている関係上、WSL2が正式リリースされた場合はホスト側で同居できなくなりそうですが、VMware様側でWSL2と同居可能なバージョンを開発しているみたいなので、こちらも今後に期待です 4 5。
参考サイト様
- WSL 2 のインストール手順
- WSL 2 に関する FAQ
- WSL2 + VScodeでWindowsから一瞬でDockerコンテナ内に引き篭もれる開発環境を整えたかった
- 完成が近づいてきたWindows 10 20H1とともに、Windows Insider Programも変わる
- Introducing the Docker Desktop WSL 2 Backend
- VMware Workstation Tech Preview 20H1 — Hyper-V/Host VBS Support
-
ファスト導入時に文字化けが発生したりしたため、自分の環境では厳しいと判断しました。 ↩
-
起動直後で2.6GB程度、ブラウザ・VS Code・WSL2を起動で3.6GB程度メモリを消費していました。 ↩
-
avastの設定より「ハードウェア仮想化支援機能を有効にする」のチェックを外すと動作する、という情報も見たのですが、自分の環境では問題が解消しませんでした。 ↩
-
現時点ではIntel 第4世代以降のCPUが対象のようですが、第2・3世代のサポートも検討しているとのことです。 ↩
-
製品エディションはWorkstation Pro版が対象のように見えますが、無償版にも対象を広げてもらえることを期待しています。 ↩