検索
連載

5分で分かるWSL/WSL 2Windows Subsystem for Linuxをざっくり解説

Windows 10上でLinuxを実行できる機能、WSLの概要をおよそ5分でざっくり解説します。

Share
Tweet
LINE
Hatena

WSLとは?

 「WSL」(Windows Subsystem for Linux)とは、「Windows 10」上でLinuxを直接実行できる機能です。WSLがリリースされるまでは、Windows上でLinuxを実行するためには仮想マシンの導入が必要でした。

 WSLは2017年4月リリースのWindows 10バージョン1703(Creators Update)にβ版が、2017年10月リリースのWindows 10バージョン1709(Fall Creators Update)から正式版が搭載されるようになりました。WSLの後続であるWSL 2は2020年5月リリースのWindows 10バージョン2004(May 2020 Update)に搭載されています。この記事ではWSLという機能全般を「WSL」、2017年にリリースされたWSLを「WSL 1」、2020年にリリースされた後続のWSLを「WSL 2」と表記します。

 WSL 2はWSL 1の完全な上位互換ではなく、それぞれに特徴があります。WSL 2がリリースされた2021年3月現在もWSL 1を引き続き使用することができます。

WSLのメリット

 WSLがリリースされる以前から、仮想マシンを用意すれば、Windows上でLinuxを実行できました。では、WSLを使うことでどのようなメリットがあるのでしょうか。

 仮想マシンというものは、Windows 10マシン上で別のPCを動かしているようなイメージです。Linuxを動かすために別のPCを用意するような形となり、起動や動作に時間がかかります。また、仮想マシンは別のPCと同様に扱うため、Windows 10側のアプリケーションとはネットワークなどを介してやりとりを行います。WSLは仮想マシンを使わずWindows 10上で直接Linuxを実行することができるため、起動や動作にかかる負荷が少なく済みます。

 また、WSLを使用すると、Windows 10の全てのファイルやフォルダにアクセスができます。LinuxのコマンドでWindows 10側のファイルを処理したり、Linuxで処理した結果を「Microsoft Excel」や「Microsoft Word」で読み込んだりすることが可能になります。

WSL 1とWSL 2の違い

 WSL 1とWSL 2では、採用しているアーキテクチャや備えている機能に違いがあります。

アーキテクチャ

 WSL 1は「サブシステム」という、異なるOS環境を実現するための仕組みを使用しています。このサブシステムがLinuxのカーネルへのファンクションコールをWindowsのカーネルファンクションコールに変換して疑似的なLinux環境を実現しています。WSL 1では、Linux実行環境をLinuxカーネルではなく、サブシステムの「LXCore」によって実装しているため、一部のLinuxアプリケーションやユーザーファイルシステムなどを動かすことができません。

 一方、WSL 2ではサブシステムを使用していません。「Light Weight utility Virtual Machine」(軽量ユーティリティー仮想マシン)という専用の仮想マシンを使っています。軽量ユーティリティーVM内でMicrosoft独自のパッチを当てたLinuxカーネル(WSL 2 Linux カーネル)を動かすことで、Linux環境を実現しています。Linuxカーネルを動かせるので、WSL 1で動かすことのできなかったLinuxプログラムも動作させることができます。


WSL 1とWSL 2のアーキテクチャの違い(参考:完全なLinuxがWindows 10上で稼働する? 「WSL 2」とは

機能

 WSL 1とWSL 2の相違点は下図の通りです。

機能 WSL 1 WSL 2
マネージドVM ×
完全なLinuxカーネル ×
システムコールの完全な互換性 ×
OSファイルシステム間でのパフォーマンス ×
  • マネージドVM

 WSL 2では仮想マシンが使用されています。仮想マシンというと、従来の方式と変わりがないと思うかもしれませんが、バックグラウンドで実行される軽量ユーティリティーVMを利用しているため、仮想マシン環境を起動し、コマンドを受け付けるまで約2秒という速さで利用できます。

  • 完全なLinuxカーネル

 WSL 2が使用しているLinuxカーネルは、Windowsの更新プログラムによって保守されます。最新のセキュリティ修正プログラムとカーネルの機能強化が自動的に適用されるため、管理の手間が省けます。

  • システムコールの完全な互換性

 WSL 1ではLinuxカーネルへのファンクションコールを変換するLXCoreサブシステムが使用されていましたが、WSL 2には完全な互換性を持つ独自のLinuxカーネルが使用されています。そのため前述の通り、WSL 1で動かすことのできなかったLinuxプログラムも動作させることができます。

  • OSファイルシステム間でのパフォーマンス

 WSL 1とWSL 2では、Linuxがインストールされる「ローカルファイルシステム」に違いがあります。WSL 1では、Windows 10側でLinuxカーネルを変換して疑似的なLinux環境を用意しています。これに対しWSL 2では、Linuxカーネル自体を動作させており、WSL 2からWindows 10側へのアクセスは、ネットワークアクセス経由で行います。そのため、WSL 2におけるWindows 10側へのアクセスはWSL 1ほど早くありません。

仮想マシン環境との違い

 前述の通り、WSL 2は専用の仮想マシン(軽量ユーティリティー仮想マシン)を使っています。しかし、WSL 2では仮想マシン環境を自動的にバックグラウンドで構築、管理しているため、ユーザーが仮想マシン環境を構築する必要はありません。仮想マシン技術を採用していないWSL 1とほとんど同じ使用感で扱うことができます。

 WSL 2はどのようにして仮想マシン技術を組み込んでいるのか、簡単にWSL 2を起動するところから順を追って説明します。

 「wsl.exe」などを実行しWSL 2を起動すると、Windows側でWSL 2を制御する「Lxssマネージャーサービス(以下、Lxss)」を呼び出し、Linux環境の起動を要求し、仮想マシンをWindows OSのコンテナ支援サービス「ホストコンピュートサービス」を介して立ち上げます。その後Lxssは、ホストコンピュートサービスを介して軽量ユーティリティー仮想マシン環境を起動します。そして最初のプロセスとしてWSL専用のinitが起動し、bash.exeを起動、wsl.exeが動作しているコンソールを介して入出力を行います。

 WSL 2では、Linuxカーネルにext4(fourth extended file system)ファイルシステムを組み込んでおりハイパーバイザー(Hyper-V)を介して仮想ハードディスク(VHD)の上でファイルシステムを動作させています。詳しくはこちらの記事で解説していますので、詳しく知りたい方はご覧ください。

おわりに

 ここまでざっくりと、WSLの概要について解説しました。WSL 1/WSL 2共に@ITでは導入方法を解説(WSL 1WSL 2)していますので、ぜひ確認してください。

参考文献

Windows Subsystem for Linux に関するドキュメント-Microsoft

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る