このページの本文へ

前へ 1 2 次へ

Windows Info 第172回

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

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

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

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

 Windows 10に搭載された「Windows Subsystem for Linux」、なかでも現在のWSL1は、LinuxのカーネルファンクションをNTのカーネルファンクションに変換することでカーネル起動を不要にするとともに、Windowsのユーザーメモリ空間でLinuxプロセスを起動することでシステム負荷が低い環境を提供している。それに対して、新バージョンのWSL2では、仮想マシン環境を使って同等のユーザー体験を可能にするという

ブログ上で発表されたWindows Subsystem for Linuxの新バージョン。プレビューは6月までに開始予定

WSL2ではLinuxカーネルはそのまま利用される

 マイクロソフトは5月6日、「WSL2」(Windows Subsystem for Linux 2)を発表した。WSL2は現在のWSL(以後区別するために、WSL1と表記)の後継にあたるもので、Linuxカーネルをそのまま利用することで、完全なカーネルファンクションの互換性を提供できる。このため、従来動作できなかったLinuxアプリケーションの実行が可能になるという。その中には、DockerやFUSEなどが含まれる。

 また、システムが高速化され、アプリケーションによっては最大20倍の速度差が出るとのこと。同時に、現在のWSL1と同等の起動速度を実現し、Windows側からの起動で2秒後には「/bin/bash」のコマンド入力が可能になる。

 Linuxカーネルは、WSL2のためにパッチなどが当てられるものの、基本的にはそのまま使われる。このためLinuxとカーネルファンクションのレベルで完全な互換性が得られるだけでなく、今後のLinuxの進歩に容易に追従できる。また、既存のWSL1で利用していたディストリビューションのイメージをWSL2にアップグレードすることも、WSL2用のイメージをWSL1用にダウングレードすることも可能であり、WSL1とWSL2は同時に実行できるとする。

 なお、WSL2は6月末までにはプレビューが行なわれる予定だという。あわせて、Microsoftストア経由で配布される新しいコンソールであるWindows Terminalも発表されている(こちらについては次回以降に解説したい)。

 WSL2についての詳細は、現時点では2つのブログ記事があるのみだ。どちらも「Windows Command Line Tools For Developers」のブログ記事である。

●Announcing WSL 2
 https://devblogs.microsoft.com/commandline/announcing-wsl-2/
●Shipping a Linux Kernel with Windows
 https://devblogs.microsoft.com/commandline/shipping-a-linux-kernel-with-windows/

 そもそもWindows Subsystem for Linuxは、もともとWindowsが持っていたPosix Subsystemを土台に、LinuxカーネルファンクションをNTカーネルファンクションに変換する仕組み(LXCore)を組み込んでいる。カーネル呼び出し(Syscall命令)をWindowsカーネルに直接渡さないPicoプロセスを作り、その中でLinuxのバイナリ(ELF64)を実行させていた。

 つまり、LinuxのカーネルファンクションとNTのカーネルファンクションの間で変換していたわけだ。Linux側プロセスやそのメモリ管理は、すべてNTカーネルが行なうので、仮想マシンを使う場合のような負荷やオーバーヘッドがなく、高速に起動してLinuxバイナリもWin32とほぼ同じ速度で動作できた。

 一方で問題もあった。カーネルファンクションを変換するLXSSと呼ばれるシステムだ。Linuxカーネルも最近ではさまざまな機能を内部に持つ。マイクロソフトは、これを段階的にLXSSで変換可能にしてきた。最近では、なんとかDockerも起動するようになっていた。なので、この方向性で突き進むのかと思ったら、どうやらあっさりと諦めて、Linuxカーネルそのものを使うことにしたようだ。いくつかのLinuxカーネル機能は、単純にNTカーネルファンクションに変換というわけはいかなかったのかもしれない。

 そもそもWindowsの仮想マシン環境であるHyper-VでLinuxを実行することは、以前から可能だった。WSL2は仮想環境自体が違っていて高速で起動し、そこで実行されるLinuxアプリケーションは、現在のWSLと同様に、Win32のコンソールアプリケーションと標準入出力などで接続が可能なものになる。Hyper-Vをはじめとする従来型の仮想環境は、仮想マシン同士を分離することに重きがおかれている。しかし、WSL2で使われる仮想環境は、逆にホストOSとなるWindowsと連携できるようにしてある。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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