Microsoft Ignite 2019レポート 〜 【セッション】The Modern Windows Command-Line: Windows Subsystem for Linux 2 〜

こんにちは、サイオステクノロジー技術部 武井です。私は、マイクロソフトが実施しているテクニカルカンファレンス「Ignite」に参加するためにフロリダのオーランドということろに来ております。Igniteが実施している期間中に、「ほぼ」リアルタイムレポートをお届けしたいと思います。今回は「The Modern Windows Command-Line: Windows Subsystem for Linux 2」について記載します。

IMG_2256

このセッションは以下のような方が対象になります。

WSL2がどのような機能を持っているか知りたい!!

本セッションでは、WSL2の機能を紹介した上で、WSL1と機能面で比較を行い、WSL2の優位点を説明していました。

WSL1とは?

Windows Subsystem for Linux(以降、WSL)は、平たく言うとWindows内でLinuxを実行できる仕組みです。これによりWindowsでの開発環境は劇的に改善します。

開発環境としてのWindowsは、そのインターフェースの親しみやすさから、言わずもがな使いやすいです。また、Windowsは音楽や動画などのメディア系ファイルを扱うOSとしては、秀逸です。一方で、シェルの扱いやすさは、Linuxに軍配が上がります。ログをgrepしながらtailしたりなどの操作はWindowsでは中々にハードルが高いのが事実です(出来なくはないですが)。そんなLinuxとWindowsのいいとこ取りをしたいというエンジニアは数多いらっしゃると思います。

例えば、WindowsよりLinuxが優れている例として、先程もご説明した「シェルの操作性」があります。以下のような、重複した行が散在するテキストファイルから、重複した行だけを取り出してソートするという例を考えてみます。

banana
apple
peach
apple
banana
banana
tomato
banana

Windows、Linuxそれぞれの場合で、上記の内容を実現するシェルは以下のとおりです。

■ Windowsの場合

PS> Get-Content test.txt | Group-Object | Where-Object {$_.Count -gt 1} | Select-Object -ExpandProperty Name | Sort-Object

■ Linuxの場合

$ sort test.txt | uniq -d | sort

やはり、Linuxの方に軍配が上がりますね。Windowsの場合より、シンプルな方法で実現が可能です。

いずれのコマンドも結果は同じで、以下のとおりとなります。

apple
banana

確かに今までも、CygwinやVirtual Boxなどの仮想化ソフトウェアによるLinux on Windowsの実現方式がありました。今回ご紹介するWSLとそれらの決定的な違いは、「導入の容易さ」「高速起動」「Windowsとの親和性」です。

導入の容易さ

まず、導入の容易さについて、ご説明致します。Virtual Boxを始めとした仮想環境は、ネットワークやストレージ、メモリを始めとした各種リソースの設定、それからOSのインストールと、かなりの手間と時間を要します。

それと比べて、WSLを導入するまでは数ステップ、時間にすれば10分程度で、OSインストール済みの環境が出来上がり、しかも全てGUIで完結します(後述するWSL2は一部CLIが必要)。本当に簡単で、あっという間です。

高速起動

WSLの起動は、ほぼ一瞬です。それは、Windowsのコマンドプロンプトを起動するのと同じような感覚といっても過言ではありません。

Virtual Boxなどの仮想環境は、昨今のOSの起動が早くなったとはいえ、WSLには遠く及びません。bashなどのシェルが使いたい時に、たとえ5秒待たされるのさえストレスに感じます。

使いたい時にさっと使えるのは、大きなアドバンテージになるのではないでしょうか?

Windowsとの親和性

WSLは非常にWindowsとの親和性が高いことが、大きなメリットです。その一例として、Windows⇔Linux間の相互ファイルアクセスです。

Virtual Boxでも、SambaなどのCIFSプロトコルに対応したサーバーを立てれば、もちろん可能です。しかし、Sambaのインストールや設定といった煩雑な作業が待っていますし、アクセス権の設定やファイル名の文字コードなど、頭を悩ませることがありますよね。

WSLであれば、とても簡単です。WindowsからLinux上にあるファイルにアクセスするには、「\\wsl$\[ディストリビューションの名前]」というパスにアクセスすればOKです。ディストリビューションがUbuntuの場合は「\\wsl$\Ubuntu」となります。

Picture1

LinuxからWindowsの場合は、「/mnt/[ドライブ名]」というパスにアクセスすると、Windowsの指定したドライブ直下にアクセスが出来ます。Cドライブにアクセスする場合は、「/mnt/c」となります。

Picture2

Windows上でLinuxを使う場合、WSLは従来の方法に比べて、たくさんのメリットがあることがご理解頂けたかと思います。

WSL2とは?

さて、ここからWSL2のご説明に入ります。

IMG_2271

 

 

まずファイルシステムへのアクセス向上が挙げられていました。ケースにもよりますが、2〜4倍近い性能向上が見られるようです。

IMG_2272

 

そして、もう一つの大きなメリットです。WSL2は、Hyper-Vベースの仮想マシンサービス上にLinuxカーネルを搭載したOSが動作することにより、Windows上でフル互換のLinuxが動作します。これによりWSL上でDockerが動作できるようになりました。

IMG_2273

 

WSL1とWSL2のコンソールを2つ並べて、pythonをインストールするというデモが行われました。WSL1では53.698秒、WSL2では11.457秒とその差は歴然でした(^o^)

IMG_2282

 

WSL2に採用されているLinuxカーネルは、マイクロソフト独自パッチを当てることで軽量化を実現しているので、約2秒程度の超高速起動を実現しています。ささっとbashが使いたいときに、Linux環境の起動がもったりするのは、かなりストレスになるのは想像に難くありません。WSL1同様、WSL2もストレスフリーのbash環境を実現できます。

IMG_2289

 

WSL2は、Hyper-Vベースの仮想マシンサービス上にLinuxカーネルを搭載したOSが動作しますが、こちらにも専用の改良がなされています。このHyper-Vは、WSL2専用にカスタマイズされた軽量なものであり、これにより高速起動が可能になっています。

IMG_2291

 

WSL2のアーキテクチャです。WSL1では、Linuxカーネルのファンクションコールが、LXCoreというシステムによって、Windowsへのファンクションコールに変換されていましたが、WSL2では下図からわかるように、Hypervisor上で動作します。ホンモノのLinuxです。

IMG_2294

 

良いこと尽くめのWSL2ですが、残念ながら現在ではInsider Previewのみの提供となっております。GAは2020年前半くらいだそうです。だいぶ待たされますね(><)

IMG_2297

まとめ

WSL2ではフル互換のLinuxが実現されていますので、Dockerが利用できます。これは大きなメリットです。Docker on WSL2はアプリケーションの開発環境に劇的な改善をもたらすことが期待できます。はやくGAして下さい(><)

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です