Windows 10でBashやDockerが使えるようになるってホント?その知識、ホントに正しい? Windowsにまつわる都市伝説(57)(2/3 ページ)

» 2016年05月06日 05時00分 公開
[山市良テクニカルライター]

Linux用サブシステムは驚きの新機能? UNIXからの鞍替え?

 ビルド14316から評価できるようになったWindows Subsystem for Linux(WSL)は、現在、β版という位置付けです。そのため、本稿ではインストール方法や詳細な機能の説明はしません。既にInsiderプログラム参加者であって、試してみたいという方は、以下のマイクロソフトの公式ブログを参考にしてください。

 WSLというよりも、ユーザーが直接対話操作することになる「Bash on Ubuntu on Windows」と言った方が分かりやすいかもしれません。マイクロソフトはWindowsの機能の1つとしてWSLを提供します。WSHは、Linuxディストリビューションの中でも人気のあるUbuntuの開発元Canonicalとの協力で開発されているようです。そして、Linuxのシェル環境として、CanonicalからBash on Ubuntu on Windowsがダウンロード提供されます。将来的には、他のディストリビューションのシェル環境も利用できるようになるかもしれません。

 Bash on Ubuntu on WindowsはUbuntuのBashシェル環境ですが、Linuxの標準的なコマンド(ls、grep、awk、sed、sshなど)やユーティリティー(openssl、aptなど)、perl、gccなどの開発環境のバイナリを提供します。現在、SSH接続などのためにopensslで作成する証明書が必要な場合、Windowsではいろいろとツールを準備しないといけません。Bash on Ubuntu on Windowsでopensslをすぐに実行できるというのは、うれしい限りです。

 また、「apt」コマンドを使用して、Ubuntuの標準リポジトリからバイナリパッケージを取得してインストールすることもできます(画面3画面4)。例えば、インストール時に幾つかエラーが出ますが、「Apache2 HTTP Server」は次の3行のコマンドを実行するだけでインストールおよび起動することができました。

apt-get install apache2
mkdir -p /var/lock
/etc/init.d/apache2 start
画面3 画面3 「Bash on Ubuntu on Windows」は、Ubuntu 14.04 LTSのBashシェル環境。Ubuntu向けのネイティブなバイナリを実行できる。エミュレーションや仮想マシン環境ではない
画面4 画面4 Ubuntuのリポジトリから「Apache2 HTTP Server」(apache2)をインストールして実行したところ

WSLは驚きの新機能? それともUNIXからの鞍替え?

 WSLおよびBash on Ubuntu on Windowsは、Windows上で直接Linux向けにコンパイルされたバイナリをユーザーモードで実行できます。Hyper-Vで動くLinux仮想マシンではありませんし、Cygwinのようなエミュレーションでもありません。

 これには驚くかもしれませんが、古くからのWindowsを知っている方なら「前にも似たようなテクノロジーがあったじゃないか」と思っているでしょう。ただ、当時はLinuxではなく、UNIXとの相互運用性のためのPOSIX(Portable Operating System Interface)サブシステムと、UNIX(BSDおよびSVR5)の標準的なコマンド、ユーティリティー、開発環境でした。

 Windows NTにはPOSIXサブシステムが標準搭載されており、Windowsカーネル(NTカーネル)上でUNIX互換環境としてPOSIX環境を提供していました。その後、POSIXサブシステムは「Interix」に置き換えられ、有償の「Services for UNIX(SFU)」(後に無償化)としてユーティリティーやSDK(Software Development Kit)とともに提供されるようになりました。

 Windows Vista(Ultimate/Enterpriseエディションのみ)/Windows Server 2008以降では、「UNIXベースアプリケーション用サブシステム(Subsystem for UNIX-based Application(SUA)」という機能名に変更されました(画面5)。

画面5 画面5 Windows 7のSUA用ユーティリティーおよびSDKが提供するCシェル環境

 その後、SUAはWindows 7/Windows Server 2008 R2までサポートされましたが、Windows 8/Windows Server 2012で削除されました。以下のドキュメントに説明されているように、SUAが提供されなくなったWindows 8/Windows Server 2012からは、「Hyper-Vの仮想マシンでLinuxを動かす」「CygwinのPOSIXエミュレーションに切り替える」「MinGWやMinGW-W64(Win32 APIヘッダを提供するGNUツール群)を利用してUNIXアプリケーションをWindowsに移植する」といった方法が紹介されています(画面6)。

画面6 画面6 Windows 8.1上のMinGW-W64のBashシェル環境

 このようにWSLは、かつてSFUやSUAと呼ばれていたものが、モダン(現代風)になってよみがえったという感じなのです(図1)。Webの開発者に人気なのは、今はUNIXではなく、オープンなLinuxですから。

図1 図1 Windows 7以前は、POSIX(Interix)サブシステムがUNIX互換環境を提供していた。Windows 10は今人気のLinux用サブシステムを搭載することに

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。