WSL(Linux用Windowsサブシステム)のシステム展開とは何ですか?

WSL(Linux用Windowsサブシステム)のシステム展開とは何ですか?

wsl.exeヘルプ(と表示wsl.exe --help)では、「システムの展開」について説明します。

Options:
...
    --system
        Launches a shell for the system distribution.

それは何ですか? WSL文書で「システムリリース」を検索すると、そのセクションから次の内容のみが取得されます。WSLディスクスペースを管理する方法:

ブロックデバイスに関する情報は次のとおりです。名前:デバイスに割り当てられた名前はsd[a-z]SCSIディスクを表し、使用中の各ディスクに文字を割り当てます。sda常にシステムが分散されます。

答え1

このシェルを起動した後にインストールされた/etc/os-releaseディストリビューションの詳細については、こちらをご覧ください。

私のWSLではこれが本当のようで、Common Base Linux Marinerここに文書化されています。https://aka.ms/cbl-mariner

CBL-Marinerは、Microsoftクラウドインフラストラクチャとエッジ製品とサービスのためのオンプレミスLinuxディストリビューションです。 CBL-Marinerは、これらのデバイスとサービスに一貫したプラットフォームを提供するように設計されており、Linuxを最新の状態に保つマイクロソフトの能力を向上させます。 [...]

システムシェルの出力例

PS C:\Users\testuser> wsl --system
wslg [ /mnt/c/Users/testuser ]$ cat /etc/os-release
NAME="Common Base Linux Mariner"
VERSION="2.0.20230630"
ID=mariner
VERSION_ID="2.0"
PRETTY_NAME="CBL-Mariner/Linux"
ANSI_COLOR="1;34"
HOME_URL="https://aka.ms/cbl-mariner"
BUG_REPORT_URL="https://aka.ms/cbl-mariner"
SUPPORT_URL="https://aka.ms/cbl-mariner"

一般ユーザーシェルの出力例

PS C:\Users\testuser> wsl
testuser@testhost:/mnt/c/Users/testuser$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

答え2

WSLの「システム展開」(または状況によっては「a」)は少し奇妙な名前ですが、おそらく「ユーザー展開」の反対を意味します。説明するのもちょっと難しいですね。オリジナル作品に概要があります。WSLgアーキテクチャ約2年前の開発ブログ投稿です。

ほとんどのユーザーにとって、好奇心を超えてシステムの配布を知ったり使用したりする必要はありません。ただし、次の目的で使用できます。

  • WSLでのWSLg/GUIの問題のデバッグ
  • 必要に応じてWSLg機能を変更または交換します。
  • --systemWSLヘルプでこの奇妙なパラメータの機能を学びます;-)

まず、いくつかの追加の「用語」です。 「システム展開」とは何かを理解するには、まずWSLの「配布」を正しく理解する必要があります。簡単な概要 - Distroは、実行される名前空間分離環境(コンテナ)です。~へWSL2仮想マシン。バラよりこの回答もっと学ぶ。

実際には複数のシステムディストリビューションがあります。

  • テンプレート、ルートファイルシステム(ベース)CBLマリナーズで説明されているように@pankiの返信)これはWSL自体によって提供されます。次に、対応するルートファイルシステムを使用して作成します。

  • システム展開(名前空間コンテナ)他の実行中のユーザーディストリビューション(Ubuntu、Alpine、Kali、Archなど)このシステムディストリビューションは、Wayland(RDP / RAILSを含む)、Xwayland、Weston、およびPulseAudioが実行されている場所です。その後、これらのサービスのソケットは起動時にマウントされ、バインドマウントおよび/またはユーザー展開にシンボリックリンクされます(これらの技術は時間の経過とともに変化します)。このシステムリリースには、ユーザーリリースと同じライフサイクルがあります。

デフォルトのWSLインストールでは、Ubuntu(現在20.04)をディストリビューションとして使用します。この場合、WSL / Ubuntuを起動すると、そのシステム展開が開始され、サービスが開始され、システム展開でUbuntuへのシンボリックリンク/再マウントが作成されます。このアーキテクチャは、WSL上で動作するすべてのLinuxディストリビューションに共通です。ただし、一部のディストリビューション(GNU Guix ;-))は「標準」から離れすぎる可能性があり、WSLgを使用してGUIアプリケーションを実行するには追加の作業が必要になる場合があります。

/mnt/wslg基本的なインストールは次のとおりです/dev/sda。 X11ソケットを含むディレクトリは/tmp/.X11(現在)読み取り専用であり、バインドマウントされたバックです/mnt/wslg/.X11-unix

このアーキテクチャのすべてのコーナーを完全に探索するわけではありませんが、WaylandとPulseAudioに対して同様のバインドマウントまたはシンボリックリンクが作成されました。

したがって、WSLを起動するときに単独で起動できます。

wsl --system

すぐそこにデフォルトのユーザーが表示されますwslg。ただし、アクセスすることもできますwsl --system -u root

から起動することもでき、デフォルトの展開も開始するwsl --systemことを確認できます。wsl -l -v

「リリース別」システムリリースは、WSLリリースが開始されるたびに「要求時に」生成されるため、一時的です。ユーザーの配布が停止するとwsl --system(または)で行った変更は失われます。wsl --system -d <user_distro_name>

変更を永続的に適用するには:独自のシステムディストリビューションを構築GithubでWSLgリポジトリを使用し、WSLgで使用するリポジトリをファイルに置き換えます.wslconfig。正直に言うと、WSLgがリリースされてから約2年間、Microsoft以外の誰もこの作業の必要性を発見したかどうかはわかりませんが、確かに興味深い機能です。少なくとも、Microsoftが変更するのを待たずに、Westonなどのコンポーネントをアップグレード(またはロールバック)できます。

関連情報