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

Bash on ubuntu on windows

Embed Size (px)

Citation preview

Page 1: Bash on ubuntu on windows

Bash on Ubuntu on Windows

ちょっとだけWindows Subsystem for Linux

猪股健太郎 (@matarillo )

2016/05/21 C#ユーザー会 //build/ 2016振り返り勉強会

Page 2: Bash on ubuntu on windows

1

Bash on Ubuntu on Windowsとは?

MicrosoftとCanonicalの

提携の成果の一つ

http://aka.ms/wsldocs

一般的なコマンドライン

ツールが動く

ファイルシステムを操作で

きる

Bashのシェルスクリプトが

動かせる

Page 3: Bash on ubuntu on windows

2

インストール (0/4)

Page 4: Bash on ubuntu on windows

3

インストール (1/4)

Page 5: Bash on ubuntu on windows

4

インストール (2/4)

!?

Page 6: Bash on ubuntu on windows

5

インストール (3/4)

Page 7: Bash on ubuntu on windows

6

インストール (4/4)

Page 8: Bash on ubuntu on windows

7

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

Page 9: Bash on ubuntu on windows

8

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

Page 10: Bash on ubuntu on windows

9

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

Ubuntuのアップグレードはできませんでした。

Page 11: Bash on ubuntu on windows

10

SSHとSSHD

ごく普通にsshでリモートサーバーにつなげる

sshdは×

Page 12: Bash on ubuntu on windows

11

LAMPとかMEANとか

apache2は、

/run/lockディレクト

リを作っておくと、

何かいろいろ出るけ

ど動く

mysqlも、なんかい

ろいろ出るけど動く

らしい

Page 13: Bash on ubuntu on windows

12

その他

top動く

Page 14: Bash on ubuntu on windows

13

動いた、動かない、雑な報告

動いた

ネットワーク機能の一部

いろいろな言語開発環境

(Ruby, Perl, PHP, etc…)

一部のサーバー

単純なGUIアプリケーション

(ただしWindowsでXサー

バーを動かしておく)

まだ?動かない

ping (ICMP)

screen, tmux

名前付きパイプ

プロセス間通信

グラフィックス関連

(Xサーバーとか)、

サウンド関連、

その他デバイスもの

低レイヤーの機能とか

Page 15: Bash on ubuntu on windows

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

Page 16: Bash on ubuntu on windows

15

話かわって

ファイルシステム

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

Page 17: Bash on ubuntu on windows

16

ファイルを表示してみる

ルートフォルダ

( / )

VolFSの世界

シンボリックリンクも

chmodも

Page 18: Bash on ubuntu on windows

17

ファイルを表示してみる

Windows側のファイル( /mnt/c/ )

DriveFSの世界

chmodは×

シンボリックリンクは△

Page 19: Bash on ubuntu on windows

18

ファイルを表示してみる

Linux側のファイルをWindowsから見てみる

%USERPROFILE%¥AppData¥Local¥lxss¥rootfs

Linux側で作成したファイルは見えない

Page 20: Bash on ubuntu on windows

19

バイナリ起動の相互運用性は……

Linux→Win 不可能

Win→Linux 不可能(bash.exeに引数を渡すことはできる)

Page 21: Bash on ubuntu on windows

20

Bash on Ubuntu on Windowsは●●ではない

「Bashぐらいこれまでだって動いてただろ。」

その通りです。

でも、違いはあります。

でもでも、これまでできなかったすごいことが

できるようになったのかというと……うーん。

とある利用シーンでは便利にはなったと思います。

Page 22: Bash on ubuntu on windows

21

似て非なるテクノロジー

GNU on Windows

Git for Windows

MinGW&MSYS / MSYS2

Cygwin

POSIXサブシステム / SFU / SUA

coLinux

VM (Hyper-VやVirtualBoxなど) でLinuxを動

かす

技術はこれの仲間

使用感はこれに近い、かな。

Windowsバイナリの壁

Linuxバイナリの壁

Page 23: Bash on ubuntu on windows

22

時間があれば補足 (主観強め)

GNU on Windows

コマンドプロンプトで生きる。あとちょっとだけスクリプティング

Git for Windows

Gitメイン。対話シェルとしてのbashも。

MinGW&MSYS / MSYS2 bashで生きつつ、コマンドプロンプトもほどほどに

Win32バイナリをビルドしたい

Cygwin なんとかしてWindowsにUnixライク環境を実現したい

あれもこれも動かしたい

コマンドプロンプトなんか使わない

Page 24: Bash on ubuntu on windows

23

どうしてこうなった?

開発者による開発者のための

コマンドラインインターフェース文化

(自由な|オープンソース)ソフトウェアのエコシステム

Windowsには移植されない or されても地雷多め問題

Page 25: Bash on ubuntu on windows

24

コマンドラインインターフェースの世界

端末エミュレーター

シェル(対話モード/バッチモード)

内部コマンド

外部コマンド

パッケージマネージャ

開発環境

Cコンパイラとlibc (glibc)

※オフトピ:PowerShell に見るWindows文化とUnix哲学の違い

ここだけは改善するから

これより下はLinuxの世界を

そのまま持ってきたい

Page 26: Bash on ubuntu on windows

25

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

Page 27: Bash on ubuntu on windows

26

Windows 10のコマンドプロンプト

編集オプションとテキスト選択

フォントの選択肢(描画品質も?)

背景透過

Page 28: Bash on ubuntu on windows

27

ANSI / VT100エスケープシーケンス対応中

色は、16色は出るみたい

Page 29: Bash on ubuntu on windows

28

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

Page 30: Bash on ubuntu on windows

29

Windowsとサブシステム

今日は浅い話しかできません。

ごめんなさい。

Windowsサブシステム基礎勉強会とかあるなら

濃い人たちからぜひ話を聞きたい

Page 31: Bash on ubuntu on windows

30

OSとは?

出典 Armadillo開発者サイト「 Armadillo実践開発ガイド第1部」

出典Wikipedia「オペレーティングシステム」

Page 32: Bash on ubuntu on windows
Page 33: Bash on ubuntu on windows

32

インサイドMicrosoft Windows 第4版上第2章

@ITに転載記事が。

小さくて見えない……

http://www.atmarkit.co.jp/fwin2k/bookprevi

ew/insidewin4/insidewin4_04.html

Page 34: Bash on ubuntu on windows

33

インサイドMicrosoft Windows 第4版上第2章

@ITに転載記事が。

小さくて見えない……

http://www.atmarkit.co.jp/fwin2k/bookprevi

ew/insidewin4/insidewin4_04.html

Page 35: Bash on ubuntu on windows

34

大きくしてみました。

ユーザーアプリケーション

サブシステムDLL

カーネルモードの壁

Ntdll.dll

Systemプロセスとかカーネルとか(API非公開)

Page 36: Bash on ubuntu on windows

35

Windowsも。

Win32アプリケーション

WindowsサブシステムDLL(Win32API)

カーネルモードの壁

Ntdll.dll

Systemプロセスとかカーネルとか(API非公開)

Page 37: Bash on ubuntu on windows

36

SUAも。

SUAアプリケーション

Subsystem for Unix Application(POSIX互換APIなど)

カーネルモードの壁

Ntdll.dll

Systemプロセスとかカーネルとか(API非公開)

Windowsから起動することもできるバイナリ形式だっ

たとか。

Page 38: Bash on ubuntu on windows

37

Winows Subsystems for Linuxも?

Linuxアプリケーション (ELF)

Winows Subsystems for Linux(Llinux API)

カーネルモードの壁

Ntdll.dll

Systemプロセスとかカーネルとか(API非公開)

?

Page 39: Bash on ubuntu on windows

38

サブシステムはユーザーモードで動作する……

そんな風に考えていた時期が

俺にもありました

Page 40: Bash on ubuntu on windows

39

!?

Bash on Ubuntu on Windows

https://msdn.microsoft.com/en-us/commandline/wsl/about

Page 41: Bash on ubuntu on windows

40

!?

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

Page 42: Bash on ubuntu on windows

41

Drawbridge

Page 43: Bash on ubuntu on windows

42

Drawbridge

Microsoft Research発の技術

http://research.microsoft.com/en-us/projects/drawbridge/

ピコプロセス

ライブラリーOS

プロセスベース

コンテナ

安全で高速

Page 44: Bash on ubuntu on windows

43

続きはWebで

https://speakerdeck.com/ntddk/an-introduction-to-drawbridge-ja

Page 45: Bash on ubuntu on windows

44

5/24(日本時間)続報キタ!

Pico Process Overview

https://blogs.msdn.micros

oft.com/wsl/2016/05/23/pic

o-process-overview/

fork()やファイルパスの扱

いの改善のため、NTカー

ネルにも手が入った模様

やはりLinux Subsystemはカーネルモード!

Page 46: Bash on ubuntu on windows

45

雑なまとめ

Ubuntu環境が高速に起動するのがよい

コンテナっぽさ

ただし1ユーザーに1環境のみ、再利用のしくみもない

コマンドラインツールとか、

一時的なサーバー利用とか

Bash窓を全部閉じたらLXSSもシャットダウンするよ

Windows ServerがLinux化する

……みたいな方向にはいかないはず(Azureあるし)

DrawBridgeがアツい