WSL2を有効化し、動作が遅くなった問題にも対処

WSL2の有効化

待ちに待ったWLS2がWindows10 1903/1909にバックポートされたので窓の杜を参考に有効化する。

WSL2が使えるように更新プログラムを適用

まずWindows Updateで新しく出てる更新プログラムを適用。

適用後、winverでOSのリビジョンナンバーが1049になっていることを確認。

WSL2を有効化しデフォルトに

次にPowerShellを管理者権限で開いて以下のコマンドを実行。

Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart

いったん再起動した後またPowerShellを管理者権限で開いて次のコマンドを実行。

wsl.exe --set-default-version 2

WSL2内のLinuxカーネルの更新

WSL2 Linuxカーネルの更新ページからWSL2 Linuxカーネル更新プログラムをダウンロードして実行。

異常終了したのかと勘違いするくらい一瞬で終わった。

UbuntuをWSL2に対応

最後に既存のWSL上のUbuntuをWSL2対応に変換。

wsl --set-version Ubuntu 2

数分かかって終了。これにてWSL2への移行完了。

構築済みのUbuntuの環境がそのまま使えて助かる。

ファイルアクセスが遅い問題に対処

WSL2はやーい!

って言えるかと思ったらすごく遅い。なんでや。

事象と原因

とにかくファイルアクセスが遅く、git statusですら数秒待たされる
あとscss watchなど更新を検知して動く系のやつが効かない。

原因としてはどうやらWindows側に置いてあるファイルをWSL2からいじろうとするゆえに遅いらしい。

もともとVSCodeで開きやすいようにコード類はWindows側に置いて、WSLのUbuntuからはディレクトリごとにシンボリックリンクを張って色々とコマンドで操作していたのだが、このやり方があかんと。

ファイルをWindowsからWSL2のUbuntuに移動

上記のシンボリックリンクは削除し、Ubuntuから見て/mnt/c以下に置いてあるコードをすべてUbuntu上に移動した。
mvを実行してる間けっこう時間がかかるのでお茶でも飲みつつ待つ。

これであっさり解決。
移動が終わるとファイルアクセスは速くなったしwatchの更新検知も働くようになった。

VSCodeでWSL上のファイルを簡単に開けるように

あとはVSCodeにRemote Develop拡張を入れてWSL2のUbuntu上に移動したファイルを開けるようにする。

拡張が入ったらプロジェクトのディレクトリに行って以下のコマンドを実行すればおk。

code .

これで以前と遜色なく使えるようになったぞ。

参考

WSL2はやーい!

MacからWindows+WSLに移ってきたときに感じたもっさり感が消え去り、めちゃめちゃ快適になった。
やったぜ。

Windows10 2004がまだ入らないマシンでもWSL2を使えるようにしてくれたWindowsの開発チームぐっじょぶ。

残るはDocker DesktopのWSL2対応のこのバックポート対応待ち。
現時点ではバージョンが古いとみなされてWSL2対応を有効にできない。