WSLGはLinux GUI用のWindowsサブシステムの略であり、プロジェクトの目的は、完全に統合されたデスクトップエクスペリエンスでWindowsでLinux GUIアプリケーション(X11およびWayland)のランニングのサポートを可能にすることです。
WSLGは、PCでウィンドウを実行することを好む、または好む開発者、科学者、または愛好家に統合されたエクスペリエンスを提供しますが、Linux環境で最適に、または排他的に機能するツールまたはアプリケーションを実行する機能も必要です。ユーザーは、WindowsとLinux、WindowsまたはLinuxのいずれかをホストする仮想マシン、またはWSLに投影され、WSLに投影された個々のPCを使用して、複数のシステムセットアップを使用して今日これを実現できますが、WSLGはより統合されたユーザーフレンドリーで生産的です代替。
WSLGは、Linux GUIアプリケーションにWindowsで使用するのがネイティブで自然に感じられるように努めています。起動メニューへの統合の起動からタスクバーに表示されるまで、Alt-Tabエクスペリエンスまで、WindowsおよびLinuxアプリケーション全体のカット/ペーストを可能にします。WSLGは、シームレスなデスクトップエクスペリエンスとWindowsおよびLinuxアプリケーションを活用するワークフローエクスペリエンスを有効にします。
WSLGはWindows 11とWindows 10の両方でサポートされています。Windows10ユーザーは、Windows 10の更新にアクセスして利用可能なすべてのアップデートをインストールすることにより、Windows 10のインストールが完全に最新であることを確認する必要があります。
WSLGは、Windows 11 WSL Inboxサポートの一部として、およびMicrosoftストアのLinux用のWindowsサブシステムの両方として利用できます。 Windows 10とWindows 11の両方をサポートし、WSLとWSLGの最新バージョンを含むWSLのMicrosoftストアバージョンを使用することを強くお勧めします。
GPUメーカーのWebサイトから利用可能な最新のドライバーにグラフィックドライバーを更新して、WSL環境でのGPUアクセラレーションの恩恵を受けるようにしてください。
管理者の特権を備えたコマンドプロンプトから、コマンドwsl --install -d Ubuntu
から、プロンプトが表示された場合に再起動します。
再起動後、インストールは継続されます。ユーザー名とパスワードを入力するように求められます。これらはLinux資格情報になります。それらはあなたが望むものであり、Windows資格情報を一致させる必要はありません。
ボイラ! WSLとWSLGがインストールされ、使用する準備ができました!
WSLGなしで既存のWSLインストールがあり、WSLGを含むWSLの最新バージョンに更新したい場合は、コマンドwsl --update
高されたコマンドプロンプトから実行します。
WSLGはWSL 2とのみ互換性があり、WSL 1モードで動作するように構成されたWSL分布では機能しないことに注意してください。 LinuxディストリビューションがWSL 2モードで実行されていない場合はWSL 2に切り替えないように構成されていることを確認します。また、WSLGをインストールした後、WSL 1モードでLinuxディストリビューションを実行し続けることができます。 WSLGと通信できず、GUIアプリケーションを実行することもできません。
現在インストールされているディストリビューションと、次のコマンドを使用するために構成されているWSLのバージョンを、高架コマンドプロンプトからリストすることができます。
wsl -- list - v
バージョン1モードで実行される場合は、バージョン2に切り替えます。これには時間がかかる場合があります。
wsl -- set-version _distro_name_ 2
このコマンドを昇格したコマンドプロンプトから実行してWSLを再起動します。最初に保留中の作業を保存してください。
wsl -- shutdown
プレビュー用にリリースされたWSLおよびWSLGの最新バージョンに更新するには、高されたコマンドプロンプトまたはPowerShellからwsl --update
を実行するだけです。
変更が有効になるには、WSLを再起動する必要があります。 wsl --shutdown
伸ばしてWSLを実行して、WSLを再起動できます。 WSLが現在実行されている場合は、シャットダウンします。最初に進行中の作業を保存してください! WSLは、次回WSLアプリケーションまたは端末を起動するときに自動的に再起動されます。
これらの命令に従ってUbuntu
Linuxディストリビューションをインストールした場合、スタートメニューにUbuntu
アイコンが見つかります。これにより、WSL 2 VMが起動し、そのVMでUbuntu WSLディストリビューションを起動し、対話するための端末を提供します。ボイラ! WindowsでLinuxを実行しています!
WSL用に構築された追加のLinux分布を検討したい場合は、システムに利用可能な分布のリストを列挙するために、heepleatedコマンドプロンプトからwsl --list --online
コマンドを使用できます。 WSL内に複数のLinux分布をインストールすることができ、それらは喜んで並んで共存するので、実験して試してみるのを怖がらないでください。
おめでとうございます、GUIアプリを使用する準備ができています!
いくつかのGUIアプリを始めたい場合は、Linux端末から次のコマンドを実行して、人気のあるアプリケーションをダウンロードしてインストールできます。 Ubuntuとは異なる配布を使用している場合、別のパッケージマネージャーを使用している可能性があります。
# # Update list of available packages
sudo apt update
# # Gedit
sudo apt install gedit - y
# # GIMP
sudo apt install gimp - y
# # Nautilus
sudo apt install nautilus - y
# # VLC
sudo apt install vlc - y
# # X11 apps
sudo apt install x11 - apps - y
# # Google Chrome
cd / tmp
sudo wget https: // dl.google.com / linux / direct / google - chrome - stable_current_amd64.deb
sudo dpkg - i google - chrome - stable_current_amd64.deb
sudo apt install -- fix - broken - y
sudo dpkg - i google - chrome - stable_current_amd64.deb
# # Microsoft Teams
cd / tmp
sudo curl - L - o " ./teams.deb " " https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb "
sudo apt install . / teams.deb - y
# # Microsoft Edge Dev Browser
sudo curl https: // packages.microsoft.com / repos / edge / pool / main / m / microsoft - edge - dev / microsoft - edge - dev_118. 0.2060 . 1 - 1_amd64.deb - o / tmp / edge.deb
sudo apt install / tmp / edge.deb - y
これらのアプリケーションがインストールされると、ディストリビューション名の下にスタートメニューに表示されます。たとえば、 Ubuntu -> Microsoft Edge
。コマンドを使用して、端末ウィンドウからこれらを起動することもできます。
xcalc
、 xclock
、 xeyes
gimp
gedit ~/.bashrc
nautilus
vlc
google-chrome
teams
microsoft-edge
ユーザーディストリビューションは、基本的にLinux作業に使用しているWSL分布です。コマンドwsl --list --online
を使用して、システムで利用可能なWSL分布をリストします。複数のユーザーディストリビューションを並べて実行でき、それらは平和的に共存するので、新しいディストリビューションを試すことを恐れないでください。各ユーザーディストリビューションは、システムディストリビューションの一意のインスタンスとペアになりますが、それらの間のカット/ペーストなど、さまざまなユーザーディストリビューションで実行されているGUIアプリケーション間で対話できます。さまざまなユーザースペースの基礎となるコンテナ化は、あなたには見えないはずです。
特定のWindowsユーザーのすべてのユーザーおよびシステムディストリビューションLinuxカーネルの単一インスタンスに対して同じWSL仮想マシン内で実行されます。 PC上のさまざまなWindowsユーザーには、独自のVMとWSLのインスタンスがあります。 Linux環境は常に自分のものであり、同じPCの他のWindowsユーザーと共有されないことが保証されています。
システムディストリビューションは、すべての魔法が発生する場所です。システムディストリビューションは、WSLG XServer、Wayland Server、Pulse Audio Serverが実行されているコンテナ化されたLinux環境です。これらの各サーバーの通信ソケットは、クライアントアプリケーションがそれらに接続できるため、ユーザーディストリビューションに投影されます。ユーザーディストリビューション環境変数の表示、Wayland_display、およびpulse_serverがデフォルトでこれらのサーバーを参照して、WSLGがボックスからライトアップします。
WSLGが提供するサーバーとは異なるサーバーを使用したいユーザーは、これらの環境変数を変更できます。ユーザーは、 .wslconfig
ファイル( c:usersMyUser.wslconfig
にある)に次のエントリを追加することで、システムディストリビューションを完全にオフにすることもできます。これにより、WSLのGUIアプリケーションのサポートがオフになります。
[wsl2]
guiApplications=false
システムディストリビューションは、Microsoft CBL-Mariner Linuxに基づいています。これは最小限のLinux環境であり、さまざまなWSLGを実行するのに十分です。プライベートシステムディストリビューションの構築と展開の詳細については、ビルドの指示をご覧ください。
すべてのWSL 2ユーザーディストリビューションは、システムディストリビューションの独自のインスタンスとペアになります。システムディストリビューションは、独自のNS/PID/UTSネームスペースでペアになっているユーザーディストリビューションから部分的に分離されていますが、IPCなどの他の名前空間を共有して、境界を越えて共有メモリ最適化を可能にします。
ユーザーは端末をシステムディストリビューションに入れることができますが、システムディストリビューションはユーザーが直接使用することを意図していません。システムディストリビューションのすべてのインスタンスは、バッキングVHDから読み取り専用です。システムディストリビューション(新しいパッケージのインストールや新しいファイルの作成など)のメモリ内インスタンスに加えられた変更は、WSLが再起動されたときに効果的に破棄されます。これを行う理由は、システムディストリビューションのサービスモデルを有効にして、古いモデルを新しいものに置き換えることを可能にします。 WSLがサービスを受けるときに驚きを得るのではなく、WSLが再起動されるたびに、ユーザーが変更についてよく知られている廃棄行動を取得するように、読み取り専用マッピングを使用します。
MicrosoftはWSLG System Distroを読み取り専用として公開しましたが、人々がそれをいじくり回して実験することを奨励したいと考えています。実際にそれを必要とするか、それをやりたいと思う人はほとんどいないと予想していますが、私たちは、システムディストリビューションのプライベートバージョンの構築と展開の両方について、寄稿ページの詳細な指示を共有しています。 WSLでGUIアプリケーションを使用したいほとんどのユーザーは、これらの詳細について心配する必要はありません。
WSLGDは、INIT後に起動する最初のプロセスです。 WSLGDは、 Weston (Xwayland)、 Pulseaudioを起動し、サイレントモードでホストでMSTSC.Exeを起動することにより、RDP接続を確立します。 RDP接続は依然としてアクティブであり、接続確立の遅延なしに、瞬間に起因する新しいGUIアプリケーションを表示する準備ができています。その後、 WSLGDはこれらのプロセスを監視し、それらがエラーで終了する場合(たとえばクラッシュの結果として)、自動的に再起動します。
ウェストンは、ウェイランドプロジェクトリファレンスコンポジタであり、WSLGの中心です。 WSLGの場合、Libwestonの既存のRDPバックエンドを拡張して、監視/デスクトップではなくリモートアプリケーションの方法を教えました。また、マルチモニター、カット/ペースト、オーディオイン/アウトなどのサポートなど、さまざまな機能を追加しました...
アプリケーション統合は、Rail(ローカルに統合されたリモートアプリケーション)とVail(ローカルで統合された仮想化アプリケーション)と呼ばれるRDPテクノロジーを通じて達成されます。レールとベイルの主な違いは、RDPサーバーを介してRDPクライアントにピクセルがどのように輸送されるかです。鉄道では、サーバーとクライアントがネットワーク上で通信するさまざまな物理システムで実行されているため、RDPトランスポートを介してピクセルをコピーする必要があると想定されています。 Vailでは、サーバーとクライアントが同じ物理システム上にあり、ゲスト/ホストVM境界全体でメモリを共有できることが理解されています。 WSLGの場合、ベイルサポートのみが効果的に使用されていますが、Libweston RDPバックエンドに鉄道とベイルの両方のサポートを追加しました。 WSLGの構築中、最初にレールを実装しましたが、ベイルへのスイッチを可能にする必要なピースが並行して開発されていました。たとえば、WSLG以外の他の興味深いシナリオで再利用できるように、そのサポートを維持することにしました。 LinuxゲストとWindowsホストの間でメモリを共有するには、Virtio-FSを使用します。
ウェストンはモジュラーで、デスクトップシェル、フルスクリーンシェル(別名キオスク)、自動シェルなど、さまざまなシェルがあります。 WSLGについては、Rail Shellという新しいシェルを導入しました。レールシェルの目的は、LinuxからWindowsへの個々のWindowsのリモートを支援することです。そのため、シェルは非常に単純で、実際のウィジェットまたはシェル所有のピクセルは含まれません。
WestonはFreerDPを活用して、バックエンドRDPサーバーを実装します。 FreerDPは、RDPプロトコル仕様に従って、RDPサーバー(Weston)からRDPクライアント(Windows上のMSTSC)に移行するすべての通信をエンコードするために使用されます。また、RDPクライアントからRDPサーバーに来るすべてのトラフィックをデコードするためにも使用されます。
(マイク)およびOut(スピーカー/ヘッドフォン)のオーディオの場合、WSLGはPulseaudioサーバーを実行します。 WSLGは、オーディオアウト用のシンクプラグインと、オーディオ用のソースプラグインを使用します。これらのプラグインは、PulseserverとWeston RDPサーバーの間にオーディオサンプルを効果的に転送します。オーディオストリームは、Weston RDPサーバーによってRDPトランスポートに統合され、WSLGを含むすべてのシナリオ(デスクトップ/レール/ベイルスタイルのリモート)にわたってWeston RDPバックエンドでオーディオイン/アウトを効果的に有効にします。
WSLGは、Weston RDPサーバーとWindowsホストで実行されているMSTSC RDPクライアントの間でカスタムRDP仮想チャネルを使用しています。このチャネルは、Westonによって使用され、すべてのLinux GUIアプリケーション(IEアプリケーションがタイプGUIのデスクトップファイルエントリがある)とその起動コマンドラインとアイコンを列挙しています。オープンソースWSLDVCPLUGINは、このチャネルで送信されたLinux GUIアプリケーションのリストを処理し、Windowsのスタートメニューでそれらのリンクを作成します。
WSLGは仮想GPUサポートの有無にかかわらず動作しますが、BlenderやGazeboなどのグラフィック集中アプリケーションを実行する場合は、WSLをサポートできるGPUとドライバーを備えたシステムで実行するのが最善です。 VGPUアーキテクチャの概要と、LinuxアプリケーションがWSLでGPUにアクセスできるようにする方法は、DirectXブログで入手できます。
OpenGL Acceleratedレンダリングのサポートは、D3DチームがCollaboraとMESAコミュニティでD3D12 Galliumドライバーを作成する作業を通じて可能になりました。
WSLGのサポートを含むLinuxのサポートは、MESA 21.0リリースの上流であり、一部でした。この加速を活用するには、ユーザーディストリビューションにインストールされているMESAのバージョンを更新する必要があります。また、ディストリビューションベンダーが新しいD3D12 Galliumドライバーをパッケージリポジトリに構築および公開することを選択したことも必要です。私たちは、さまざまなWSLディストリビューションパブリッシャーと協力して、これらの変更を通知しています。
WSLGの最初のリリースでは、VGPUはシステムメモリを介してWestonコンポジターと相互作用することに注意してください。個別のGPUで実行されている場合、これは効果的に、レンダリングされたデータがVRAMからシステムメモリにコピーされ、WSLG内のコンポジタに提示され、Windows側のGPUに再度アップロードされることを意味します。その結果、プレゼンテーション率に比例したパフォーマンスペナルティがあります。離散GPUの600FPSなどの非常に高いフレームレートでは、そのオーバーヘッドは50%に達することがあります。低いフレームレートまたは統合GPUでは、ワークロードに応じて、ネイティブにはるかに近いパフォーマンスを実現できます。 VGPUを使用すると、このV1の制限にもかかわらず、ソフトウェアレンダラーを使用することで非常に重要なパフォーマンスと経験の改善が得られます。
WSLGは、Linuxコミュニティの優れた作業に基づいており、多数のオープンソースプロジェクトを利用しています。ほとんどのコンポーネントは、アップストリームバージョンのISとして使用されており、WSLGでライトアップするために変更を必要としませんでした。 WSLGの中心にある一部のコンポーネント、特にWeston、FreerDP、Pulseaudioには、リッチなWSLG統合を可能にするために変更が必要でした。これらの変更はまだ上流ではありません。 Microsoftはコミュニティと協力して、これらの貢献を各プロジェクトと共有しているため、WSLG固有の変更を必要とせずに、時間の経過とともに上流コンポーネントから直接構築できます。
これらの飛行中の貢献はすべて、Microsoftミラーリポジトリに保管されています。これらのミラーを上流のリリースで最新の状態に保ち、それらのレポでWSLGの変更をステージングします。 WSLGは、インサイダーWSLGプレビューリリースの一部として、これらのミラーリポスからコードを引き出して構築します。これらのミラーは公開されており、誰でもアクセスできます。好奇心の強い開発者は、これらのミラーのコードを調べることで私たちの貢献の初期段階を覗くことができます。コードの最終バージョンは、貢献がアップストリームプロジェクトに到達し、フィードバックが受け取るフィードバックに基づいて採用されると、異なるように見える可能性が高いことに留意してください。さまざまなプロジェクト所有者。すべてのミラーは同じモデルに従います。最後の同期ポイントの上流の分岐に対応するメインブランチがあります。メインブランチを随時更新して、アップストリームプロジェクトから更新を選択します。また、すべての飛行中の変更を含む作業ブランチもあります。 WSLGは、各ミラープロジェクトの作業ブランチを使用して構築されています。
WSLGがミラーを維持するプロジェクトは、飛行中の貢献が進化するにつれて時間とともに変化します。いくつかの貢献が上流になると、ミラーを維持する必要がなくなる場合があります。その時点で削除され、WSLGはコンポーネントのアップストリームバージョンを直接活用し始めます。 WSLGの新しい機能を照らすと、新しいミラーが新しいコンポーネントへの段階的な貢献を導入することができます。そのため、ミラーのリストが時間外に変わることを期待してください。
この時点で、現在飛行中の貢献のための次のプロジェクトミラーがあります。
プロジェクト | 上流のレポ | WSLGミラー |
---|---|---|
ウェストン | https://github.com/wayland-project/weston | https://github.com/microsoft/weston-mirror |
freerdp | https://github.com/freerdp/freerdp | https://github.com/microsoft/freerdp-mirror |
Pulseaudio | https://github.com/pulseaudio/pulseaudio | https://github.com/microsoft/pulseaudio-mirror |
以下は、これらのミラーに含まれる各プロジェクトへの現在飛行中の貢献の高レベルの概要です。
WSLGは、RDPテクノロジーを使用してLinuxとWindowsの世界を橋渡しするWayland CompositorとしてWestonを活用して、それらの間のリモートアプリケーションコンテンツを橋渡ししています。ウェストンにはすでにRDPバックエンドがありましたが、シングルモニターデスクトップリモートに限定されていました。 RDPバックエンドを大幅に強化して、マルチモニターサポート、コピー/ペースト用のクリップボード統合、オーディオイン/アウトなどの高度な機能を含めることができました。デスクトップ/モニターではなく個々のアプリケーションがリモートされている場合、レール(ローカルでリモートアプリケーション統合)およびベイル(ローカルに統合された仮想化アプリケーション)と呼ばれる新しいリモートモードを有効にしました。これらの変更はWSLGに固有のものではありません。既存のRDPバックエンドに機能を追加し、他のシナリオでも再利用可能です(つまり、Raspberry PIで実行されているRDPクライアントを実行している別のデバイスに新しいWeston RDPバックエンドをリモートアプリケーションに使用します)。
WSLGでの豊富な統合を有効にするために、WSLGに固有のRDPバックエンドに小さなプラグインも追加しました。 Westonでは、プラグインがユーザーディストリビューションに接続し、インストールされたアプリケーション(別名デスクトップファイル)を検索する責任があります。プラグインは、Windowsホストに、発売コマンドとアイコンとともに見つかったすべてのアプリケーションのリストを送信します。 Windowsホストでは、WSLG ProjectのオープンソースMSTSCプラグイン部分がその情報を使用して、これらのLinuxアプリケーションのショートカットをWindowsのスタートメニューに作成します。
また、さまざまなアプリケーションに影響を与えるいくつかのバグを修正しました。一般的に、これらはすべてのモードでウェストンに影響を与え、WSLGに固有の問題でした。
Westonは現在、RDPバックエンドにFreerDPを使用しています。 WSLGは引き続きFreerDPを活用しており、新しいRDPプロトコル/チャネルのサポートを追加して、Vail最適化されたシナリオとWSLGプラグインのサポートを有効にしています。また、MSTSCとのインターオップに影響を与えたり、不安定性を引き起こしたりしているさまざまなバグを修正しました。
Pulseaudioの場合、当社の貢献は、PulseaudioとWeston RDPバックエンドの間のオーディオデータをシャッフルするシンクとソースプラグインに焦点を当て、オーディオデータをRDP接続にホストに戻すことができます。これらの新しいプラグインを追加する以外に、Pulseaudioのコアに変更はありません。
WSLGをいじくり回したり、貢献したりしたい場合は、WSLGのバージョンを作成して実行する方法など、詳細については、寄稿ページをご覧ください。
バグの報告や新機能の提案の作成など、非セキュリティ関連の問題については、このプロジェクトの問題トラッカーを使用してください。
WSLGまたはその他のMicrosoft製品のセキュリティ問題を報告するには、ここで詳述されている指示に従ってください。
このプロジェクトには、プロジェクト、製品、またはサービスの商標またはロゴが含まれる場合があります。 Microsoftの商標またはロゴの承認された使用は、Microsoftの商標およびブランドガイドラインに従うものであり、従わなければなりません。このプロジェクトの変更されたバージョンでのMicrosoft商標またはロゴの使用は、混乱を引き起こしたり、Microsoftのスポンサーシップを暗示したりしてはなりません。サードパーティの商標またはロゴの使用は、これらのサードパーティのポリシーの対象となります。