[Vol.１]BoWにAnsibleをインストールする

# Bash on Ubuntu on Windows

去る2016年8月2日（日本時間で3日）にMicrosoftがリリースしたWindows 10向けのUpdateである「Windows 10 Anniversary Update」に注目の機能があった。**Bash on Ubuntu on Windows**だ。

* Windows:MicrosoftのOS
* Ubuntu:Linuxディストリビューションの一種
* Bash:Linuxのシェル

簡単に言えば「Windows上でUbuntuのBashが動きますよ」ということ。

Windows上でBashといえばCygwinやMinGW上で動かすのが通例だった。これらはWindows上でLinuxのツールが動いている風にしているのであり、Linuxのバイナリが動いているわけではない。しかし、BoWに関する解説記事を読むと、BoWではどうやら通常のUbuntu上で動くバイナリがそのまま動くらしい。ほんまかしら。よくわからん。

とにかく、Windows上にわざわざCygwinやMinGWを入れることなく、また、VirtualBoxやVMWareなどの仮想環境を構築してその上の仮想マシンにLinuxを入れることなく、ほぼデフォルトでWindowsのコマンドプロンプトからBashが起動できるとのこと。

じゃあ、そこへAnsibl入れてみたらどうかしら？ということでやってみた。今回の記事はVol.1として、BoWの有効化からBashの機能確認までの手順を紹介する。

# BoWを有効にする

まずはWindows 10上でBashが動くように、つまりBowを有効にしなければならない。が、Windows Insider Previewに参加した都合上、Anniversary Updateを導入する前になんやかんやごちゃごちゃして有効化していた。

なので、正式な手順ではないかもしれないが、それっぽい手順を示す。

## Window Subsystem for Linux(Beta)の有効化

Bash on Ubuntu on Windowsじゃねーのかよ、という細かな点はさておき、Windows Subsystem for LinuxというものがWindowsの機能として提供されており、これを有効化する。

Win+SのショートカットキーによりCortanaを起動し、テキストボックスに「con」と入力して出てくる検索結果から「コントロール パネル」を選択する。

![001_cortna-コンパネ.png](https://qiita-image-store.s3.amazonaws.com/0/4247/074d692c-5334-205c-36f7-7ff8fcf12d06.png)

> ほぼはじめてCortanaをつかったのだが、これは便利だ。わざわざメニューから探して開いて、また、探して開いてを繰り返さなくても主要な機能は検索から一発でたどり着ける。ただし、検索のテキストボックスには日本語が入らない。。。でもさほど支障はないんだなぁ。

開いたコントロールパネルから「プログラムと機能」を開く。

![002_コンパネ.png](https://qiita-image-store.s3.amazonaws.com/0/4247/9fe04736-1c8a-7cc2-031c-e36d27076d58.png)

> 「あ、Cortanaから”Program"を検索したら一発じゃねーか」と思ったが、Insider Preview版の影響か設定のウィンドウが一瞬開いてすぐ閉じてしまう。不具合としても報告されているらしいので、回避策として上記手順となっている。手元のマシンでCortanaからいけるようであればそのほうが楽ちんだろう。

![W004_Windowsの機能の有効化・無効化.png](https://qiita-image-store.s3.amazonaws.com/0/4247/84565c29-2652-7112-314b-666175e265ce.png)

「Windowsの機能」のウィンドウから「Windows Subsystem for Linux(Beta)」を探し、行頭のチェックボックスをオンにし、[OK]ボタンをクリックする。機能の有効化の処理が行われ、システムの再起動を促されるので、素直に再起動を行う。

システムが再起動したら、またもやWin+SでCortanaを起動し、テキストボックスに「cmd」を入力する。検索結果の「コマンド プロンプト」上で右クリックして表示されるメニューから「管理者として実行」をクリックする。

![005_管理者でコマンドプロンプト起動.png](https://qiita-image-store.s3.amazonaws.com/0/4247/d5d0bb14-d49d-33ad-0f7c-a61d78135607.png)

起動したコマンドプロンプト上で以下を実行する

```bash
C:\WINDOWS\system32>bash
```

実行後、以下のように表示されるので、適時「y」を入力してすすめる。

```bash
C:\WINDOWS\system32>bash
-- ベータ機能 --
これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布さ
れる製品であり、次のサイトに示される条件に基づいてライセンスされています。
https://aka.ms/uowterms

続行するには、"y" を入力してください: y
Windows ストアからダウンロードしています... 100%
ファイル システムを展開しています。この処理には数分かかります...
Would you like to set the Ubuntu locale to match the Windows locale (ja-JP)?
続行するには、"y" を入力してください: y
既定の UNIX ユーザー アカウントを作成してください。ユーザー名は、Windows のユーザー名と
一致する必要はありません。
詳細: https://aka.ms/wslusers を参照してください
新しい UNIX ユーザー名を入力してください: user
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: password updated successfully
インストールが正常に終了しました

C:\WINDOWS\system32>
```

これでインストールが完了した。再び「bash」と入力する。

```bash
C:\WINDOWS\system32>bash
user@PC:/mnt/c/Windows/System32$
```

さらに「cd」でホームディレクトリに移動してみる。

```bash
user@PC:/mnt/c/Windows/System32$ cd
user@PC:~$
```

うむ。Bashっぽい動きをしている。何が入ったか「uname」で確認してみよう。

```bash
user@PC:~$ uname --a
Linux PC 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux
masayuki@MASAYUKI-PC:~$
```

きちんと「Linux」を主張しています。

# Vol.2につづく

今回インストールを行ったBash上にAnsibleを入れていく。ここまででは、BoWも初期状態であるので、Ansibleを入れるにもそう単純にはいかなかった。。。
次回は、この初期の状態からAnsibleが動くまでの手順について示す。

[[Vol.2]BoWにAnsibleをインストールする](http://qiita.com/ringo0321/items/c1a799d7dd7036bcef6f)

# おまけ

いろいろと試行錯誤の中でこのBashをインストール/アンインストールする際に必要な情報を整理しておきます。

## インストール

インストールは以下の段階が必要と思われます。ただし、正式なAnniversary Updateを普通に入れた場合、このいずれかの段階の状態かよくわかりません。お許し下さい。

* Windwosの機能として「Window Subsystem for Linux(Beta)」を有効にする
* コマンドプロンプトで`bash`コマンドを実行しBashをインストールする
* またはコマンドプロンプトで`lxrun /install`を実行しBashをインストールする

３つ目の`lxrun`のコマンドは、Bashをインストールするために設けられたコマンドのようです。ちなみにヘルプは以下のように表示されます。

```bash
C:\WINDOWS\system32>lxrun /?
Performs administrative operations on the LX subsystem

Usage:
    /install - Installs the subsystem
        Optional arguments:
            /y - Do not prompt user to accept or create a subsystem user
    /uninstall - Uninstalls the subsystem
        Optional arguments:
            /full - Perform a full uninstall
            /y - Do not prompt user to confirm
    /setdefaultuser - Configures the subsystem user that bash will be launched as. If th
e user does not exist it will be created.
        Optional arguments:
            username - Supply the username
            /y - If username is supplied, do not prompt to create a password
    /update - Updates the subsystem's package index

C:\WINDOWS\system32>
```

このコマンドで、インストール/アンインストール/デフォルトユーザの設定/システムのアップデートができるようです。

## アンインストール

アンインストールには以下の段階が必要かと思われます。

* コマンドプロンプトで`lxrun /uninstall /full`を実行し、Bashをアンインストールする
* Windwosの機能として「Window Subsystem for Linux(Beta)」を無効にする
* BoWのインストールディレクトリを削除する

３つ目のインストールディレクトリだが、Windwosのデフォルトの設定ではみることができない。エクスプローラの「表示-オプション」で表示される「フォルダー オプション」内の「表示-詳細設定」の項目内から以下の設定を無効（表示する）にしておく。

* ファイルおよびフォルダー - 保護されたオペレーティング システム ファイルを表示しない（推奨）

上記設定の上で、以下のパスを確認すると「lxss」のフォルダが`%LocalAppData%\LxSS`に表示される。このフォルダはWindowsの機能上でBoWを無効化した状態であれば削除することができる。