Bash on ubuntu on windows

Preview:

Citation preview

Bash on Ubuntu on Windows

ちょっとだけWindows Subsystem for Linux

猪股健太郎 (@matarillo )

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

1

Bash on Ubuntu on Windowsとは?

MicrosoftとCanonicalの

提携の成果の一つ

http://aka.ms/wsldocs

一般的なコマンドライン

ツールが動く

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

きる

Bashのシェルスクリプトが

動かせる

2

インストール (0/4)

3

インストール (1/4)

4

インストール (2/4)

!?

5

インストール (3/4)

6

インストール (4/4)

7

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

8

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

9

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

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

10

SSHとSSHD

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

sshdは×

11

LAMPとかMEANとか

apache2は、

/run/lockディレクト

リを作っておくと、

何かいろいろ出るけ

ど動く

mysqlも、なんかい

ろいろ出るけど動く

らしい

12

その他

top動く

13

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

動いた

ネットワーク機能の一部

いろいろな言語開発環境

(Ruby, Perl, PHP, etc…)

一部のサーバー

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

(ただしWindowsでXサー

バーを動かしておく)

まだ?動かない

ping (ICMP)

screen, tmux

名前付きパイプ

プロセス間通信

グラフィックス関連

(Xサーバーとか)、

サウンド関連、

その他デバイスもの

低レイヤーの機能とか

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

15

話かわって

ファイルシステム

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

16

ファイルを表示してみる

ルートフォルダ

( / )

VolFSの世界

シンボリックリンクも

chmodも

17

ファイルを表示してみる

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

DriveFSの世界

chmodは×

シンボリックリンクは△

18

ファイルを表示してみる

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

%USERPROFILE%¥AppData¥Local¥lxss¥rootfs

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

19

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

Linux→Win 不可能

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

20

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

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

その通りです。

でも、違いはあります。

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

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

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

21

似て非なるテクノロジー

GNU on Windows

Git for Windows

MinGW&MSYS / MSYS2

Cygwin

POSIXサブシステム / SFU / SUA

coLinux

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

かす

技術はこれの仲間

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

Windowsバイナリの壁

Linuxバイナリの壁

22

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

GNU on Windows

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

Git for Windows

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

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

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

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

あれもこれも動かしたい

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

23

どうしてこうなった?

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

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

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

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

24

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

端末エミュレーター

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

内部コマンド

外部コマンド

パッケージマネージャ

開発環境

Cコンパイラとlibc (glibc)

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

ここだけは改善するから

これより下はLinuxの世界を

そのまま持ってきたい

25

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

26

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

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

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

背景透過

27

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

色は、16色は出るみたい

28

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

29

Windowsとサブシステム

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

ごめんなさい。

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

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

30

OSとは?

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

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

32

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

@ITに転載記事が。

小さくて見えない……

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

ew/insidewin4/insidewin4_04.html

33

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

@ITに転載記事が。

小さくて見えない……

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

ew/insidewin4/insidewin4_04.html

34

大きくしてみました。

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

サブシステムDLL

カーネルモードの壁

Ntdll.dll

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

35

Windowsも。

Win32アプリケーション

WindowsサブシステムDLL(Win32API)

カーネルモードの壁

Ntdll.dll

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

36

SUAも。

SUAアプリケーション

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

カーネルモードの壁

Ntdll.dll

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

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

たとか。

37

Winows Subsystems for Linuxも?

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

Winows Subsystems for Linux(Llinux API)

カーネルモードの壁

Ntdll.dll

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

?

38

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

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

俺にもありました

39

!?

Bash on Ubuntu on Windows

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

40

!?

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

41

Drawbridge

42

Drawbridge

Microsoft Research発の技術

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

ピコプロセス

ライブラリーOS

プロセスベース

コンテナ

安全で高速

43

続きはWebで

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

44

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

Pico Process Overview

https://blogs.msdn.micros

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

o-process-overview/

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

いの改善のため、NTカー

ネルにも手が入った模様

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

45

雑なまとめ

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

コンテナっぽさ

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

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

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

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

Windows ServerがLinux化する

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

DrawBridgeがアツい

Recommended