SE_BOKUのITな日常

SE_BOKUが知ってること・勉強したこと・考えたことetc

WSL2のカーネルコンポーネント更新。WSL1からWSL2に移行する

目次

WSL2のカーネルコンポーネント更新。WSL1からWSL2に移行する

僕の場合、Windows10のWSL1の時にubuntuをインストールして、その後、Windows11にアップグレードしました。

しかし、Windows11になっても、WSLが勝手にアップグレードされるわけではなく、それなりの手順を踏んで、WSL1からWSL2に移行する必要があります。

今回は、その話題です。

WSLのバージョン確認

まず、自分の環境のWSLのバージョン確認をします。

Windowsターミナルで「Power Shell」を使います。

wsl --list --verbose

確かに、WSLのバージョン1で動いています。

WSL1でもUbuntuは動きますが、細かいところでうまくいかない部分が残ります。

例えば「vmstat」がエラーになるとか・・ですね。

なので、WSL2にあげておきたいと思います。

 

カーネル更新なしだとWSL2に移行は失敗!

まず、「Power Shell」でシンプルにコマンドを実行してみます。

Nameが「Ubuntu」になっているので

wsl --set-version Ubuntu 2

てな感じです。

ところが変換できず、エラーメッセージが表示されました。

WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください

どうも、ubuntuもStopしてしまったようです。

なるほど。

Windows11にあげただけで自動的にWSL2のカーネルコンポーネントが更新されているわけではないみたいです。

カーネル コンポーネントの更新は手動でするしかないですね。

 

WSL2のーネル コンポーネントを更新する

カーネルコンポーネントの更新は。

  1. 仮想マシン プラットフォーム オプション機能を有効にする。
  2. カーネルコンポーネントを更新する

という手順をふむ必要があります

 

まずは「仮想マシン プラットフォーム オプション機能を有効」にします。

PowerShellを管理者権限で起動し、以下を実行して、マシンを再起動します。

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

 

再起動したら、仮想マシン プラットフォーム オプション機能は有効になっています。

続けて、カーネルコンポーネントの更新をします。

以下のインストーラをダウンロードして、実行します。

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

これでいけるはずです。

 

インストール済のubuntuのWSL2移行に再挑戦

WSL2のーネル コンポーネントを更新したので、WSL1にインストール済のubuntuをWSL2に移行します。

Power Shellで以下のコマンドを実行します。

wsl --set-version Ubuntu 2

しばし時間がかかりますが。

いけたみたいです。

確認してみます。

wsl --list --verbose

WSLのバージョンは2になってます。

これで移行は完了ですが、以後新たにインストールするディストリビューションが最初からWSL2になるようにデフォルトを変更しておきます。

wsl --set-default-version 2

WSL2移行後のubuntuを動かす

WSL上のubuntuが「Stopped」になっていても、新たにWindowsターミナルを開けば再起動するので、ターミナルを開きます。

WSL1だと動かせなかった「vmstat」で動作確認してみます。

vmstat 10

これで10秒おきに、システムの状態をレポートしてくる便利コマンドで、開発・テスト中にはとてもよく使うのですが、WSL1では動かずストレスでした。

でも、ちゃんと動いてますね。

移行はちゃんとできたみたいです。

ではでは。