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

この連載の記事
-
第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が改良される - この連載の一覧へ











