Build に合わせて情報が出てきたものですが。
Windows 10でUbuntuのBashが動作可能に?
[速報]マイクロソフト、BashシェルをWindowsに搭載。Emacs、VT100などサポート。Build 2016
詳細はこちら。
Ubuntu on Windows — The Ubuntu Userspace for Windows Developers
Developers can run Bash Shell and user-mode Ubuntu Linux binaries on Windows 10
開発者がWindows 10でBashシェルとユーザー モードのUbuntu Linuxバイナリを実行可能に
現状は、Ubuntu 14.04 LTS となっているようですが、Ubuntu 16.04 LTS への置き換えは行われるようですね。
apt でパッケージ入れたりと、Windows 上で Ubuntu 動いている感じで環境整えられるんですね。
今後の情報は、Windows Command Line を見ておくとよさげです。
Channel9 の Running Bash on Ubuntu on Windows! がデモも含まれていておすすめです。
vi / gcc / Ruby の実行などが行われているデモが確認できるかと。
仕組みとしては以下のスライドが基本かと。
Windows 上で、Ubuntu のユーザーモードが実行され、ネイティブの Linux のバイナリが実行できるようになっています。
システムコールについては、Windows のものをマッピングすることで、動作するようですね。
以下、情報見ながらのメモ
この機能自体は、まだ使用することはできず、Build で発表された、「Windows 10 Anniversary Update」で使用できるようになるようです。
# Insider Build にしておけば、正式提供の前に利用できるようになりそうです。
機能としては、Ubuntu on Windows と呼ばれていて、Windows の設定から、開発者モードを有効にすることで、Ubuntu on Windows from Canonical をWindows ストア経由でインストールできるようですね。
Cywgwin を使用した場合の Windows 向けのリコンパイルは必要なく、Hyper-V などの仮想化の層は通さずに、Ubuntu の ELF バイナリが、Windows Subsystem for Linux 上で動作している Ubuntu のユーザーモードで、そのまま動作するのが、特徴となるようです。
そのため、Ubuntu on Windows で gcc でコンパイルしたものは ELF バイナリとしてコンパイルされていました。
また、Channel 9 のデモでは、Ubuntu on Windows 上で実行した、WEBRic の HTTP サーバーに対して、アクセスをするというものも実行されていましたので、この環境で実行しているものに対しての外部アクセスもできそうですね。
現状のイメージは、Ubuntu 14.04 LTS ですが、16.04 LTS に更新が行われるとのことです。この辺の仕組みとしても、ストアを利用しているのでしょうかね。
リアルタイムに Ubuntu のシステムコールを Windows のシステムコールに変換するという仕組みを実装したことにより、ユーザーモードで動作している Ubuntu でバイナリがそのまま動作するという、仕組みとなっているようで。
Windows のファイル部分は「/mnt/c」という形でアクセスが可能なようです。
興味深いのは、
Did you catch that bit about /mnt/c… That’s pretty cool… All of your Windows drives, like C: are mounted read/write directly under /mnt. And, vice versa, you can see all of your Ubuntu filesystem from Windows Explorer in C:\Users\Kirkland\AppData\Local\Lxss\rootfs\
ですかね、
Ubuntu のファイルシステムについては、ユーザープロファイル内に見えるようです。
Ubuntu 部分の再起動が必要になった場合の動作などは少し気になりますね。
apt によるパッケージの追加や、vi / gcc などの使用できるようで、特定のコマンドしか実行できないということはなく、Ubuntu が動作している感覚で、利用することができるようです。
大半の LTP (Linux Test Project) にはパスしているそうですが、VT100 / byobu / screen / tmux が現状は動作しないようで、これらについても近いうちに動作するようになるだろうとのこと。