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と連携できるようにしてある。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ