Windows 10 Insider Preview Build 14316でBash on Ubuntu on Windows (Beta)を試すことができるようになってます。
Windows 10 Insider Previewは不安定なのでWindowsの再インストールが必要になる場合があります。
普段使うマシンでは実行しないでください。
Table of Contents
1 Windows 10 Insider Preview Build 14316の入手
WindowsのホームページでWindows Insider Programに参加します。
Windowsのアカウントでサインインした後、Windows Insider Programへ参加します。
後ほど、メールが送信されてきます。
Insider Previewビルドの入手で開始するを選択します。
Windowsアカウントでログインします。
開始するを選択するとWindows 10が再起動されます。
設定 -> 更新とセキュリティ-> Windows Update -> 詳細オプション
すぐさまダウンロードできる訳ではないようです。私は半日後に以下のようになりました。
ダウンロード後に再起動するとアップデートが適用されます。
2 Windows Subsystem for Linux (Beta)を有効にする
Windows Subsystem for Linux (Beta)を使えるようにする為に、開発者モードを有効にします。
Windowsスタートボタンを右クリックをクリックして、コントロールパネルを起動します。
プログラム、Windowsの機能の有効化または無効化からWindowsの機能ダイアログを起動します。
3 Bash on Ubuntu on Windowsの起動
cmd.exeからbashとタイプします。
Ubuntu on Windowsをインストールするかと尋ねられるのでyとタイプします。
Microsoft Windows [Version 10.0.14316] (c) 2016 Microsoft Corporation. All rights reserved. C:\Users\hiroom2>bash -- Beta feature -- This will install Ubuntu on Windows, distributed by Canonical and licensed under its terms available here: https://aka.ms/uowterms Type "y" to continue: y Downloading from the Windows Store... 100% Extracting filesystem, this will take a few minutes... ??????????????????????????... root@localhost:/mnt/c/Users/hiroom2#
2回目以降はBash on Ubuntu on Windowsプログラムからも起動できます。
4 特徴
いくつか分かった特徴を記載します。
4.1 Cドライブは/mnt/c
cygwinのcygdriveと似てますね。
# ls /mnt/c/ ls: cannot access /mnt/c/Documents and Settings: Input/output error ls: cannot access /mnt/c/pagefile.sys: Permission denied ls: cannot access /mnt/c/swapfile.sys: Permission denied 777fa58238d5be4dd24ee1b7ac0530d4 Data PerfLogs swapfile.sys $WINDOWS.~BT 7e0ee13458c086d905f1b757d2549b Documents and Settings ProgramData $SysReset Windows.old 990a498c7b5935f8bc09 Logs Program Files System Volume Information $Windows.~WS ...
これはマウントとは別扱いのようです。
root@localhost:/mnt/c/Users/hiroom2# mount rootfs on / type rootfs (ro,relatime) tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,mode=755) devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600) proc on /proc type proc (rw,relatime) sysfs on /sys type sysfs (rw,seclabel,relatime)
dfは現状動かないようです(/etc/mtabがない)。
root@localhost:/mnt/c/Users/hiroom2# df -h df: cannot read table of mounted file systems: No such file or directory
4.2 pstreeの結果
プロセスは全然起動してないです。このinitはbashを呼び出してるだけなのでしょうか。
カーネル起動パラメータにinit=/bin/bashを渡した場合と似てます。
root@localhost:/mnt/c/Users/hiroom2# pstree init───bash───pstree root@localhost:/mnt/c/Users/hiroom2# cat /proc/cmdline BOOT_IMAGE=/kernel ro
Bash on Ubuntu on WindowsからWindowsのプロセスは見えないようです。
WindowsのタスクマネージャからはBash on Ubuntu on Windowsのプロセスは見えないようです。
4.3 作成したファイルのpermission
NTFS特徴というか、rootで0777がデフォルトのようです。
root@localhost:/mnt/c/Users/hiroom2/Documents/workspace# echo hello > hello.txt root@localhost:/mnt/c/Users/hiroom2/Documents/workspace# ls -lh hello.txt -rwxrwxrwx 1 root root 6 Apr 11 16:03 hello.txt
4.4 性能
フィボナッチ数列を愚直に再帰的に求めるpythonコードを同じスペックの仮想マシン環境で測定してみました。
#!/usr/bin/env python def fib(n): if n < 2: return n return fib(n - 1) + fib(n - 2) if __name__ == '__main__': print('fib(36) = %d' % fib(36))
以下はUbuntu 14.04上の結果です。
hiroom2@ubuntu-14:~/src/py$ time python fib.py fib(36) = 14930352 real 0m4.437s user 0m4.398s sys 0m0.026s
以下はUbuntu on Windows上の結果です。
root@localhost:/mnt/c/Users/hiroom2/Documents/workspace# time python fib.py fib(36) = 14930352 real 0m4.437s user 0m4.406s sys 0m0.031s
CPUとメモリのみの処理だと、性能はほぼ変わらないようです。
これはC言語で作成したバイナリでも同様でした。