Microsoftは、Windows Subsystem for Linux 2(WSL2)を、Windows 10バージョン2004で一般提供すると発表した。WSL2は昨年、Insider Program内でリリースされた。一般提供に移行することによってWSL2は、標準的なWindows Update経由で自動的にアップデートされることになる。
以前にも論じたように、WSL2は、アーキテクチャレベルでWSL1とは異なっている。WSL1がLinuxシステムコールとWindows NTカーネル間の変換層を必要としたのに対して、WSL2には完全なLinuxカーネルを実行する軽量VMが付属する。このVMは、Windows Hipervisor層上で直接動作する。カーネルはシステムコールの完全互換性を備えているため、DockerやFUSEなどのアプリでもLinux上でネイティブに動作可能である。この新しい実装では、LinuxカーネルからWindowsファイルシステムへのフルアクセスが可能になっている。
今回の新リリースでは、特にファイルシステムのアクセスが必要なインタラクションにおいて、パフォーマンスが大きく改善されている。MicrosoftのプログラムマネージャであるCraig Loewan氏によれば、アプリケーションのファイル集約性のレベルにもよるが、3~6倍のパフォーマンス向上が可能であるという。tarボールの解凍では、パフォーマンスが20倍向上した例もある。
この、現時点ではバージョン2004と呼ばれるWindowsの新バージョンでは、Microsoftによると、WSL2のインストールとアップデートのプロセスは非常に容易なものになる。従来は、LinuxカーネルがWindows OSバージョンの一部として含まれていたが、この次期リリースでは分離されるため、サードパーティ製のドライバをインストールする時のように、Windows Update経由でカーネルを更新できるようになる。
WSLチームによると、現時点では、Linuxカーネルの新しいアップデート法に移行するために、いくつかの手作業が必要になる。ビルド19041.153にアップデートした後に任意のWSLコマンド(wsl --set-version <distro-name> 2
のように)を実行すると、メッセージが1回だけ表示され、新しいカーネルをダウンロード可能なダウンロードページにリダイレクトされる。
インストールが完了すれば、Powershell経由でバージョン1から2へのアップグレードが可能になる。wsl -l -v
コマンドを実行すると、ディストリビューションの一覧に加えて、wsl --set-version <distro-name> 2
でアップグレード可能なディストリビューションが示される。バージョン1へのダウングレードもサポートされている。
Visual Studio Codeには、VS CodeからWSL内で開発を行うためのエクステンションがある。Visual Studio Code Remote — Windows側でVS Code UIを、WSL VM内でVS Code Serverを動作させることの可能なWSLエクステンション。WSL内でコマンドを直接実行し、マウントされたファイルシステムをLinuxファイルシステムとして扱うことで、パスなどOS間の問題を軽減する。
このエクステンションではさらに、アプリケーションをLinux内で直接実行したり、ブレークポイントの使用を含むデバッグを行ったりすることも可能である。
WSL2 Linuxカーネルの開発とメンテナンスはMicrosoftのWSLチームが行う。開発成果はオープンソースで、GitHubから入手可能だ。イシューやバグは、専用のリポジトリに対して発生したものを受け入れる。一般的な質問に対しては、WSLチームの一部メンバがTwitter経由で回答している。