「WSL」カテゴリーアーカイブ

Windows Subsystem for Linux on Windows Server

The Windows Subsystem for Linux (WSL) is available in Windows Insider builds of Windows Server. Now developers and application administrators can run tools they use in Linux environments alongside Cmd and PowerShell. If you want to jump straight in, the installation guide is available here. Why include WSL on Windows Server? We want Windows, including […]

情報源: Windows Subsystem for Linux on Windows Server – Building Apps for WindowsBuilding Apps for Windows

Windows ServerにWSLを組み込む理由

Windows Serverを含むWindowsを開発者にとって最適な場所にしたいと考えています。開発者、システム管理者、サービス管理者、サービス構築者は、Linux上で利用可能なツールを必要とすることがあります。利便性の問題として、Linuxツールをワークフローの一部として実行したいと考えている人がさらにいます。

LinuxツールをWindows Server上で使う方法には二つの方法がありました。一つはCygwinなどを使ってWindowsへ移植されたツールを使う方法ですが、しばしばこれはGemやライブラリの互換性の問題に直面し上手く行かないことが有ります。またそもそも移植されていないツールを使用することは出来ません。二つ目の方法はWindows Server上で仮想マシンを使う方法ですが、これではホストのWindowsとは切り離されすぎています。

WSL上でLinuxを動かすことで、この二つの方法での問題を改善できます。WSLは変更されていないLinux(ELF64)バイナリをネイティブに実行します。この事によりWindowsに統合された環境でほぼ全てのLinuxコマンドラインツールをインストールして実行できます。

あなたがサーバーエンジニアで、Linuxの環境、ファイルレイアウトを前提とするnode.js, Ruby, Python, Shell Script, その他のツールを実行させる必要があるなら、WSLを使用してLinuxをインストールして実行する機能により、Windows Server上で自由にツールを拡張できます。

WSLはLinuxサーバーでは無い

Windowsクライアント上のWSLと同様に、MySQL、PostgreSQL、sshdなどのデーモンやジョブを対話型シェルで実行できますが、WSLを使用して永続的なLinuxサービス、デーモン、ジョブなどをバックグラウンドタスクとして実行することはできません。

Windowsで永続的にLinuxのサーバーアプリケーションを動作させたい場合については、Build 2017の発表からHyper-V分離コンテナ上でのLinux実行について参照してください。

Windwos Server上でWSLを使用するにはどうすれば良いか?

WSLはWindows Server Insider Build 16237から追加されました。

次のインストール手順に従ってインストールすることが出来ます。

Install the Linux Subsystem on Windows Server

Windows Subsystem for LinuxからBetaが外れました

情報源: Windows Subsystem for Linux out of Beta! – Windows Command Line Tools For Developers

Windows 10 Insider Preview #16215にてWSLからBetaが外れました。

これでまた一段製品に近づいたことになります。またBetaが取れることで、フィードバックHUBを使用してフィードバックやサポートを得ることが出来るようになります。

ここで、WSLについておさらいしましょう。

WSLがサポートするもの

  • ソフトウェア開発と(基本的な)システム管理のためのコマンドラインツールの実行
  • Linux環境から同一マシンのWindowsファイルシステムへのアクセス
  • LinuxからWindowsプロセスの起動。 例:

  • WindowsコマンドラインからLinuxプロセスの起動。 例:

WSLがサポートしないもの

  • WSL上で動作するLinuxディストリビューションは、対話型のユーザーシナリオ用であり、Apache / nginx / MySQL / MongoDB / etcでの運用ワークロードの実行用ではありません。
  • LinuxファイルにはWindowsからアクセスできません(私たちはこのシナリオを時間の経過とともに改善するよう努めています)
  • 現時点では、X / GUIアプリケーション、デスクトップ、サーバーなどをサポートする現在の計画はありません

サポート

マイクロソフトとディストリビューターの役割分担

  1. マイクロソフトはWSLインフラストラクチャとツールをサポートします。
  2. ディストリビューターは自らのディストリビューションの内部構造を担当します。

期待通りに動作しない場合、WSLのGitHub issueにフィードバックを送ってください。フィードバックを送る際にはコントリビューションガイドライン新しいテンプレートに沿って記述しissueに登録してください。

WSLにSUSEが追加されました

情報源: SUSE’s Linux distros for WSL now available in the Windows Store – Windows Command Line Tools For Developers

WSLのディストリビューションにUbuntuに続き、SUSEが追加されました。しかもSUSEはOpen SUSE Leap 42とSUSE Enterprise 12両方です。

Windows Storeよりインストールします。インストールにはWindows 10 Insider Preview #16215以上が必要で、且つそれらでWindows Subsystem for Linux(WSL)をインストールしておく必要があります。

Ubuntuとの共存も可能です。残りはFedoraという事になります。

追記(2017/07/23 19:43)

openSUSE Leap 42をGUIアイコンでなく、コマンドラインより起動する場合にはコマンドラインより、「openSUSE-42」とタイプします。

また、ディストリビューション毎の起動コマンドは以下のようにFall Creator Updateより追加される「wslconfig」コマンドで確認することが出来ます。

LegacyはFall Creators Update(RS3)前までのubuntuのディストリビューションなので、「lxrun /uninstall」コマンドにて削除してしまった方が良いです。(私の環境で残してしまっていた)

また、(規程)となっているディストリビューションが、「bash」コマンドで起動されるディストリビューションとなり、変更は「wslconfig /setdefault」コマンドにより行います。

UbuntuがWindowsストアに登場しました

情報源: Ubuntu now available from the Windows Store! – Windows Command Line Tools For Developers

WSLでは、Ubuntu, SUSE, Fedoraのディストリビューションがサポートされ、ストア経由でインストールされることが発表されていますが、Ubuntuがストアに追加されました、その他のディストリビューションについても追加される予定です。

このUbuntuを使用するにはWindows Insiderプログラムに登録し、ビルド#16215以上のビルドがインストールされている必要があります。

Windows Subsystem for Linuxの仕様にあたり、開発者モードの設定が不要に

情報源: Developer Mode no longer required for Windows Subsystem for Linux – Windows Command Line Tools For Developers

Windows 10 Insider Preview Build 16215よりWSLの仕様に当たって開発者モードの設定をする必要がなくなります。

これは、開発中の不安定な機能を使用するものだったため、非技術ユーザーを保護する目的で設置されていましたが、昨年からの二つの大きな更新でMSとして自信が持てたので、このツールセットを多くのユーザーが利用できるよう、開発者モードの設定無しで使えるようにするということのようです。

このため、今後WSL自体の機能をWindowsに追加するには、Windowsの機能にて「Windows Subsystem for Linux(Beta)」を選択するだけです。

Windows 10 SでWSLは動くのか?

情報源: Will Linux distros run on Windows 10 S? – Windows Command Line Tools For Developers

教育分野用のWindows 10のエディションとして、Windows Sが先頃発表されました。このWindows SはWindowsストア経由でのアプリケーションのインストールが行えませんし、ストア経由でインストールしかアプリケーションを実行できません。また、先のBuild 2017ではWSLのユーザーランドがUbuntuだけでなくSUSE, Fedoraが追加され、それがストア経由で選択してインストール出来るようになることが発表されました。

そこで、誰もが疑問に思うのがそれだったらWindows SでWSLが動くんじゃ無いかって事です。

答えはNO

理由はWSLが前提としているデスクトップブリッジが広範な権限を必要とするため、Windows Sでは動かないから。記事では同様な理由でWindows Sは開発者向けではないとしています。

Surface LaptopのようなWindows SがプリインストールされたPCを入手した場合には、Pro等へのアップグレードが必要となります。

New distro’s coming to Bash/WSL via Windows Store – Windows Command Line Tools For Developers

Memo.

情報源: New distro’s coming to Bash/WSL via Windows Store – Windows Command Line Tools For Developers

WSLのディストリビューションを今までのUbuntuに加え、SUSE, Fedoraが追加され、その中から選択できるようになりました。これでyum派のみなさんも安心ですね!

File System Improvements to the Windows Subsystem for Linux

This is part of a series of blog posts on the Windows Subsystem for Linux (WSL). For background information you may want to read the architectural overview , introduction to pico processes , WSL system calls , and WSL file system blog posts.

情報源: File System Improvements to the Windows Subsystem for Linux

WSLでWindowsのファイルシステムをマウントし、差分を吸収する仕組みがDrvFsだが、mountコマンドでDrvFsを使用するための解説。SMBなシェアフォルダもマウントできるようです。

Windows Subsystem for Linuxでのシリアルポートサポート

情報源: Serial Support on the Windows Subsystem for Linux – Windows Subsystem for Linux

Windows 10 Insider Previewの最新ビルドで、WSL上からのCOMポート使用がサポートされたようです。これでTTYが必要なアプリケーションも動作させれるようになったほか、VT-100とかつなげられますね:P

仕組み的には以下の図のようになっているようです。

Lxcore.sys内部に持つttyS.libがWindowsのCOMポートを中継する黒魔術です。

WSLではWindowsのCOM1がLinuxの/dev/ttyS1にCOM2が/dev/ttyS2と言うようにマップされます。WSLから使用する際のCOMポートのボーレート、ストップビット、フロー制御などについてはデバイスマネージャもしくはレジストリにより設定するようです。

MSではWSL上からラズベリーPiのシリアルポートに対して、以下のシナリオで動作のテストをしているようです。

  • Hyper-V virtual COM port
  • FTDI USB to serial converter
  • Prolific USB to serial converter
  • Physical COM port

まぁターミナル繋ぐのは今となってはネタですが、シリアル接続が必要なデバイスはそれなりに今もあるので、そのようなデバイスのプログラミングやデバッグをするのには良いかもしれませんね。

Windows 10 Creators Update: Bash/WSL & Windows Consoleの新しい点

雑に要約しました。

情報源: Windows 10 Creators Update: What’s new in Bash/WSL & Windows Console – Windows Command Line Tools For Developers

Windowsクリエーターズアップデートでは、WSL, コンソールアプリケーションがアップデートされています。

WSLの新機能

互換性の向上

クリエーターズアップデートではLinuxシステムコールインターフェイス(CSI)との互換性が改善されました。

これにより、各種開発ツール、言語処理系、テキストエディタ、RDBMS等が期待通りに動作します。

詳細については情報源の記事を確認ください。

Linuxとの互換テストについては、以下の記事になっています。

Testing the Windows Subsystem for Linux – Windows Subsystem for Linux

Ubuntu 16.04のサポート

Ubuntuが16.04へアップデートされました。

Win10 AUからWin 10 CUへアップデートした場合、自動的にUbuntu 14.04から16.04へのアップデートは行われないので、管理者権限のあるコマンドプロンプトで、以下の要領でWSLのアンインストールとインストールを行います。

既存の環境を余り壊したくない場合には以下の要領でインプレースアップデートが可能です。

Ubuntuのバージョン確認は以下の要領で行います。

ifconfig, ネットワーク接続列挙のサポート

Win10 AUではネットワーク接続列挙の機能が不足していたため、ifconfig、gulp、npmのようなツールが正しく動作しませんでしたが、Win10 CUではこの部分が改善されました。

pingとICMPのサポート

Win10 AUでは管理者権限がないとpingが出来ませんでしたが改善されました。

ファイル変更通知のサポート(INOTIFY)

Win10 AUでの不満点にINOTIFYの非サポートがありましたが、これも改善されました。

Windows, Linuxの相互運用

WSLのコンソールからWindowsアプリケーションの呼び出し、WindowsのコンソールからWSL上のLinuxアプリケーションを呼び出しができ、それだけで無く、パイプ、リダイレクトで接続することができます。

WindowsからLinuxコマンドを呼び出す場合、…\System32\Bash.exe経由で呼び出すので、Git for WindowsやCygwinでその他のbashにpathを通している場合には注意してください。

UNIXとNetlinkソケットの改善

Win10 AUではUnixソケットとNetlinkソケットの一部機能がサポートされていませんでしたが、改善され、多くのツールが動作するようになりました。詳しくは以下のリリースノートを確認ください。

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

TCPソケットとIPV6の改善

TCPソケットとネットワーク周りが改善され、様々なネットワークソケット機能、IPV6の使用が可能になりました。詳しくは以下のリリースノートを確認ください。

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

Windowsコンソールとコマンドラインの改善

Windowsコンソールは非常に長い歴史がありますが、長い間ほとんど顧みられること無く、機能改善はされないままで、それ故に多くのサードパーティが登場することになりましたが、長い間ユーザーの不満点として残っていました。

ところが、MSがOSSに配慮するようになって、要約その不満点を理解したのか、2年前よりWindowsコンソールチームがが出来、コンソールのオーバーホールが行われています。

多くのVTシーケンスの改善

以前のWindowsのコンソールは不十分なANSIシーケンスのサポートで有名でしたが、もはやそれは過去のものとなりました。

Win10 AUのコンソールではほとんど一般的なANSI, VTシーケンスがサポートされましたが、いくつかの高度な機能が欠落していました。Win10 CUではさらにVTシーケンスのサポートが改良され、いくつかの高度なVTシーケンスを正しく処理できるようになり、vim、emacs、Midnight Commander、tmux、htopなどの多くのリッチテキストUI機能をコンソールに表示できるようになりました。

24ビットカラーのサポート

コンソールで24ビットカラーがサポートされるようになりました。

マウスのサポート

コンソールでマウスがサポートされるようになりました。

Windowsのシンボリックリンクで管理者権限が不要に

Win10 CUで開発者モードをONにした場合、管理者権限無しでシンボリックリンクの作成が可能になりました。

これについては次の記事を参考にしてください。

https://blogs.windows.com/buildingapps/2016/12/02/symlinks-windows-10/#lHydFmMHvUPDUtk0.97

What’s Next?

Win10 CUにおいてもWSLはベータ版です。

Windows 10 Insider PreviewのFastリングに登録して、新しい追加機能を試すとともにフィードバックをして欲しいとのこと。