WSL2が唐突に起動しなくなったため、どう対処したか忘備録として残します。
環境
OS:Windows 11 Enterprise
バージョン:23H2
WSL2:2.3.*
事象
スリープモードにして席を離脱
→ 戻ってログイン
→ 立ち上げていたアプリが何故かすべて閉じられている
→ docker再起動
→ WSLが起動していませんエラー
→ ターミナルでUbuntuに入ってみる
→ エラーコード:0x80070002
対処法
とりあえずGoogle検索で出てくる対処法をあらかた試したけど動かない…
ひたすらに情報を探していたところ、こんな投稿を発見。
救世主でした。
以下の手順は「PowerShell 管理者権限」で実行しています
1. wslのバージョンを1に下げる
wsl --set-default-version 1
2. 再起動
# 再起動 → WSL2だとここでエラー落ちしました
wsl
※ ディストリビューションをアンインストールした場合は以下を実行
# 筆者は一度Ubuntuをアンインストールしたため、ここで再インストールしました
wsl --install
3. WSLとディストリビューションのバージョンを2に戻す
PS C:\Program Files\WSL> wsl --set-default-version 2
WSL 2 との主な違いについては、https://aka.ms/wsl2
を参照してください
この操作を正しく終了しました。
PS C:\Program Files\WSL> wsl --set-version Ubuntu 2
...
ディスク 'C:\Program Files\WSL\system.vhd' を WSL2 にアタッチできませんでした: 指定されたファイルが見つかりません。
Error code: Wsl/Service/CreateInstance/CreateVm/MountVhd/HCS/ERROR_FILE_NOT_FOUND
新たなエラーに遭遇
4. https://github.com/microsoft/WSL からmsiをダウンロード
https://github.com/microsoft/WSL から任意のバージョンを選択し、msiをダウンロード
wslのバージョンは合わせたほうがいいかも?
(バージョンはwsl --version
で確認できます)
msiはarm64版とx64版があります。
ここを間違えてダウンロードすると以降の手順.7でエラー落ちします。
どちらを選べばいいかは、コマンドプロンプトで以下を実行して確認できます。
# AMD64 -> x64版
# ARM64 -> arm64版
C:\Users\username>echo %PROCESSOR_ARCHITECTURE%
AMD64
5. インストーラ実行
msiexec /a c:\Users\username\Downloads\wsl.2.3.26.0.x64.msi /qb TARGETDIR=c:\任意の場所
6. C:\Program File\WSL
に System.vhd
を配置
Copy-Item 5のTARGETDIR\PFiles64\WSL\system.vhd -Destination 'C:\Program Files\WSL\'
7. 再度ディストリビューションのバージョン設定
wsl --set-version Ubuntu 2
8. 再起動
無事起動しました
PS C:\Program Files\WSL> wsl
username@LAPTOP-***:/mnt/c/Program Files/WSL$
原因
相変わらず不明