現時点で発表されている内容からWSL2の実装を探る
では、具体的には、WSL2の中身はどうなっているのだろうか? まずは前記ブログ記事にある記述から“事実”を探っていこう。ブログによれば、WSL2には以下のような特徴がある。
・Linuxカーネルは「Lightweight utility virtual machine」内で実行される
・WSL1と同ユーザー体験を提供できる
・たとえば、WSL1のようにディストリビューションを起動して2秒でコマンドライン入力が可能になる
・仮想マシンを使うが、従来の仮想化と違う。高速な起動と少ないメモリ占有量、そして仮想マシンの構成や管理も不要
・WSL2はVMを使用するが、それは管理され、裏側で実行され、WSL1と同じユーザーエクスペリエンスを得ることができる
・Linuxカーネルを使うため、完全なシステムコール互換性が得られる。Docker(コンテナーソフトウェア)やFUSE(仮想ファイルシステム)が動作する
・ファイル集約型のソフトウェアは高速化される。tarの展開で最大20倍、git cloneなどで2~5倍
・Linuxディストリビューションは、WSL1ディストリビューションとしても、WSL2ディストリビューションとしても、いつでもアップグレードまたはダウングレードすることができる
まず、WSL2のLinuxカーネルは、「Lightweight utility virtual machine」(以下、LUVMと略す)で実行されるという。これは、Azureで外部要求に応じて、短時間で多数の仮想マシンを立ち上げて対応するという技術を元に、Windows Serverに搭載された技術が使われている。
高速な起動が特徴で、同様の技術を使うものにWindows SandboxやWindows Defender Application Guard(WDAG)がある。ただし、ここで実行されるLinuxカーネルは、マイクロソフトによるパッチが当てられ、専用の構成を取るものだ。具体的には、デバイスドライバーなどは必要最小限とされ、LUVM内で「準仮想化」を実現するためのパッチが含まれているのだと思われる。
もともとLinuxカーネルは、仮想マシン内で準仮想化(ハイパーバイザーと連携することで高いレベルでの仮想化を実現し、低レベルのハードウェア仮想化をしないで済ませること)が可能になっているため、仮想マシン環境でも効率良く動作できると思われる。
Linuxカーネルを仮想環境で動作させるのは、メモリやプロセス管理などをLinuxカーネルに担わせることでLinuxアプリケーションに対して、完全なLinux環境を提供するためだ。このため、bashなどのLinuxアプリケーションも仮想環境内で動作することになると思われる。
またこのLUVMはWSL2専用となり、設定や構成はあらかじめ固定されていると思われる。いわゆるHyper-V仮想マシンとの最大の違いは、Windows側と統合して動作するようになっている点であろう。Hyper-Vによる仮想マシンではホストOS、ゲストOSがお互いに影響しないように完全に分離されているが、LUVMでは、たとえば、AF_UNIXなどによるプロセス間通信が可能な程度にはWin32側と統合されていると考えられる。場合によってはメモリ領域の共有などもできるかもしれない。
次にファイルシステムだが、これは、Linuxカーネル内のExt4などのネイティブのファイルシステムが動作すると思われる。このために、ファイル集中型のLinuxアプリケーションは高速に動作できる。ただし、下位レベルはVHD(仮想HDD)ファイルなどが使われると思われる。
メモリ管理も、Hyper-V仮想マシンなどと違い、必要に応じて割り当てを増やす方式なのだと考えられる(Windows Sandboxも同様の構成)。このようにすることで、起動時に4GBなどの大きなメモリ領域が占有されることを防ぐことが可能で、Win32側への影響を最小限にできる。Linuxカーネルは、だいたい百数十MB程度のメモリを占有するが、これにbashなどが使う量を含めても1GB前後で十分だと思われる。
簡単に言えば、WSL2は超軽量のLinux仮想マシンだ。マイクロソフトによれば、起動は1秒程度で完了し、起動してから2秒程度でコマンドライン入力が可能になる。仮想マシンを使ってこの速度は、かなりのものだ。専用環境とはいえ、仮想マシンとゲストOSを短時間で起動でき、メモリへのインパクトも小さいとなれば、他にも応用が利くかもしれない。
WSL2は、6月末までにはプレビューが開始されるというが、従来のWSL1も当面は残るだろう。x64/x86とは違う仮想マシンアーキテクチャを持つARMプロセッサ(Windows On ARMは、WSL1をサポートしている)などでは、すぐに実装できない可能性もあるからだ。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ











