WSL2とUbuntuのオフラインインストール(Windows11)

オフライン端末にWSL2+Ubuntuをインストールしたが、はまった部分もあったので備忘録として残す。

オンライン端末での作業

インストーラーの準備

以下のページからWSL2の最新版インストーラー(.x64.msi)をダウンロードする。 github.com

以下のページからを使用したいUbuntu(.AppxBundle)をダウンロードする。 learn.microsoft.com

ダウンロードしたインストーラーをオフライン端末に移動する。

オフライン端末での作業

WSL2のインストール

まずWSL2を有効化する。 管理者権限で以下を実施。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

PCの再起動を行う。

事前にダウンロードしたWSL2のインストーラーを実行し、インストールする。
インストール後に以下を実行して、デフォルトのWSLのバージョンを2に設定。

wsl --set-default-version 2

Ubuntuのインストール

事前にダウンロードしたUbuntuインストーラーを実行する。
この時、普通にAppxBundleファイルをGUIからインストールすると、そのあとの起動がうまくいかないという現象が発生した。
事象としてはこちらと同様っぽい。
Can't get WSL Linux distros (e.g. Ubuntu) to launch on offline Windows 11 pc - Super User

この場合以下の回避策が見つかった。
https://bwgjoseph.com/a-better-way-to-install-windows-app-bundle-file-in-offline-machine
AppxBundleファイルの中からappxファイルを取り出し、さらにそのappxファイルの中からUbuntuインストーラー(ubuntu.exe)を取り出し、そのインストーラーを実行することで、インストールできるというもの。
AppxBundleやappxは拡張子こそ違うものの、実態としてはzip形式のようなので、拡張子を.zipにリネームすれば普通に展開できるようだ。
細かい手順としては、

  1. .AppxBundleを.zipに名称変更
  2. .zipを展開
  3. 展開後のフォルダに.appxがあるので.zipに名称変更
  4. .zipを展開
  5. 展開後のフォルダにubuntu.exeが存在するのでそれを実行。

注意点として、手順5で作成されるubuntu.exeが存在するフォルダの中身は、初回以降もUbuntuの起動に必要なので、削除してはならない。

インストール自体は以上で終わり。
これ以降はPowershell上からwslと実行すればUbuntuにログイン可能。