巷で聞く「何もしていないのに動かなくなった」に遭遇したため、どう対処したか忘備録として残します。
環境
OS:Windows 11 Enterprise
バージョン:23H2
WSL2:2.3.*
事象
スリープモードにして席を離脱
→ 戻ってログイン
→ 立ち上げていたアプリが何故かすべて閉じられている
→ docker再起動
→ WSLが起動していませんエラー
→ ターミナルでUbuntuに入ってみる
→ エラーコード:0x80070002
対処法
とりあえずGoogle検索で出てくる対処法をあらかた試したけど動かない…
ひたすらに情報を探していたところ、こんな投稿を発見。
救世主でした。
以下のコマンド操作はすべて「PowerShell 管理者権限」で実行しています
1. wsl --set-default-version 1
wslのバージョンを1に下げる
2. wsl --install
or wsl
(筆者は一度Ubuntuをアンインストールしたため、ここで再インストールしています)
wsl --install
でディストリビューション(Ubuntu)をインストール
or
wsl
で再起動
→ WSL2だとここで落ちた
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でエラー落ちします。
どちらを選べばいいかは、
[設定 > システム > バージョン情報 > デバイスの仕様 > システムの種類]
から確認できます。
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. wsl
無事起動
PS C:\Program Files\WSL> wsl
username@LAPTOP-***:/mnt/c/Program Files/WSL$
原因
相変わらず不明