マイクロソフトのハンセルマンのBlog:
Developers can run Bash Shell and user-mode Ubuntu Linux binaries on Windows 10
Ubuntuの中の人のBlog:
Ubuntu on Windows — The Ubuntu Userspace for Windows Developers
この2つのBlogで実態が明確になったのでまとめてみます。
使用可能になるOS
まもなくリリースされる予定のWindows 10 ”Anniversary” アップデートで使用可能になります。このアップデートで、開発者向けの機能として追加されます。
機能の追加で、Windowsの設定で開発者モードを有効にすると使用できるようになります。これでネイティブなユーザー モードのLinuxシェルが使えるようになり、bashを起動するとWindowsストアを介してCanonicalからWindows上のUbuntuを入手するように促されます。
可能になること
Windows 10 の cmd.exe でUbuntu の User Space と Shell が使用できるようになります。
- Ubuntu の /bin/bash が動作します。
- apt, ssh, rsync, find, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget,apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch…みたいなコマンドが全部使えます。
- SSH
- apt-get (でRedisとかも動かせる)
Windows自体の上で動作する本物のネイティブなBash Linuxバイナリで、高速かつ軽量で、本当のバイナリです。awk、sed、grep、viなど、Linuxツールのすべてを備えた、Windows上の本物のUbuntuイメージです。
仕組み
マイクロソフトとUbuntuが本気になって作りました。
リアルタイムに、Linux の syscalls を Windows の syscalls に変換し処理します。
仮想マシン(ハイパーバイザー層)でも、コンテナー(Docker)でもなく、CygwinのようなWindows用にリコンパイルしたものでもなく、Ubuntuのバイナリがそのままネイティブに動作します。(Ubuntuのバイナリと同じチェックサムのプログラムがそのままWindowsで動作する)
現時点ではオープンソースでは無いけど、マイクロソフトが、「Windows Subsystem for Linux」と呼称する仕組みです。
Ubuntuさんがしたこと
Ubuntu root ファイルシステムをWindows アプリケーションパッケージにしてWindows Storeで提供します。
bashシェルから、/mnt でWindows のファイルシステム(Cドライブ、Dドライブなど)にもアクセスできます。(/mnt/c….)
追記:3/31 8:20
Running Bash on Ubuntu on Windows!で情報が追加されたので追記。
いろんなLinuxのバイナリを動くのを確認しているけど、topはまだ動作しない。MySQLも問題があるけど、多くのLinuxツールが動作することをTestingで確認してるらしい。
gccも動くよ。
rackup
apt-getでgitインストールしとくか。
9:00 追記
bashでviってやったらタスクマネジャーでプロセスとして見える。NTカーネルがフックして、プロセス名を取得する。
IPは分かれて持たず共有するし、ローカルポートもbashのほうとWindowsのほうで共有するよ。
bashからnotepad.exeが叩けたりはしないよ。
ファイルシステムは相互にみれる?
bashから、Cドライブとか見えるし、bashの中でrootとかにあるファイルは、Explorerで参照できる。シームレス。
性能?気になるよね。sysbenchかけてみよう。問題ない値じゃないかい?
これは開発者用の機能ですよ。
subsystemってことは、Interixの焼き直しになるのでしょうか? あるいは、同じ仕組みをスクラッチで作り直したのでしょうか?
Good job! you and ms!
まじか!
ピンバック: 2日目:CentOS7にGUI環境が欲しい | 立命館コンピュータクラブ
ピンバック: 使えないUNIXからゲイツ君がMS-DOS部を盗んでワシら貧乏人に持って来てくれたのが30年前。時は移り、漢字talkはBSDに乗っ取られ(逆)、windowsもUNIX回帰なのか。しかしwindows phone(win10に吸収予定)