Slide 1

Slide 1 text

Bash on Ubuntu on Windows ちょっとだけWindows Subsystem for Linux 猪股健太郎 (@matarillo ) 2016/05/21 C#ユーザー会 //build/ 2016振り返り 勉強会

Slide 2

Slide 2 text

1 Bash on Ubuntu on Windowsとは?  MicrosoftとCanonicalの 提携の成果の一つ  http://aka.ms/wsldocs  一般的なコマンドライン ツールが動く  ファイルシステムを操作で きる  Bashのシェルスクリプトが 動かせる

Slide 3

Slide 3 text

2 インストール (0/4)

Slide 4

Slide 4 text

3 インストール (1/4)

Slide 5

Slide 5 text

4 インストール (2/4) !?

Slide 6

Slide 6 text

5 インストール (3/4)

Slide 7

Slide 7 text

6 インストール (4/4)

Slide 8

Slide 8 text

7 コードページの問題でした。

Slide 9

Slide 9 text

8 バージョンを表示してみる

Slide 10

Slide 10 text

9 バージョンを表示してみる  Ubuntuのアップグレードはできませんでした。

Slide 11

Slide 11 text

10 SSHとSSHD  ごく普通にsshでリモートサーバーにつなげる  sshdは×

Slide 12

Slide 12 text

11 LAMPとかMEANとか  apache2は、 /run/lockディレクト リを作っておくと、 何かいろいろ出るけ ど動く  mysqlも、なんかい ろいろ出るけど動く らしい

Slide 13

Slide 13 text

12 その他  top動く

Slide 14

Slide 14 text

13 動いた、動かない、雑な報告  動いた  ネットワーク機能の一部  いろいろな言語開発環境 (Ruby, Perl, PHP, etc…)  一部のサーバー  単純なGUIアプリケーション (ただしWindowsでXサー バーを動かしておく)  まだ?動かない  ping (ICMP)  screen, tmux  名前付きパイプ  プロセス間通信  グラフィックス関連 (Xサーバーとか)、 サウンド関連、 その他デバイスもの  低レイヤーの機能とか

Slide 15

Slide 15 text

14 動いたとか動かないとか、まあおちつけ  基本、preview機能です  動いたといっても……  あくまで開発目的  本番運用はサポートされない(特にサーバー)  動かないといっても……  フィードバック次第ではどうなるかわからん  開発目的でどうしても必要な何かがあるなら  https://github.com/Microsoft/BashOnWindows/issues  https://wpdev.uservoice.com/forums/266908-command-prompt-console- bash-on-ubuntu-on-windo/category/161892-bash

Slide 16

Slide 16 text

15 話かわって  ファイルシステム  Windows Subsystem for Linux Overview  https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/

Slide 17

Slide 17 text

16 ファイルを表示してみる  ルートフォルダ ( / )  VolFSの世界  シンボリックリンクも  chmodも

Slide 18

Slide 18 text

17 ファイルを表示してみる  Windows側のファイル( /mnt/c/ )  DriveFSの世界  chmodは×  シンボリックリンクは△

Slide 19

Slide 19 text

18 ファイルを表示してみる  Linux側のファイルをWindowsから見てみる  %USERPROFILE%¥AppData¥Local¥lxss¥rootfs  Linux側で作成したファイルは見えない

Slide 20

Slide 20 text

19 バイナリ起動の相互運用性は……  Linux→Win 不可能  Win→Linux 不可能(bash.exeに引数を渡すことはできる)

Slide 21

Slide 21 text

20 Bash on Ubuntu on Windowsは●●ではない  「Bashぐらいこれまでだって動いてただろ。」  その通りです。  でも、違いはあります。  でもでも、これまでできなかったすごいことが できるようになったのかというと……うーん。  とある利用シーンでは便利にはなったと思います。

Slide 22

Slide 22 text

21 似て非なるテクノロジー  GNU on Windows  Git for Windows  MinGW&MSYS / MSYS2  Cygwin  POSIXサブシステム / SFU / SUA  coLinux  VM (Hyper-VやVirtualBoxなど) でLinuxを動 かす 技術はこれの仲間 使用感はこれに近い、 かな。 Windowsバイナリの壁 Linuxバイナリの壁

Slide 23

Slide 23 text

22 時間があれば補足 (主観強め)  GNU on Windows  コマンドプロンプトで生きる。あとちょっとだけスクリプティング  Git for Windows  Gitメイン。対話シェルとしてのbashも。  MinGW&MSYS / MSYS2  bashで生きつつ、コマンドプロンプトもほどほどに  Win32バイナリをビルドしたい  Cygwin  なんとかしてWindowsにUnixライク環境を実現したい  あれもこれも動かしたい  コマンドプロンプトなんか使わない

Slide 24

Slide 24 text

23 どうしてこうなった?  開発者による開発者のための コマンドラインインターフェース文化  (自由な|オープンソース)ソフトウェアのエコシステム  Windowsには移植されない or されても地雷多め問題

Slide 25

Slide 25 text

24 コマンドラインインターフェースの世界  端末エミュレーター  シェル(対話モード/バッチモード)  内部コマンド  外部コマンド  パッケージマネージャ  開発環境  Cコンパイラとlibc (glibc)  ※ オフトピ:PowerShell に見るWindows文化とUnix哲学の違い ここだけは改善するから これより下は Linuxの世界を そのまま持ってきたい

Slide 26

Slide 26 text

25 Windows 8.1までのコマンドプロンプト

Slide 27

Slide 27 text

26 Windows 10のコマンドプロンプト 編集オプションと テキスト選択 フォントの選択肢 (描画品質も?) 背景透過

Slide 28

Slide 28 text

27 ANSI / VT100エスケープシーケンス対応中  色は、16色は出るみたい

Slide 29

Slide 29 text

28 おまけ(Ubuntu 14.04にOpenJDK8を入れる途中)

Slide 30

Slide 30 text

29 Windowsとサブシステム  今日は浅い話しかできません。 ごめんなさい。  Windowsサブシステム基礎勉強会とかあるなら 濃い人たちからぜひ話を聞きたい

Slide 31

Slide 31 text

30 OSとは? 出典 Armadillo開発者サイト 「 Armadillo実践開発ガイド 第1部」 出典 Wikipedia 「オペレーティングシステム」

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

32 インサイドMicrosoft Windows 第4版 上 第2章  @ITに転載記事が。  小さくて見えない……  http://www.atmarkit.co.jp/fwin2k/bookprevi ew/insidewin4/insidewin4_04.html

Slide 34

Slide 34 text

33 インサイドMicrosoft Windows 第4版 上 第2章  @ITに転載記事が。  小さくて見えない……  http://www.atmarkit.co.jp/fwin2k/bookprevi ew/insidewin4/insidewin4_04.html

Slide 35

Slide 35 text

34 大きくしてみました。 ユーザーアプリケーション サブシステムDLL カーネルモードの壁 Ntdll.dll Systemプロセスとか カーネルとか (API非公開)

Slide 36

Slide 36 text

35 Windowsも。 Win32アプリケーション WindowsサブシステムDLL (Win32API) カーネルモードの壁 Ntdll.dll Systemプロセスとか カーネルとか (API非公開)

Slide 37

Slide 37 text

36 SUAも。 SUAアプリケーション Subsystem for Unix Application (POSIX互換APIなど) カーネルモードの壁 Ntdll.dll Systemプロセスとか カーネルとか (API非公開) Windowsから起動 することもできる バイナリ形式だっ たとか。

Slide 38

Slide 38 text

37 Winows Subsystems for Linuxも? Linuxアプリケーション (ELF) Winows Subsystems for Linux (Llinux API) カーネルモードの壁 Ntdll.dll Systemプロセスとか カーネルとか (API非公開) ?

Slide 39

Slide 39 text

38  サブシステムはユーザーモードで動作する……  そんな風に考えていた時期が 俺にもありました

Slide 40

Slide 40 text

39 !?  Bash on Ubuntu on Windows  https://msdn.microsoft.com/en-us/commandline/wsl/about

Slide 41

Slide 41 text

40 !?  Windows Subsystem for Linux Overview  https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/

Slide 42

Slide 42 text

41 Drawbridge

Slide 43

Slide 43 text

42 Drawbridge  Microsoft Research発の技術  http://research.microsoft.com/en-us/projects/drawbridge/  ピコプロセス  ライブラリーOS  プロセスベース コンテナ  安全で高速

Slide 44

Slide 44 text

43 続きはWebで  https://speakerdeck.com/ntddk/an-introduction-to-drawbridge-ja

Slide 45

Slide 45 text

44 5/24(日本時間)続報キタ!  Pico Process Overview  https://blogs.msdn.micros oft.com/wsl/2016/05/23/pic o-process-overview/  fork()やファイルパスの扱 いの改善のため、NTカー ネルにも手が入った模様 やはり Linux Subsystemは カーネルモード!

Slide 46

Slide 46 text

45 雑なまとめ  Ubuntu環境が高速に起動するのがよい  コンテナっぽさ  ただし1ユーザーに1環境のみ、再利用のしくみもない  コマンドラインツールとか、 一時的なサーバー利用とか  Bash窓を全部閉じたらLXSSもシャットダウンするよ  Windows ServerがLinux化する ……みたいな方向にはいかないはず(Azureあるし)  DrawBridgeがアツい