SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Windows 上での Bash 実行についてあとで見るメモ

one comment

Build に合わせて情報が出てきたものですが。
われらが、ぺんぺん師匠がまとめてくださっています。ぺんぺん師匠、まじ、ぺんぺん。
Windows で Ubuntu バイナリ(bash)が動作することの概略

Windows 10でUbuntuのBashが動作可能に?
[速報]マイクロソフト、BashシェルをWindowsに搭載。Emacs、VT100などサポート。Build 2016

 

詳細はこちら。
CommandLine-Documentation
BASH Running in Ubuntu on Windows
Run Bash on Ubuntu on Windows
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 のものをマッピングすることで、動作するようですね。

image

Linux Command Line on Windows / Windows Command Line Improvements (Day1) /  Windows Command Line Improvements (Day3) でも、このあたりの話があるようですので、ビデオが公開されるのをまとうかと。

以下、情報見ながらのメモ

この機能自体は、まだ使用することはできず、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 のファイルシステムについては、ユーザープロファイル内に配置されるようです。
ファイルシステムの各ポイントだけをユーザープロファイルに配置しているのではなく、ファイル自体もこの中に格納しているような仕組みとなっている場合は、Linux の環境としてはユーザー単位に独立した状態となるかもしれないですね.
# 開発の用途を考えると、ユーザー A でインストールしたパッケージは。ユーザー B の環境ではインストールされていない状態というほうが、取り回しがしやすいと思いますが。

常時起動のサービスとかを起動することはできず、bash を終了する (プロンプトを閉じる) と、Linux サブシステム側で起動していたプロセスも終了したりするんでしょうかね??
実装の思想が、「サービスを稼働させるためのもの」ではない場合は、開発で使用する実行環境を提供するためのものというイメージになっているのではと思います。
bash から Windows の exe を実行したい、Windows から、Linux の ELF バイナリやバッシュのスクリプトを Windows から直接実行したいというものとは違うのではと考えています。

Ubuntu 部分の再起動が必要になった場合の動作などは少し気になりますね。

apt によるパッケージの追加や、vi / gcc などの使用できるようで、特定のコマンドしか実行できないということはなく、Ubuntu が動作している感覚で、利用することができるようです。

大半の LTP (Linux Test Project) にはパスしているそうですが、VT100 / byobu / screen / tmux が現状は動作しないようで、これらについても近いうちに動作するようになるだろうとのこと。

 

詳細については Asked Questions が参考になるかと。

Can run ALL Linux apps in WSL?

No! WSL is a tool aimed at enabling users who need them to run Bash and core Linux command-line tools on Windows.

WSL does not aim to support GUI desktops or applications (e.g. Gnome, KDE, etc.)

Also, even though you will be able to run many popular server applications (e.g. Redis), we do not recommend WSL for server scenarios – Microsoft offers a variety of solutions for running production Ubuntu workloads in Azure, Hyper-V and Docker.

What Windows SKU’s is WSL included in?

Windows Subsystem for Linux will be available in desktop versions of Windows.
WSL is NOT a server technology and so will not be available on Server SKU’s. WSL is an optional Windows feature and can be enabled via the “Turn Windows features on or off” tool or via DISM via an (elevated) command-line.

この二つの記述から、デスクトップの Windows で開発用に実装された機能となっており、Server OS / サーバー用途での使用は想定されていないということが見えてきそうですね。

Written by masayuki.ozawa

3月 31st, 2016 at 1:49 am

Posted in その他

Tagged with

One Response to 'Windows 上での Bash 実行についてあとで見るメモ'

Subscribe to comments with RSS or TrackBack to 'Windows 上での Bash 実行についてあとで見るメモ'.

  1. […] Windows 上での Bash 実行についてあとで見るメモ […]

Leave a Reply

*