IT/ゲームまとめ

PC系に関するまとめ、記事ブログです

Macはもう不要!? - "UNIX使い"狙い撃ちの「Windows Subsystem for Linux」を検証する(前編)

Build 2016で発表され話題となった「Windows 10でネイティブ動作するbash」(「Windows Subsystem for Linux」)。ベータ版という位置付けだが、先日Windows 10 Anniversary Updateに含まれる形で提供が開始され、いよいよユーザーに身近な存在となった。その概念から導入の実際、ネイティブLinux環境との違いなどについて、2回にわたりレポートする。

 

 

Windows Subsystem for Linux」の衝撃

 MicrosoftWindows 10向けに提供する「Windows 10 Anniversary Update」は、2015年11月公開の「Threshold 2」以来10ヵ月ぶりとなる大型アップデート。生体認証機能をサポートする「Windows Hello」や音声アシスタント「Cortana」など多くの機能が強化され、規模としてはThreshold 2をしのぐといっていい。

 そのうち本稿で採り上げるのは、UNIX系OSで広く利用されているシェル「bash」がネイティブサポートされたこと。Ubuntu Linuxをサブシステムで動作させる機構が追加されたため、bashのみならずLinuxのコマンドをWindows(実際にはコマンドプロンプト)から透過的に利用できるようになったのだ。

bash」などLinuxのプログラム(コマンド)がWindows 10上でネイティブ動作する

 これまでもWindowsにはCygwinやMSYS2などUNIXシェルが動作する環境は存在したが、それらが依存するPOSIX互換レイヤーがオーバーヘッドを生じるうえ、ディレクトリ構造がWindowsともUNIXとも異なってしまうなど"クセ"があり、WindowsUNIX由来の機能/コマンドをスムースに利用する仕組みが存在しなかった。

 一方、対比されることが多いOS XmacOS)といえば、ネイティブのBSDレイヤーを持ちSingle UNIX Specificationの認証を受けた「UNIX」であり、LinuxなどのPC-UNIXソースコードレベルで高い互換性を備える。LAMPLinuxApacheMySQL+{PHP|Perl|Python})という言葉があるように、WEBアプリ開発環境をLinux上で構築することが一種のトレンドとして存在するが、同様の環境をOS X上で構築することは難しくない。Windowsでこれを実現しようとなると、仮想マシンを用意したりCygwinに手を入れたりひと苦労で、結構な数のデベロッパーがMacに移行したこともうなずける。

 Windows 10 Anniversary Updateに含まれる「Windows Subsystem for Linux」は、まさにそこを意識した機能といえる。仮想環境でもPOSIX互換レイヤーでもなく、サブシステムとしてUbuntu Linuxを動作させれば、ほぼネイティブにLinuxの機能(バイナリ)がWindowsから呼び出せる。Build 2016での発表以来、シェル「bash」がネイティブ動作することばかりクローズアップされているが、bashはあくまで"窓口"に過ぎず、その本質はLinuxWindowsサブシステムで動作可能にしたことにある。

Windows Subsystem for Linuxの概念図(MSDN/Channel 9より)

Ubuntu On Windows」のセットアップ

 繰り返しになるが、Windows 10上でネイティブ動作するbash、およびLinuxのプログラム(コマンド)を手に入れるには、Windows 10 Anniversary Updateを適用し、その後「Ubuntu on Windows」のセットアップを行なうという手順になる。

 誤解のないように補足しておくと、Ubuntu Linuxをネイティブ動作させるためのサブシステム(Windows Subsystem for Linux)はWindows 10 Anniversary Updateにオプションの形で含まれるが、Ubuntu Linuxのイメージファイルは後から追加することになる。

 セットアップは若干煩雑で数回のシステム再起動を伴うが、いったん済ませてしまえば次回以降はコマンドプロンプトから「bash」を実行するだけでLinuxとしての機能を呼び出せる。まずは、作業を進めてみよう。

 

1. Windows 10 Anniversary Updateの実行

 Windows 10 Anniversary Updateは、Windows Update経由で自動アップデートが始まるのを待つか、Windowsの更新履歴から「Windows 10 更新アシスタント」を手動実行するか、どちらかの方法で実行できる。ダウンロードとアップデート処理を合計すると、ネットワークの混雑度合いにもよるが数時間から半日程度かかる可能性があるため、時間に余裕があるときの作業をお勧めする。

手動でWindows 10 Anniversary Updateを実行する

2. Windows Subsystem for Linuxの有効化

 Ubuntu On Windowsを実行するために必要な「Windows Subsystem for Linux」(8月現在ベータ版)は、デフォルトでは無効化されている。これを有効化するには、コントロールパネルで「表示方法:小さいアイコン」の状態で「プログラムと機能」を選択し、サイドバーにある「Windowsの機能の有効化または無効化」をクリック、現れた画面で「Windows Subsystem for Linux(Beta)」をチェックする。システム再起動を促されたら、そのまま再起動しよう。

 
コントロールパネルで「表示方法:小さいアイコン」の状態に変更し、「プログラムと機能」を選択   「プログラムと機能」が開いたら、サイドバーにある「Windowsの機能の有効化または無効化」をクリック
 
あるいは、タスクバーにある検索スペース(Cortana)で、「Windowsの機能の有効化または無効化」と入力し検索すると手っ取り早い
コントロールパネルから「Windows Subsystem for Linux」を有効化する

3. 開発者モードを有効にする

 これでWindows Subsystem for Linuxは有効化されたが、Ubuntu on Windowsをインストールするには、開発者モードを有効にする必要がある。「設定」アプリの「更新とセキュリティ」を開き、サイドバーにある「開発者向け」をクリック、表示された「開発者向け機能を使う」にある「開発者モード」ラジオボタンを有効にすれば準備完了だ。

 
「更新とセキュリティ」を開き、サイドバーにある「開発者向け」をクリック   「開発者向け機能を使う」にある「開発者モード」ラジオボタンを有効にすれば準備完了
「設定」アプリから開発者モードを有効にする

4. 「bash」を起動する

 Windows Subsystem for Linuxを有効にすると、Windowsのシステムフォルダ(C:¥Windows¥System32)に「bash.exe」が用意される。この実行ファイルはLinuxbash(/bin/bash)とは別モノで一種のラッパーとして機能し、初めて実行したときにはWindowsストアから「Ubuntu on Windows」のイメージファイルをダウンロードを試みるものだ(開発者モードでなければ拒否される)。

 bash.exeを実行するには、コマンドプロンプトを起動して「bash」とだけ入力し実行すればOK。これだけで、Windowsストアからのダウンロードが自動スタートする。

コマンドプロンプトを起動し「bash」を実行すると、Ubuntu on Windowsのダウンロードが始まる

5. ユーザーアカウントの登録

 Ubuntu On Windowsのダウンロードが完了すると、ユーザーアカウントの作成へと進む。適当なユーザー名とパスワードを入力すれば、そのユーザー名でホームディレクトリ(/home/****)が作成され、一連の作業が完了する。なお、Windowsコマンドプロンプトはマルチバイト文字の扱いに不具合があるのか、メッセージの一部が崩れてしまうことがあるが、入力された文字がASCIIコードであれば処理は問題なく進む。

ユーザーアカウントを作成すれば、いよいよUbuntu on Windowsを利用できる

 次回は、Ubuntu on WindowsLinuxネイティブ環境の違いや、日々活用するための環境設定についてレポートする予定だ。

 

 

 

 

 

ascii.jp