このページの本文へ

前へ 1 2 次へ

Windows Info 第172回

Linuxカーネルをそのまま利用する「Windows Subsystem for Linux」の新バージョン

2019年05月12日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

現時点で発表されている内容から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をサポートしている)などでは、すぐに実装できない可能性もあるからだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン