ストアアプリではない方法でディストリビューションを導入


WSLでディストリビューションを導入するのに簡便な方法はストアアプリとしてインストールすることですが、デメリットは2つあります。

  • 同じ名前のディストリビューションを複数入れられない
  • ストアアプリの形で配布してないディストリビューションを入れられない

そこで今回の記事では「手で入れる」方法をまとめます。

最初は「ストア配布してないディストリビューションの導入に便利なツール wsldl」というタイトルで wsldl について書くつもりだったんですが、その後試してみたら、配布物のうちの1つであるLauncher.exeが、Windwos Defenderで弾かれるようになってました……仮に悪意のツールではないとしても、さすがに記事でお勧めしにくいので、方向転換しました。

目次

rootfsをダウンロードする

/ にマウントしたいファイル一式をtarに固めたもの(または、それをgzip圧縮したもの)を入手します。

方法はいくつかありますし、最悪自分で頑張って作ることもできるのですが、なるべく手軽な方法を書きます。

ディストリビューションのストアアプリから取り出す

公式ドキュメントの「ディストリビューションのダウンロード」のリンクをたどると、インストーラーパッケージである .appx ファイルを入手できます。 .appx ファイルは実はZIPなので、.zip に名前を変更するなどして展開することができます。

たとえば、Ubuntu 2004のインストーラーパッケージ (Ubuntu_2004.2020.424.0_x64.appx) の中には install.tar.gz というファイルがありました。

これが目的のファイルです。

インストール済みのディストリビューションのファイル一式をエクスポートする

既にインストールしたディストリビューションを複製したいときなどは、コマンドラインで

> wsl.exe --export <ディストリビューション名> <出力するtarファイル名>

とすると、tarファイルが得られます。ディストリビューション名がわからないときは wsl.exe -l で表示してください。

公式に配布しているものを探す

コミュニティ有志が再配布しているものを探す

記事先頭で触れたwsldlのサイトに行くと、wsldlのインストーラーをセットして再配布しているディストリビューションが見つかります。
これを使う場合はインストーラーもセットされているので、インストールと起動にはそっちを使えばいいという話ではありますが、ここはあえてrootfsだけ入手して、後の手順通りにやってみてください。

インポートする

あとでかく

wsl.exe --import <ディストリビューション名として付けたい名前> <WSLのファイルシステムの置き場にするディレクトリのパス> <tarファイルまたはtar.gzファイルのパス>

レジストリを修正する

あとでかく

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}

DWARD型の DefaultUid に値としてをLinux側のuidを設定(たとえば、10進数で1000/16進数だと3e8)

起動する

あとでかく

wsl.exe ~ -d <ディストリビューション名>

もしくは、wsldlで配布している launchaer.exe(Windows Defenderに弾かれた場合は例外指定をしないといけない) を <ディストリビューション名>.exe にリネームして、好きなところに置く