今だから知りたいBash on Windows
※ 本セッションでお伝えする内容は 2016/9/14 時点の情報です。
山本 美穂
日本マイクロソフト株式会社テクニカルエバンジェリスト Twitter: @mihochannel
Blog: http://aka.ms/miyamam
自己紹介 ( 山本 美穂) SIer で雑食エンジニアの経験を経て、某ソフトウェアメーカーで 5 年間プリセールスと布教奉仕活動を行ったのち現職に至る。
著書(共著 / 監修) VMware 徹底入門(第 3 版 , 第 4 版) VMware vSphere クラスタ構築 / 運用の技法
ブログ: http://aka.ms/miyamam@mihochannel
Bash on Windows とは?
• Windows 10 Insider Preview build 14316 で初めて実装(要開発者モード)•Windows で Bash が起動するというも
の• Ubuntu 14.04.4 LTS ベース• これまでコマンドラインを使う場合、サード
パーティツールや仮想マシンを使う必要があった
• デフォルトで Python2.7.6 対応
Anniversary Update で追加された機能
もしかして? ACI Toolkit 動くかも?
ちょっとおさらい
Windows NT の設計使命と目標• 他の 32 ビット アーキテクチャへの容易な移植性を提供すること移植性
• 安定性およびマルチプロセッシング サポートを提供すること安定性
• 分散コンピューティングをサポートし、複数のコンピュータがリソースを共有できるようにすること共有性
• Portable Operating System Interface for UNIX( POSIX )が要求したアプリケーション プログラミング インターフェイス( API )をサポートすること
互換性
• 米国政府のクラス 2 ( C2 )セキュリティ機能を提供し、クラス B1 とそれ以降のパスを提供すること堅牢性
Microsoft Windows NT System アーキテクチャの基礎 (1997)https://msdn.microsoft.com/ja-jp/library/cc429070.aspx
Windows と Linux の歴史NT3.51 以前
NT4 以降
WSL はこれとは違います。
• Linux tools• Linux ELF64 バイナリでモディ
ファイされていないもの
• Windows Subsystem for Linux (WSL)• Windows Kernel の新機能• Linux 互換のシステムコールを行う
レイヤとプロセスモデル• fork() などの Linux のシステム
コールをサポート• ユーザーモードとカーネルモードの
両方から構成
こんな仕組みで動いています。Ubuntu
Windows Kernel
Windows Subsystem for Linux
ユー
ザー
モー
ドカ
ーネ
ル
Bash, GC++, etc.
Syscalls read write
open …fork
Bash on Windows のはなし
※ 本セッションでお伝えする内容は 2016/9/9 時点の情報です。
山本 美穂
日本マイクロソフト株式会社テクニカルエバンジェリスト
Windows Subsystem for Linux
こんな構成で動いています
ユーザーモード
カーネルモード
Linux (Ubuntu) インスタンス
LXCore / LXSS
Bash.ex
e
LX Session manag
er service
init /bin/bash
syscall
fork
ioctl
COM
bus
Win32 プロセス
Pico プロセス
• Lxss manager関連するサービス
ファイルシステムの特徴VolFS
• Linux ファイルシステム機能をフルで実装• Permission• シンボリックリンク• ファイル名特性• Windows 非互換
DriveFS• Windows 互換• 実態は OS のフォルダを
マウントしている
$sudo apt-get git$sudo git clone https://github.com/datacenter/acitoolkit.git$sudo apt-get install python2.7-dev$sudo apt-get install python-setuptools$cd acitools$sudo python setup.py install
acitools をインストール
ここまでやって気づいた
ACI の環境がないと動作確認すらできない (´ ・ ω ・
` )
マリオさん、あざっす!
シミュレーターで動きました!
GUI で取得した情報とも同じです。
•動いた、動かない、シェル芸、なんでも OK
• UserVoice (Ideas & asks): https://aka.ms/winbashuv
•GitHub Issues: https://aka.ms/winbashgithub
フィードバックお願いします!
• Windows Subsystem for Linux Overviewhttps://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/
• Drawbridgehttps://www.microsoft.com/en-us/research/project/drawbridge/
参考 URL
22
本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。 Microsoft は絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、提示された情報の信憑性については保証できません。
本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。 すべての当該著作権法を遵守することはお客様の責務です。 Microsoft の書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段
(電子的、機械的、複写、レコーディング、その他)、および目的であっても禁じられています。これらは著作権保護された権利を制限するものではありません。
Microsoft は、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。 Microsoft から書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。
© 2016 Microsoft Corporation. All rights reserved.Microsoft, Windows, その他本文中に登場した各製品名は、 Microsoft Corporation の米国およびその他の国における登録商標または商標です。その他、記載されている会社名および製品名は、一般に各社の商標です。
Y
AX B