今回は「WSL2とWSLの違いを解説します」です。
タイトルのミスタイプを修正しました。
WSL(Windows Service for Linux)はもうすぐWSL2となることがアナウンスされており、既に開発者向けプログラムでは配布が始まっています。
WSLは、Windows APIをLinux APIでラップしています。WSLの下はWindowsのAPIなので「仮想」ではなく、いわば「Windowsのアプリケーション」なのです。Linuxに合わせてその集合体をこさえています。即ち、完全に「WindowsAPIをラップ(Wrap)」して異なるOSの環境と見せているのです。そのため、Linuxカーネルの上で動いているように見えますが、Linuxカーネルは実在しません。なので、カーネル内部の機能を制御することはできないのです。典型的にはデバイスドライバ等ハードウエア依存部分を含む開発は多くの場合できません。
とはいえ、これは、これで素晴らしい環境です。私みたいに全く不満の無い方の方がほとんどだとおもいます。
一方、WSL2は完全な仮想環境です。仮想マシンをつくる、ハイパーバイザーの上でWindowsに全く依存しない形でLinuxカーネルごと起動します。これまで仮想環境をつくるために導入していたVirtualBox、VMWareが要らなくなります。完全なx64 Linuxですから、そのLinuxの上に仮想化層を載せることもできます。即ち「ただのLinux」なのです。その実行管理をWindowsがこれまでのVirtualBoxやVMWareのように提供します。
こなると、同じアーキテクチャであれば、Linuxデスクトップで開発した「バイナリプログラム」を変更なしでもってきて実行することができます。アーキテクチャが異なる場合は、その上でコンパイルし直せば実行できます。スクリプトだけではなく、バイナリ実行型のプログラムの環境が大きく広がります。
WSL2の登場は、Microsoftが純粋なLinux実行環境の提供を始めることを意味します。これまでのWindowsGUI環境で、ローカルに完全なLinuxが立ち上がります。なのでLinux上で著名なコンテナ環境のDockerさえも使えます。私の場合も、カーネル依存のミドルウエアの利用や開発であれば、WLS2を使います。
WSL(Windows Service for Linux)はもうすぐWSL2となることがアナウンスされており、既に開発者向けプログラムでは配布が始まっています。
WSLは、Windows APIをLinux APIでラップしています。WSLの下はWindowsのAPIなので「仮想」ではなく、いわば「Windowsのアプリケーション」なのです。Linuxに合わせてその集合体をこさえています。即ち、完全に「WindowsAPIをラップ(Wrap)」して異なるOSの環境と見せているのです。そのため、Linuxカーネルの上で動いているように見えますが、Linuxカーネルは実在しません。なので、カーネル内部の機能を制御することはできないのです。典型的にはデバイスドライバ等ハードウエア依存部分を含む開発は多くの場合できません。
とはいえ、これは、これで素晴らしい環境です。私みたいに全く不満の無い方の方がほとんどだとおもいます。
一方、WSL2は完全な仮想環境です。仮想マシンをつくる、ハイパーバイザーの上でWindowsに全く依存しない形でLinuxカーネルごと起動します。これまで仮想環境をつくるために導入していたVirtualBox、VMWareが要らなくなります。完全なx64 Linuxですから、そのLinuxの上に仮想化層を載せることもできます。即ち「ただのLinux」なのです。その実行管理をWindowsがこれまでのVirtualBoxやVMWareのように提供します。
こなると、同じアーキテクチャであれば、Linuxデスクトップで開発した「バイナリプログラム」を変更なしでもってきて実行することができます。アーキテクチャが異なる場合は、その上でコンパイルし直せば実行できます。スクリプトだけではなく、バイナリ実行型のプログラムの環境が大きく広がります。
WSL2の登場は、Microsoftが純粋なLinux実行環境の提供を始めることを意味します。これまでのWindowsGUI環境で、ローカルに完全なLinuxが立ち上がります。なのでLinux上で著名なコンテナ環境のDockerさえも使えます。私の場合も、カーネル依存のミドルウエアの利用や開発であれば、WLS2を使います。
訂正の記事:
WSLは"Windows Subsystem for Linux"でした