【Windows10 Home】WSL1からWSL2に切り替える


投稿日 2023年2月13日 >> 更新日 2023年2月17日

概要

Windows10Homeで既にWSL1(Windows Subsystem for Linux 1)を導入している状態で、WSL2に切り替えるという内容になります。

BIOSの設定からLinuxディストリビューションのUbuntuターミナルでのカーネルの確認までを実行していきます。

WSL2に切り替えることによって、完全なLinuxカーネルとして操作することができると公式ドキュメントで説明されています。

実行環境

実行環境
Windows10 Home 21H2 19044.2486
プロセッサ Intel製

WSL2を使う為の前提条件

WSL2では仮想化を有効にするため、Hyper-Vアーキテクチャが使用されているみたいです。

私のPCは「Windows 10 Home」なので「Hyper-Vは利用することができないからWSL2に移行できないのか」と勘ぐっていましたが、これから説明する前提条件であれば「Windows 10 Home」でもWSL2を使用することができます。

以下の条件が当てはまれば、WSL2にアップグレードすることができます。

  • Windows10 バージョン 1903 以降 (ビルド 18362 以降)かWindows11

  • 仮想マシンプラットフォーム機能を有効にできるか

  • BIOSで仮想化を有効にできるか

Windows10 バージョン 1903 以降 (ビルド 18362 以降)かWindows11

Windows11であれば言わずもがなですが、「Windows 10」を使っているPCであれば「バージョン 1903 以降 (ビルド 18362 以降(x64)」という条件が必要です。

プロセッサ(CPU)の種類によって(ARMやインテル)バージョンやビルド番号の数字が異なるので、気になる方は公式ドキュメントをご覧ください。

現在のバージョンとビルド番号を確認するには、以下の方法があります。

  1. タスクバーのWinマークをクリック後、「設定」→「システム」→「詳細情報」と進む

  2. キーボードの「Winマーク」+「R」で検索ボックスを開き、「winver」と入力する。

仮想マシンプラットフォーム機能を有効にできるか

恐らくWindows10の「バージョン 1903 以降 (ビルド 18362 以降)」であればオプション機能に「仮想マシンプラットフォーム」項目が存在していると思います。

「仮想マシンプラットフォーム」機能を有効にするには、「Windows PowerShell」でコマンドを実行するか「Windowsの機能の有効化または無効化」で「仮想マシンプラットフォーム」の項目にチェックを入れるかです。

  • PowerShellでコマンドを実行する場合

コマンドで「仮想マシンプラットフォーム」を有効にするには、管理者権限で「PowerShell」を開き、以下のコマンドを実行します。

PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.844

イメージのバージョン: 10.0.19044.2486

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

設定が完了したら、システムを再起動します。

  • Windowsの機能の有効化または無効化の項目でチェックを入れる場合

「設定」→「アプリ」→右側の「プログラムと機能」→「Windowsの機能の有効化または無効化」で各項目にたどり着きます。

仮想マシンプラットフォームにチェックを入れ、「OK」をして再起動します。

オプション機能の「仮想マシンプラットフォーム」を有効にするだけではWSL2を利用することができないので、「BIOS」でも仮想化を有効にする必要があります。

BIOSで仮想化を有効にできるか

「BIOS」とは、「Basic Input Output System」と呼ばれるハードウェアを制御するプログラムの設定です。

以下のサイトの記事で分かりやすい説明をされています。

注意

BIOS等の設定に関してはPCシステム自体に影響を及ぼすため、「自己責任」を持って行ってください。

PCのメーカーによって操作方法や名称が異なる場合もあります。この記事(ZerofromLightのブログ)が信用できないと思ったら即座に辞めて下さい。
もしくは、様々なサイトの記事を比較して設定等を行ってください。

例えば私の場合は「Lenovo ideapad」というメーカーの品を使っているので、Lenovo Virtualization Technology (VT-X)を有効にするにはを参考に設定を反映しました。

PCの仮想化が有効になっているか無効になっているか分からない場合は、「タスクマネージャー」を開いて「CPU」のパフォーマンスを表示することで確認できます。

※Windows10 Home

上図のように「仮想化:無効」となっていれば、BIOSで有効に設定する必要があります。

BIOSの画面に入るまでは、以下の手順で行えます。

タスクバーのWinマークから「設定」を開き、「更新とセキュリティ」を開きます。

以下のように「更新とセキュリティ」が開かれたら「回復」→「今すぐ再起動」をクリックします。

「今すぐ再起動」をクリックするとWindowsから抜けてPCのオプションメニューに遷移されます。

注意

BIOS等の設定に関してはPCシステム自体に影響を及ぼすため、「自己責任」を持って行ってください。

PCのメーカーによって操作方法や名称が異なる場合もあります。この記事(ZerofromLightのブログ)が信用できないと思ったら即座に辞めて下さい。
もしくは、様々なサイトの記事を比較して設定等を行ってください。

例えば私の場合は「Lenovo ideapad」というメーカーの品を使っているので、Lenovo Virtualization Technology (VT-X)を有効にするにはを参考に設定を反映しました。

トラブルシューティング」をクリックします。


詳細オプション」をクリックします。


UEFI ファームウェアの設定」をクリックします。


再起動」をクリックするとBIOS画面に移動します。


BIOSの表示形式はPCのメーカーや品目の種類によって変わるかと思います。

ここからはPC名「Lenovo ideapad」によるBIOSでの仮想化設定です。

Information」タブではPCの詳細情報が表示されています。


「Lenovo ideapad」では「Configuration」タブに仮想化の項目がありました。


Intel Virtual Technology」に移動して「Enabled(有効)」にします。

有効に切り替えることができたら、キーボードの「Fn」+「F10」で再起動します。

再起動されたあとに、もう一度「タスクマネージャー」を開いてCPUの「パフォーマンス」を見てみると、「仮想化:有効」となっていればOKです。

PowerShellのコマンドを実行してWSL2に切り替える

ここからはコマンドによるWSLに関する確認や設定を行います。

WSL1で実行しているLinuxディストリビューションのUbuntuターミナルを開いて、システムの詳細情報を調べてみます。

「uname」コマンドを実行することでディストリビューションで稼働しているシステム(カーネル)情報を取得できます。

※Ubuntuターミナル

$ uname
Linux

色々なオプションがあり、カーネルのバージョンやリリース番号を取得したい場合は「-v」と「-r」を合わせて実行します。

$ uname -vr
4.4.0-19041-Microsoft #2311-Microsoft Tue Nov 08 17:09:00 PST 2022

上記結果はWSL1で実行されているカーネルです。

現在実行しているUbuntuターミナルはWSL1のカーネルであることを確認できたので、管理者権限で「PowerShell」を開きWSLの情報を取得していきます。

WindowsコマンドラインやPowerShellでは「wsl」コマンドを使用することができ、この記事で実行しないコマンドも多々あるのでこちらの公式ドキュメント「WSL の基本的なコマンド」で確認してみてください。

「wsl --status」コマンドで現在のWSLの規定となっているディストリビューションとバージョンを確認してみます。

※仮想マシンプラットフォームを無効にしている場合の例

PS C:\WINDOWS\system32> wsl --status
既定のディストリビューション: Ubuntu
既定のバージョン: 1
WSL2 は、現在のマシン構成ではサポートされていません。
"仮想マシン プラットフォーム" オプション コンポーネントを有効にし、BIOS で仮想化が有効になっていることを確認してください
。
詳細については、https://aka.ms/enablevirtualization をご覧ください

上記アラート(「WSL2 は、現在のマシン構成ではサポートされていません。"仮想マシン プラットフォーム" オプション コンポーネントを有効にし、BIOS で仮想化が有効になっていることを確認してください
」)が表示される場合は、仮想マシンプラットフォームが無効になっている状態です。

既定のバージョンが1になっています。

「規定のバージョン」を2に設定するには、「wsl --set-default-version」にバージョン番号を付けて実行します。

※カーネルコンポーネントがインストールされている場合

PS C:\WINDOWS\system32> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2
 を参照してください
この操作を正しく終了しました。

上記はWSL2に必要なカーネルコンポーネントがインストールされているので正しく終了されましたが、コンポーネントがインストールされていないと以下のように失敗してしまいます。

PS C:\WINDOWS\system32> wsl --set-default-version 2
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください

上記アラートの「詳細についてはhttps://aka.ms/wsl2kernel」をクリックするとコンポーネントの場所にアクセスできます。

設定が反映されているか確認してみます。

※仮想マシンプラットフォームを無効にしている場合の例

PS C:\WINDOWS\system32> wsl --status
既定のディストリビューション: Ubuntu
既定のバージョン: 2
WSL2 は、現在のマシン構成ではサポートされていません。
"仮想マシン プラットフォーム" オプション コンポーネントを有効にし、BIOS で仮想化が有効になっていることを確認してください。
詳細については、https://aka.ms/enablevirtualization をご覧ください

既定にすると規定にしたバージョンでディストリビューションをインストールできるとのことです。

ここでは既にインストール済みで使用しているUbuntuにWSL1からWSL2に切り替えていきます。

現在Ubuntuに設定されているバージョンを確認するには、「wsl -l -v」コマンドを実行します。

PS C:\WINDOWS\system32> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         1

STATE列が「Stopped」となっている場合はディストリビューションであるUbuntuが停止している状態を表しています。

VERSION列で「1」と表記されているのがWSL1です。

WSL1からWSL2に切り替えるには「wsl --set-version [distroname] [version-num]」コマンドを使いディストリビューション名とバージョン番号を指定します。

※仮想マシンプラットフォームを無効にしている場合の例

PS C:\WINDOWS\system32> wsl --set-version ubuntu 2
WSL 2 との主な違いについては、https://aka.ms/wsl2
 を参照してください
変換中です。これには数分かかる場合があります。
必要な機能がインストールされていないため、操作を開始できませんでした。
Error code: Wsl/Service/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE

上記では「仮想マシンプラットフォーム」か「BIOSでの仮想技術」の有効を行っていない状態なので、「WSL2を使う為の前提条件」を確認の上、各設定を有効にしてから再度切り替えを行います。

仮想マシンプラットフォームとBIOSでの仮想化が有効になっている場合の例

PS C:\WINDOWS\system32> wsl --set-version ubuntu 2
WSL 2 との主な違いについては、https://aka.ms/wsl2
 を参照してください
変換中です。これには数分かかる場合があります。
この操作を正しく終了しました。

UbuntuにWSL2の設定が完了したので、ディストリビューションの詳細をリスト表示してみます。

PS C:\WINDOWS\system32> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

しっかり設定されています。

WSL1でUbuntuターミナルを使っていた要領でUbuntuを開いて、システム情報の詳細を確認してみます。

$ uname -rv
5.15.79.1-microsoft-standard-WSL2 #1 SMP Wed Nov 23 01:01:46 UTC 2022

WSL1からWSL2に切り替わっていることが確認できました。

時間に余裕がある場合は、システムのアップデートとアップグレードを行っておきましょう。

$ sudo apt -y update

$ sudo apt -y upgrade

それでは以上です。

最後までご覧いただきありがとうございました。