はじめに
Windows 10のInsiderビルド14316が公開されました。//Buildで発表されたbash on Windowsも入っています。bashなのでbashそのものの挙動はともかく、Windowsで実際にどう見えるのか確認してみます。ベータなので将来変わると思いますので、その点はよろしく。
インストール
初回起動時のbash.exeはコンソールのストアアプリ(Windows Runtimeを使うアプリ)のようで、ちょっと違います。ご注意。公になるものでは初めてのWindows Runtimeを使ってストアにアクセスするコンソールアプリケーションってことになるんでしょうか。理屈上はできることはわかっていましたが。
まずはプログラムの追加と削除からWindowsの機能で「Windows Subsystem for Linux」を追加します。再起動が要求されます。
再起動すると、bashが追加されています。今のところメニューにはないようなので、検索するか、コマンドプロンプトからbashと実行すればよいようです。
コマンドプロンプトからbashを起動すると最初に使用許諾の画面が出てきます。
最初にUbuntuのファイルシステムをストアからダウンロード自動的にダウンロードします。文字化けしていますが、たぶん日本語コマンドプロンプトだからなのでしょう。
apt-getでgitをダウンロードしてみます。ちゃんといけますね!
タスクマネージャにはちゃんとbashがいます。
tasklistでみると、Windowsの基本的なDLLがリンクされています。LxSSManagerProxyStubとか見慣れないDLLがいますね。
system32のlxssフォルダにこの辺のDLLがいます。ローカライズリソースもあるようです。
Process Explorerで見ると、RuntimeBroker配下で動いています。EdgeのContant Process(レンダリングプロセスですかね?)と同じレベルで動いています。通常のWin32アプリケーションはExplorer配下で動くので、基本的に違う世界ということですね。
RuntimeBroker配下なので、bashからはWin32アプリケーションにちょっかいかけることはできないと予想されます。bash内でLinuxのコマンドを実行してもタスクマネージャには出てこないですね。
ファイルシステム
/mnt配下にWindowsのファイルシステムがありますね。特殊なファイルはアクセス権などが???なんですね。
ちなみにshutdownコマンド実行すると、Broker配下なのでシャットダウンはできないと思ったけど、別の理由でダメでしたね。
shutdown: Failed to connect to socket /com/ubuntu/upstart:No such file or directory
日本語フォルダは一応扱えるようですが、コンソール上で意図したカーソル位置にならないので、使わないほうがよさそうです。
二回目以降の起動
初回起動(ストアからダウンロードするため)少し違っています(ごめんなさい)。次回起動時はちゃんとBash on Ubuntu on Windowsというアプリが登録されています。
bashやinitがtasklistコマンドで見えますが、Win32由来のdllは一切リンクされていません。
wininit.exeのsvchostの下にinitがぶら下がってbashが起動しています。この画面は3つのbashを起動しているのでこうなっています。
この下は変わりません。
Q&A から
(追記)
@kkamegawa bashでpsするとどうなりますか?
— 帝国兵 (@superriver) April 6, 2016
とあったので、試しました。
bash内のものしか見えないですね。
(追記2)
@kkamegawa あと複数のbashを立ち上げてpsするとどう見えるかも試していただければm(_ _)m
— 帝国兵 (@superriver) April 6, 2016
さらに試しました。同じRuntimeBroker内にいるので、その点は複数のbashは連携することができそうな予感です。
所感
(追記3)
まだまだ最初のベータだし、Ubuntuのバイナリ(curlとかsshとかgitとか)をそのまま使う、という向きには必要十分の機能があると思います。たいていこういうの最初に出るとあらさがしして「使えねえー」ということを言いたがる人もいますが、今までできなかったことができるようになる点をとりあえず楽しみましょう。
あ、Windows Serverにも入るんだろうか?
psコマンドの結果
(追記4)
ps auxだとどうなるのでしょう?というコメントを頂いたので、実験しました。
やはりWindows側は見えないようですね。