Windows で Ubuntu バイナリ(bash)が動作することの概略

マイクロソフトのハンセルマンの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 が使用できるようになります。

Running emacs on Windows

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….)

image

 

追記:3/31 8:20

Running Bash on Ubuntu on Windows!で情報が追加されたので追記。

image

 

いろんなLinuxのバイナリを動くのを確認しているけど、topはまだ動作しない。MySQLも問題があるけど、多くのLinuxツールが動作することをTestingで確認してるらしい。

gccも動くよ。

image

 

rackup

image

 

apt-getでgitインストールしとくか。

image

 

9:00 追記

bashでviってやったらタスクマネジャーでプロセスとして見える。NTカーネルがフックして、プロセス名を取得する。

image

 

IPは分かれて持たず共有するし、ローカルポートもbashのほうとWindowsのほうで共有するよ。

bashからnotepad.exeが叩けたりはしないよ。

ファイルシステムは相互にみれる?

image

image

 

bashから、Cドライブとか見えるし、bashの中でrootとかにあるファイルは、Explorerで参照できる。シームレス。

 

性能?気になるよね。sysbenchかけてみよう。問題ない値じゃないかい?image

 

これは開発者用の機能ですよ。

image

 

image

“Windows で Ubuntu バイナリ(bash)が動作することの概略” への 3 件のフィードバック

  1. subsystemってことは、Interixの焼き直しになるのでしょうか? あるいは、同じ仕組みをスクラッチで作り直したのでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です