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
で表示してください。
公式に配布しているものを探す
- Alpine Linux... https://alpinelinux.org/downloads/ で「Minimal root filesystem」をダウンロードできます。
- Ubuntu... https://cloud-images.ubuntu.com/releases/ からバージョンを指定してたどっていくと、たとえば ubuntu-20.04-server-cloudimg-amd64-wsl.rootfs.tar.gz のようなものがダウンロードできます。
- CentOS 8... https://cloud.centos.org/centos/8/ からたどっていくと、CentOS-8-Container-8.1.1911-20200113.3-layer.x86_64.tar.xz がダウンロードできます。(ただし .xz ファイルは後でインポートするときに困るので、どうにか伸長して .tar 形式にしておいてください。)
コミュニティ有志が再配布しているものを探す
記事先頭で触れた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
にリネームして、好きなところに置く