Upload
kentaro-inomata
View
1.703
Download
0
Embed Size (px)
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がアツい