『Macはもう不要!? - "UNIX使い"狙い撃ちの「Windows Subsystem for Linux」を検証する(前編)』に続き、Windows 10で追加された「Windows Subsystem for Linux」(WSL)の試用レポートをお送りする。CygwinやMSYS2、(Hyper-Vなどの)仮想Linuxマシンと比較しつつお読みいただきたい。
「Windows Subsystem for Linux」の特徴
Windows Subsystem for Linuxは、Ubuntu開発チーム(Canonical)協力のもと開発されたWindowsサブシステム。LinuxのシステムコールをWindowsのそれへリアルタイム変換するため、高速かつシームレスに動作する。Windowsのバイナリフォーマット(PE)ではなく、Linuxで用いられるELFバイナリをそのまま — Linuxインスタンス下のPicoプロセスとして — 実行できるのだ。
用意される「Ubuntu Linux」(「Ubuntu On Windows」、Ubuntu 14.04 LTSベース)はユーザー空間のみで、カーネル空間はサポートされない。だからデバイスドライバやカーネルモジュールの類いは動作しない。ユーザー空間では扱えないKVMなどの仮想化環境も動作の対象外だ。見方を変えれば、LinuxカーネルにあるがWindowsにない機能は利用できないともいえる。
ただし、procファイルシステム(システムリソースに関する情報をファイルの形でリアルタイムに出力する一種のインターフェース)はサポートされるし、「/dev/null
」や「/dev/random
」などデバイスファイルもわずかながら存在する。
CPUやメモリは、Windowsの状態そのままで認識される。Intel Core i7-3537U(4コア@2.0GHz)と物理メモリ4GBを積むマシンでテストしたが、/proc/cpuinfo
と/proc/meminfo
はWindowsコントロールパネルに表示される情報と同じだった。
「/
」以下のディレクトリ構造はFilesystem Hierarchy Standard(FHS)に準拠しており、各種コマンドは/bin
や/usr/bin
といったお決まりのディレクトリに置かれている。マウントポイントは「/mnt
」と「/media
」のふたつがあり、Windowsの論理ボリューム(Cドライブ)は「/mnt/c
」として自由にアクセスできる。ただし、リムーバブルメディアは自動検出されず、/dev
以下にデバイスファイルが見つからないことからしても、現在のところ外部ドライブはサポートされていないようだ。
実行中のプロセスをpsコマンドで確認すると、init(Linuxの起動後最初に実行されるプロセス)とbashしか存在しないことがわかる。「service --status-all
」を実行しても、ファイルサーバなどのサービス/デーモンはまったく稼働していない。ベータ版という事情もあるのか、必要最低限の機能で動作していると考えていいだろう。