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

WSL Interoperability with Docker

情報源: [Cross Post] WSL Interoperability with Docker – Windows Command Line Tools For Developers

Memo.

WSL上でDockerが動くというわけではなく、WSLのWindowsプロセスとのパイプ接続の仕組みを利用して、Docker for Windows上でDockerのコンテナが動作する仕組みとなっているようです。下の図が仕組みを表しております。

WSLでのバックグラウンドタスクのサポート

情報源: Background Task Support in WSL – Windows Command Line Tools For Developers

Windows Insider Build 17046よりバックグラウンドタスクの実行がサポートさえています。sshd、httpd、screen、そしてtmaxに関しては起動したコンソールを閉じても動作し続けます。

WSLタスクの昇格について

バックグラウンドプロセスサポートの一環として、GitHubリポジトリからのディスカッションに従って、複数のWSLインスタンス(2つ以上のコンソールウィンドウでWSL)を実行しながら、より良いエクスペリエンスを求めています。 他のセッションの権限に影響を与えることなく、昇格したWSLインスタンスと昇格していないWSLインスタンスを同時に実行できるようになりました。

スタートアップタスクについて

デーモンをバックグラウンドで実行することについて話すたびに、スタートアップタスク(init、システム、クラウド初期化など)をサポートするかどうか尋ねる必然性があります。 WSLはLinuxスタートアップタスクをサポートしていませんが、Windowsタスクスケジューラを使用してカスタムスタートアップスクリプトやその他のスケジュールされたタスクを作成することができます。 また、initスタイルの機能を調べています。 私たちにフィードバックを送ってください。

ウォークスルー

情報源をご確認ください。

ということで、バックグラウンドタスクが追加されましたが、非常に限定的です。まぁあくまでも開発補助機能ですので。ただ、initは追加されるかもわからないので、今のバックグラウンドタスクの機能を使ってどしどしフィードバックしましょう。

A Guide to Invoking WSL – Windows Command Line Tools For Developers

情報源: A Guide to Invoking WSL – Windows Command Line Tools For Developers

以前にも書いていますが、CUとFCUとでは複数のディストリビューションに対応したことから、WSLのコマンドがかなり変更されているので、よくドキュメントを読みましょう。

Learn about the Windows Subsystem for Linux

Windows Subsystem for Linuxでの複数ディストリビューションの管理

Reference listing and configuring multiple Linux distributions running on the Windows Subsystem for Linux.

情報源: Manage Linux Distributions

上に書いてあるとおりです。

Windows 10 Fall Creators Update(RS3)よりWindows Subsystem for Linuxで複数ディストリビューションを同時実行できるようになり、それに伴いディストリビューション管理用のコマンドが追加されているほか、コマンドが新しくなっています。

機能的には上にあるようにインストールされているディストリビューションの一覧、既定のディストリビューションの設定、登録されているディストリビューションの解除が行えます。

このようにディストリビューション名と既定(Default)であるかどうかが表示されます。

既定とそうでは無いものとの違いは、既定となっているディストリビューションはwsl.exe(従来のbash.exeに変わる物)もしくはbash.exe(将来的になくなる可能性有り)コマンドで呼び出されるディストリビューションとなります。また、既定でないディストリビューションを呼び出す場合には、ストタートメニューから該当するディストリビューションのアイコンをクリックするか、上のwslconfig /lコマンドで表示されるディストリビューション名をコマンドプロンプトもしくはPowerShellから起動します。

また、wsl.exeとディストリビューション名で呼び出したときの細かな違いとしては、wsl.exeの場合ログイン時のフォルダがWindows側のユーザーフォルダ(/mnt/(systemdrive)/users/(username))であるのに対して、ディストリビューション名で呼び出した場合には、Unixファイルシステム側のHOMEディレクトリ(~)になります。ただこのあたりの動作も今後RS4に向けて仕様が変わらないとも限りません。ユーザーフィードバック次第だと思います。

ということで、RS3以降追加されたコマンドや挙動もそれなりに変わっているので、上情報源等MSDNのドキュメントを今一度ご確認ください。また、リリースノート、開発陣のBlogを追いかけておくことも大事です。

リリースノート https://msdn.microsoft.com/ja-jp/commandline/wsl/release-notes

Windows Command Line Tools For DevelopersのBlog https://blogs.msdn.microsoft.com/commandline/

Windows Subsystem for LinuxチームのBlog https://blogs.msdn.microsoft.com/wsl/

Windows 10 Fall Creators UpdateのWSLの新機能

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

Windows 10 Fall Creators Update(RS3)の一般提供が来週の17日に迫ってきたことも有り、RS3でのWSLの変更についてまとめられています。

以下は私のメモ程度の簡訳なので、正確な記載については上の情報源を参照ください。

WSLはもはやベータ版ではありません!

Fall Creators Update(2017年10月17日出荷)では、WSLは完全にサポートされたOS機能になります。

つまり、WSLに関する予期しない問題や問題が発生した場合は、マイクロソフトサポートに連絡して、通常のチャネルで管理されるサポートチケットを提出することができます。

また、エンジニアリングチームとコミュニティは、WSL Github Issues RepoとWindows 10のFeedback Hubを介して引き続きサポートを提供します。これらのチャネルを介してコミュニティが提供するすべてのサポートに感謝します。

Windowsストア経由でLinuxディストリビューションをインストールする

RS2まではUbuntuがWSLで使用できる唯一のディストリビューションでしたが、RS3よりはWindowsストアより複数のディストリビューションがインストール可能となります。現在はUbuntu, openSUSE, SUSE Linux Enterprise Server(SLES)が用意されており、Fedoraやその他ディストリビューションについては今後数ヶ月で登場する予定です。

RS3以降のインストール手順は、以下のようにコンロールパネルのプログラムと機能よりWindowsの機能の有効かまたは無効化を選択し、以下の図のようにチェックを付けてWSLの基本機能をインストールし、再起動します。再起動しないとWSLのコンポーネントが動作しません。

再起動後、ストアで「Linux」検索し、Linuxバナーのボタンをクリックします。

次に、インストールしたいディストリビューションを選択します。

製品ページのインストールボタンをクリックします。

WSLは複数のディストリビューションを同時に実行可能となりました

Fall Creators UpdateのWSLの最大の改善点は、Windows Storeから1つ以上のLinuxディストリビューションをインストールするだけでなく、それらを同時に実行できることです。

これで、Ubuntu、openSUSE、SUSE Linux Enterprise Serverを並行してインストールして実行できます。お気に入りのWindowsツールやCmdやPowerShellなどのシェルも一緒にインストールできます。

各ディストリビューションは互いに独立して動作しますが、Windowsのホストファイルシステム、ネットワーキングスタックなどにもアクセスできます。

異なるディストリビューションが動作することで、Ubuntu上のApacheでホストされたWEBアプリケーションをWindowsのEdgeやChromeで表示テストし、同時にSUSE上で動作しているRESTクライアントのテストが可能です。ローカルでテストするときには、これらすべてのプロセスは、ファイアウォールの上に並んで実行されます。

また、注意点としては、RS2までのUbuntuのイメージは正常に動作し続けますが、廃止予定と見なされ正式にサポートされません。ファイルをいままでのインスタンスから、ストアよりインストールされたインスタンスに移し、既存のインスタンスは廃棄することが推奨されます。

WSLはWindows ServerとそのMicrosoft Azure VMにも付属するようになります

WSL arrives on Windows Server!を参照。

WSLはUSBシリアルポート、USBストレージ・ネットワーク共有のマウントをサポートします

WSLではUSBシリアルポートをサポートし、USBストレージやネットワーク共有のマウントをサポートします。以下の記事を参照してください。

Bash/WSL Insiders build now supports usb/serial comms and mounting removable storage & network shares

マウントできるUSBストレージはWindowsのファイルシステム経由となるため、現在はFAT/FAT32/NTFS形式のストレージデバイスのマウントのみがサポートされていることに注意してください。

その他の修正と改善

詳細は16170から16288までのビルドのWSLリリースノートを確認ください。

改善点の一部は以下になります。

  • 改良されたTCPソケットオプションinc。IP_OPTIONS、IP_ADD_MEMBERSHIP、IP_MULTICASTなど
  • /etc/hostsはWindowsホストファイルからエントリを継承するようになりました
  • xattr関連のシステムコールサポート
  • いくつかのファイルシステムの機能と機能を修正
  • 改善されたPTRACEサポート
  • 改善されたFUTEXサポート

RS3より以下のシステムコールが初めてサポートされます。

  • Prlimit64
  • getxattr、setxattr、listxattr、removexattr

“Bash on Windows”と言う呼び方を非推奨とします

もともと、「Linux用Windowsサブシステム」という名前は、一般に、Linuxバイナリを実行するWindowsカーネルインフラストラクチャを指していました。これが意味することとエンドユーザーエクスペリエンスを伝えたいので、エンドユーザーの機能を「WindowsのUbuntuのBash」、または単に「WindowsのBash」と呼んでいます。

この名前付けスキームは、少なくともWSLが提供するものの本質を伝えるのに役立ちましたが、「Bash on Windows」はWSLのしくみを実際には説明していません。

だから、今後は機能名「Bash on Ubuntu on Windows」を使用しなくなります!

代わりに、「Windows Subsystem for Linux」(WSL)を使用して、Windows上でLinuxバイナリを実行できるようにするカーネルとWindowsツールを含むMicrosoftのテクノロジスタックを参照します。ディストリビューションは、Ubuntu、openSUSE、SUSE Linux Enterprise Serverなどの名前で知られています。

だから将来、会話は 「LinuxはWindows / WSL上でうまく動作する」、あるいは 「私はWSL上でUbuntuを実行する」、または 「WSL上でopenSUSEを試してみた」のようなものになります。

次は?

WSLエンジニアリングチームには長い改善と新規機能のリストが有り、これに取り組んでいます。今後Insider PreviewのFirst Ring向けには開発の都度新機能や改善を提供していきます。

Windows 10 Fall Creators UpdateでのWindows Consoleについて

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

Windows 10 Fall Creators Update(RS3)の一般提供が来週の17日に迫ってきたことも有り、RS3でのコンソール機能の変更についてまとめられています。

以下は私のメモ程度の簡約なので、正確な記載については上の情報源を参照ください。

Windowsコンソールのアクセシビリティの向上

長らくWindowsのコンソールはスクリーンリーダーに対応していませんでしたが、RS3からはWindows UI Automationインフラストラクチャ(UIA)を使用するスクリーンリーダーでコンソールの内容が読み取れるように改善されました。

これについての詳細は今後まとめられるようです。

テキストレンダリングとVTシーケンスのサポートの改良

Windows 10 Creators Update(RS2)にてVTシーケンスのサポートなどの改善が行われましたが、より表示がLinuxあるいはMacのコンソールと同じように動作するよう改善されました。

また、Windowsコンソールの今後のリリースでは、いくつかの重要な入力、テキスト、その他のVTの改善が計画されています。

新しいデフォルトカラースキーム

コンソールのカラースキームが下図の上から下に変更されました。現代の高解像度LCDパネルでわかりやすいカラースキームに変更されています。

ColorToolを使用したカスタムカラースキーム!

カスタムカラースキームの正式なサポートにはまだ時間がかかるものの、最近リリースしたOSSのColorToolを使用することでカラースキームのインポートが可能になりました。

コンソールのオーバーホール

コンソールチームはWindowsのコンソールを近代化し、より信頼性の高いものにするようオーバーホールしています。

この作業は続行されますが、主要なアーキテクチャ変更作業の終わりに近づいています。あなたにふさわしい世界最高レベルのコンソールエクスペリエンスを提供するように努めています。

Consoleの今後の計画

RS4のInsider Previewに今後数週間で新しいコンソールがが登場し、数ヶ月後の正式リリース時には改良されたコンソールがリリースされる予定です。改良点等についてはWindows ConsoleチームのブログRich TurnerのTwitterでお知らせします。

問題が見つかった場合には以下のGitHubへ登録をお願いします。

https://github.com/microsoft/console

Learn About Bash on Windows Subsystem For Linux – Windows Command Line Tools For Developers

情報源:Learn About Bash on Windows Subsystem For Linux – Windows Command Line Tools For Developers

とりあえずWSLの情報がCreators Updateリリース時の状態で止まっている人は、正式リリースとなるFall Creators Updateに備えて予習しておきましょう。

ディストリビューションはUbuntu, SUSE, Fedoraの中から選べるようになりますし、カーネルの互換性も上がっていて、パフォーマンスも改善されています。

ただし、余り欲張りな期待を持つのは禁物です。Linuxカーネルの全てのシステムコールにはまだ対応していません。WSLはLinuxサーバーの代わりにはなりませんし、しても行けません。X Windowsのアプリケーション実行も正式サポートにはなりません。

あくまでもWSLは「Windowsではこんなのも動かないの?」対策であることにFall Creators Updateでも変わりはありません。

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」コマンドにより行います。