Windows Subsystem for Linux

Linuxのバイナリ実行ファイルをWindows 10およびWindows Server上でネイティブ実行するための互換レイヤー

Windows Subsystem for LinuxWSLLinux用Windowsサブシステム)とは、LinuxプログラムWindows 10/11およびWindows Server上で実行するための仕組みである。マイクロソフトが提供し、最初のバージョンであるWSL1のベータ版が2016年8月に、正式版が2017年10月に公開された。2019年2月には次バージョンであるWSL2が公開された[1][2]

Windows Subsystem for Linux

Microsoft Windows コンポーネント
Windows 10上で実行されたBash
詳細
種別 互換レイヤー仮想化
標準提供 Windows 10, version 1709
Windows Server, version 1709
Windows 10, version 1607(ベータ版)
置換 Microsoft Windows Services for UNIX

特徴

編集

従来からWindows上でUnix/Linuxプログラムを実行する方法として仮想機械(例:Hyper-V)や互換レイヤー(例:Cygwin)があった。実際に最初のバージョンであるWSL1はLinuxシステムコールをWindowsシステムコールへ変換しており、後者の互換レイヤーに近い。また、WSL2はLinuxカーネルそのものをHyper-Vで実行するため前者の仮想機械に近い。

この意味で、WSLの特徴はマイクロソフト自身がWindows OSの一部として公式に提供している事である。また、CygwinとWSL1を比較した場合、前者がUNIXのソフトをWindows向けに再コンパイルし、EXEフォーマット実行ファイルを利用するのに対して、後者はLinuxの実行ファイル形式であるELFをそのまま利用するという違いもある。

Windows 10 MobileでのAndroidアプリ実行を目指したプロジェクトであるProject Astoria(リリースされなかった)を発祥とする[3]

マイクロソフトはWSLを「主として開発者、特にWeb開発者やオープンソースプロジェクトを利用する開発者のためのツール」としている[4]

マイクロソフトとカノニカルの提携により、Windows 10 version 1607 (Anniversary Update) のベータ版で、Ubuntu 14.04 (Trusty Tahr) [5]をインストールし、そのプログラムをWSL上で実行することが可能になった[6][7][8]

WSL1はLinuxシステムコールとWindowsシステムコールを変換するレイヤーとUbuntuのプログラムを提供する。これはBashシェルやLinuxコマンドラインツール(例:sedawkなどのCoreutils)やインタプリタ(例:RubyPythonなど)[4]を含む[9]

Linuxカーネルそのものを利用しないのでプログラムの互換性は仮想マシンの方が優れるが、WSLはより少ないリソースしか利用しない利点がある[4][10]。逆説的に、WSLは全てのLinuxソフトウェアを動かせるわけではなく、WSLが提供しないLinuxカーネルサービスを必要とするものは実行不可能である[3]

グラフィカルユーザインタフェースを使用するアプリケーションは、Windows上にXサーバ(Xming, VcXsrv Windows X Serverなど)をインストールする事で利用可能である[11]

Windows 10 version 1607 (Anniversary Update) と version 1703 (Creators Update) でベータ版を、version 1709 (Fall Creators Update) から正式版を利用できる。ただし Windows 10 S[12]やWindows 10 IoT Coreを除く。Windows 10 Enterprise 2016 LTSBはリリース当時WSLがベータ版だったため未提供[13]である。Windows Serverでは、Windows 10 version 1607とほぼ同時にリリースされたWindows Server 2016には搭載されていなかったが、2017年8月8日にリリースされた Insider Preview Build 16237 から利用可能になり[14][15]Windows Server, version 1709 にて正式搭載された。

Windows 10 version 1703までのベータ版では、Windows 10の開発者モードを有効化しなければならない制限があった。2017年10月に公開されたWindows 10 version 1709では、当制限が撤廃された正式版が提供されている[16]

2019年6月、従来のWSL1とは異なる仕組みのWSL2が発表され[17]、Windows 10 May 2020 Update(バージョン 2004)で正式サポートとなった。WSL1と並行してサポートされる。

WSL1との違いは以下のとおりである。

  • 本物のLinuxカーネルを使用する[18]
  • Linuxカーネルを仮想マシン上で動作させる。
  • Linux側のファイルシステムはNTFS上のディレクトリではなくディスクイメージファイルに格納する。
  • ホストとなるWindowsとは別のIPアドレスを使用する。

本物のLinuxカーネルを使用することで互換性が向上した。また、WindowsのI/Oスタックをバイパスする事でディスクI/O性能が向上した[19]。デメリットとして起動に数秒を要することやメモリー・フットプリントの悪化があげられる。

経緯

編集

2016年3月30日(米国時間)に開催されたマイクロソフトのBuild 2016カンファレンスで発表された[20]

2016年4月6日にリリースされたWindows 10 Insider Preview ビルド 14316において最初に公開された[21]

2016年8月2日(日本時間8月3日)に公開されたWindows 10の半期チャンネルのアップデートである Windows 10, version 1607 (Anniversary Update) によってベータ版の提供が開始された[22]

2017年8月8日、Windows ServerのInsider Preview Build 16237からWindows Serverでも利用可能になった[14]

2017年10月17日(日本時間10月18日)に公開されたWindows 10の半期チャンネルのアップデートである Windows 10, version 1709 および Windows Server, version 1709 において正式版となった。Windows 10の開発者モードを有効にしなくても利用可能となった[23][24]

2019年5月6日(米国時間)に開催されたマイクロソフトのBuild 2019カンファレンスで仮想マシンベースの新しいWSL、WSL 2を発表[25]

2019年6月12日(日本時間6月13日)WSL 2が利用可能な最初のWindows 10 Insider Preview、ビルド18917が公開される[26]

対応ディストリビューション

編集

ベータ版ではUbuntuのみサポートされていたが、正式版となったWindows 10 Fall Creators Updateから各種ディストリビューションが対応された[27]Microsoftストアからそれぞれインストールでき、システムも独立しているため併用可能である。WSLのインフラストラクチャとツールのサポートはマイクロソフトが、ディストリビューション内部のサポートはディストリビューションの配布元が、それぞれ提供している。

WSL提供開始当初のWindows 10 version 1607 (Anniversary Update) のUbuntuバージョンは14.04であったが、2017年4月11日に公開されたversion 1703 (Creators Update) では、16.04 (Xenial Xerus) に変更された[28]。2018年7月時点でUbuntu 16.04 LTSと18.04 LTSが、2023年5月現在、18.04 LTS、20.04 LTS、22.04 LTSがCanonicalから配布されている。その他提供されているディストリビューションは以下の通りである:

Whitewater Foundry, Ltd. Co.によるDebianベースのWSL専用ディストリビューション
Whitewater Foundry, Ltd. Co.によるScientific LinuxベースのWSL専用ディストリビューション
Whitewater Foundry, Ltd. Co.によるFedoraベースのWSL専用ディストリビューション
Alpine LinuxベースのWSL専用ディストリビューション。Alpine Linux development teamによるものではない。

使用例

編集

Ubuntuの場合

編集

パッケージを最新版に更新する。

$ sudo apt update
$ sudo apt upgrade

NetHackをプレイする。

$ sudo apt install nethack
$ nethack

X Window Systemのクライアントを実行する(あらかじめXmingなどのXサーバーをWindows上で起動しておく)

$ sudo apt install x11-apps
$ sudo apt install x11-utils
$ sudo apt install x11-xserver-utils
$ export DISPLAY=:0
$ xeyes
$ firefox

Windowsのコマンド プロンプトからUbuntuのls、date、sort、uniqコマンドを実行する

C:\Users\a>bash -c "ls -l '/mnt/c/Program Files'"
C:\Users\a>bash -c "date '+%Y年%m月%d日 %H時%M分%S秒'"
C:\Users\a>bash -c "sort|uniq" < "C:\work\テストデータ.txt"

Windowsのコマンドと連携する(bash のlsコマンドの結果をWindowsのclip.exeでクリップボードに送る例)

$ ls -l '/mnt/c/Program Files' | clip.exe

Windowsのデスクトップにあるファイルをコピーする(***はWindowsユーザ名)

$ sudo cp /mnt/c/Users/***/Desktop/ファイル名 ファイル名

脚注

編集
  1. ^ 【WSL入門】第1回 Windows 10標準Linux環境WSLを始めよう”. 2023年1月7日閲覧。
  2. ^ Windows 10/11でLinux環境「WSL」を始める第一歩”. 2023年2月19日閲覧。
  3. ^ a b Why Microsoft needed to make Windows run Linux software”. Ars Technica. コンデナスト・パブリケーションズ (6 April 2016). 2016年10月2日閲覧。
  4. ^ a b c Frequently Asked Questions for WSL”. マイクロソフト. 2016年10月2日閲覧。
  5. ^ Ubuntu 16.04 is slow in bash but ubuntu 14.04 was faster
  6. ^ Run Bash on Ubuntu on Windows”. Building Apps for Windows. マイクロソフト (30 March 2016). 2016年10月2日閲覧。
  7. ^ Why Microsoft Making Linux Apps Run on Windows Isn’t Crazy”. Wired. Condé Nast (30 March 2016). 2016年10月2日閲覧。
  8. ^ Kirkland, Dustin (30 March 2016). “Ubuntu on Windows – The Ubuntu Userspace for Windows Developers”. Ubuntu Insights. カノニカル. 2016年10月2日閲覧。
  9. ^ Bash on Ubuntu on Windows”. MSDN. マイクロソフト (9 April 2016). 2016年10月2日閲覧。
  10. ^ 亀川和史 (2016年8月23日). “Bash on Ubuntu on Windowsとは? そのインストールと使い方”. Digital Advantage. 2016年10月2日閲覧。
  11. ^ Aleksandersen, Daniel (7 April 2016). “Running Linux desktop apps on the Windows Subsystem for Linux”. Slight Future. 2016年10月2日閲覧。
  12. ^ Will Linux distros run on Windows 10 S?” (2017年5月18日). 2017年6月1日閲覧。
  13. ^ When I reinstall my win10 2016 LTSB, bash can not install · Issue #1281 · Microsoft/BashOnWindows”. 2016年12月13日閲覧。
  14. ^ a b Windows Subsystem for Linux on Windows Server - Building Apps for WindowsBuilding Apps for Windows
  15. ^ What’s new in WSL in Windows 10 Fall Creators Update – Windows Command Line Tools For Developers
  16. ^ Windows Subsystem for Linuxが正式版へ”. CodeZine. 翔泳社 (2017年7月31日). 2017年10月21日閲覧。
  17. ^ https://forest.watch.impress.co.jp/docs/news/1190081.html
  18. ^ 従来のWSL1はLinuxのシステムコールをWindows APIに変換する方式だった。
  19. ^ https://github.com/Microsoft/WSL/issues/873
  20. ^ Frederic Lardinois (2016年3月31日). “Build 2016で驚きの発表―Microsoftはこの夏Windows 10でBashシェルをサポート”. AOL Online Japan, Ltd. 2016年10月2日閲覧。
  21. ^ Announcing Windows 10 Insider Preview Build 14316”. Windows Experience Blog. マイクロソフト (6 April 2016). 2016年10月2日閲覧。
  22. ^ 海上忍 (2016年8月29日). “Macはもう不要!? - "UNIX使い"狙い撃ちの「Windows Subsystem for Linux」を検証する(前編)”. Ascii.jp. 2016年10月2日閲覧。
  23. ^ 後藤大地 (2017年10月19日). “Windows 10 Fall Creators Update、注目の新機能・変更点まとめ”. マイナビニュース. マイナビ. 2017年10月21日閲覧。
  24. ^ 樽井秀人 (2017年7月31日). ““Windows Subsystem for Linux”が正式版に ~今秋公開の「Fall Creators Update」で”. 窓の杜. インプレス. 2017年10月21日閲覧。
  25. ^ Craig Loewen (2019年5月6日). “Announcing WSL 2”. Microsoft. 2019年6月24日閲覧。
  26. ^ Announcing Windows 10 Insider Preview Build 18917”. Microsoft (2019年6月12日). 2019年6月24日閲覧。
  27. ^ 樽井秀人 (2017年11月28日). “「Fall Creators Update」で広がるWindows 10の世界 ~複合現実とLinux対応”. 窓の杜. Impress Watch. 2018年3月7日閲覧。
  28. ^ 亀川 和史 (2017年3月7日). “Bash on Ubuntu on Windowsの、Creators Updateでの強化点&新機能”. Build Insider. Digital Advantage. 2017年6月16日閲覧。
  29. ^ a b 樽井秀人 (2017年7月24日). “「openSUSE Leap」がWindows 10の“ストア”に登場 ~「SUSE Linux Enterprise Server」も”. 窓の杜. Impress Watch. 2018年3月7日閲覧。
  30. ^ 樽井秀人 (2018年3月6日). “Linuxディストリビューション「Kali Linux」が“ストア”から導入可能に”. 窓の杜. Impress Watch. 2018年3月7日閲覧。
  31. ^ 「Debian」と「Kali Linux」がMicrosoftストアからダウンロード可能に”. ZDNet (2018年3月7日). 2018年3月8日閲覧。

関連項目

編集

外部リンク

編集