はじめに
普段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/norestartdism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart
- ゲストを再起動します。
- ゲストのMicrosoft StoreよりWSL用のディストリビューションをダウンロードします。
- 既にWSL1のディストリビューションを導入済みの場合、PowerShellにてWSL2に変換します。
- 初めてダウンロードする場合、PowerShellで設定することで、デフォルトをWSL2形式にすることができます。
以下のコマンドについては、管理者権限は不要です。
# 導入済みのディストリビューションを確認します。wsl-l-vNAMESTATEVERSION*Ubuntu-18.04Stopped1# 以下のコマンドでWSL1をWSL2に変換します。環境によりある程度の時間がかかります。wsl--set-versionUbuntu-18.042
wsl--set-default-version2# 以下のコマンドでデフォルトをWSL1に戻すことができます。wsl--set-default-version1
- 変換後またはダウンロード済みのディストリビューションを開いて、問題なく動作することを確認します。
ハマった点など
- ゲスト側の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機能拡張は使えないようでした。こちらは今後に期待です。
仮想環境としてVMware Workstation Playerを使っている関係上、WSL2が正式リリースされた場合はホスト側で同居できなくなりそうですが、VMware様側でWSL2と同居可能なバージョンを開発しているみたいなので、こちらも今後に期待です 45。
参考サイト様
- 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版が対象のように見えますが、無償版にも対象を広げてもらえることを期待しています。 ↩