WSLでwsl --list --onlineと実行した時に表示される、選択できるディストリビューションがどこに定義されているのか気になったので調べてみました。
PS > wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Ubuntu-24.04 Ubuntu 24.04 LTS
openSUSE-Tumbleweed openSUSE Tumbleweed
openSUSE-Leap-16.0 openSUSE Leap 16.0
SUSE-Linux-Enterprise-15-SP7 SUSE Linux Enterprise 15 SP7
SUSE-Linux-Enterprise-16.0 SUSE Linux Enterprise 16.0
kali-linux Kali Linux Rolling
Debian Debian GNU/Linux
AlmaLinux-8 AlmaLinux OS 8
AlmaLinux-9 AlmaLinux OS 9
AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10
AlmaLinux-10 AlmaLinux OS 10
archlinux Arch Linux
FedoraLinux-43 Fedora Linux 43
FedoraLinux-42 Fedora Linux 42
eLxr eLxr 12.12.0.0 GNU/Linux
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_10 Oracle Linux 8.10
OracleLinux_9_5 Oracle Linux 9.5
openSUSE-Leap-15.6 openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
こちらですね。
ざっくりこういう構造のようです。
{
"ModernDistributions": {
...
},
"Default": "Ubuntu",
"Distributions": [
...
]
}
多くはModernDistributionsに定義があり、通常使っているUbuntuディストリビューションはこちらのことだと思います。
"ModernDistributions": {
"Ubuntu": [
{
"Name": "Ubuntu",
"FriendlyName": "Ubuntu",
"Default": true,
"Amd64Url": {
"Url": "https://releases.ubuntu.com/24.04.3/ubuntu-24.04.3-wsl-amd64.wsl",
"Sha256": "c74833a55e525b1e99e1541509c566bb3e32bdb53bf27ea3347174364a57f47c"
},
"Arm64Url": {
"Url": "https://cdimages.ubuntu.com/releases/24.04.3/release/ubuntu-24.04.3-wsl-arm64.wsl",
"Sha256": "edaf375ea0d1319da08e7154e9bc64cd4eead5af21ea032f2edaa335fadf0970"
}
},
{
"Name": "Ubuntu-24.04",
"FriendlyName": "Ubuntu 24.04 LTS",
"Default": false,
"Amd64Url": {
"Url": "https://releases.ubuntu.com/24.04.3/ubuntu-24.04.3-wsl-amd64.wsl",
"Sha256": "c74833a55e525b1e99e1541509c566bb3e32bdb53bf27ea3347174364a57f47c"
},
"Arm64Url": {
"Url": "https://cdimages.ubuntu.com/releases/24.04.3/release/ubuntu-24.04.3-wsl-arm64.wsl",
"Sha256": "edaf375ea0d1319da08e7154e9bc64cd4eead5af21ea032f2edaa335fadf0970"
}
}
],
こう見るとUbuntuとUbuntu-24.04は完全に同じものを指していることがわかります。
なのですが、同じUbuntuという名前でDistributionsにもディストリビューションがあったりします。
しかもバージョンが古いです。
"Default": "Ubuntu",
"Distributions": [
{
"Name": "Ubuntu",
"FriendlyName": "Ubuntu",
"StoreAppId": "9PDXGNCFSCZV",
"Amd64": true,
"Arm64": true,
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/Ubuntu2204-220117.appx",
"Arm64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/Ubuntu2204-220117_ARM64.appx",
"PackageFamilyName": "CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc"
},
{
"Name": "Debian",
"FriendlyName": "Debian GNU/Linux",
"StoreAppId": "9MSVKQC78PK6",
"Amd64": true,
"Arm64": true,
"Amd64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/TheDebianProject.DebianGNULinux_1.12.2.0_neutral___76v4gfsz19hv4.AppxBundle",
"Arm64PackageUrl": "https://publicwsldistros.blob.core.windows.net/wsldistrostorage/TheDebianProject.DebianGNULinux_1.12.2.0_neutral___76v4gfsz19hv4.AppxBundle",
"PackageFamilyName": "TheDebianProject.DebianGNULinux_76v4gfsz19hv4"
},
余談ですが、StoreAppIdがあるようにこれらはMicrosoft Storeで確認できます。
これはどういうことかと思ってドキュメントを見ると、基本的にはModernDistributionsの方を使いそうです。
ではModernDistributionsのみが一覧に出ているのかというと、SUSE-Linux-Enterprise-15-SP6などはDistributionsにしかないので、ModernDistributions → Distributionsの優先度で表示されている気がしますね。
なんとなく押さえておきましょう。
確認環境。
PS > [System.Environment]::OSVersion
Platform ServicePack Version VersionString
-------- ----------- ------- -------------
Win32NT 10.0.26200.0 Microsoft Windows NT 10.0.26200.0
PS > $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 26100 7462
PS > wsl --version
WSL バージョン: 2.6.3.0
カーネル バージョン: 6.6.87.2-1
WSLg バージョン: 1.0.71
MSRDC バージョン: 1.2.6353
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26200.7623