Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

WSL2(Ubuntu)を起動しようとしたら「0x80070050」と怒られる

WSL2(Ubuntu20.04LTS)を起動しようとしたら「0x80070050」エラー

2022/04/13 追記

どうも、Ubuntuのディストリビュージョン名が変わってしまうことが原因のようですね。
以前は「Ubuntu20.04LTS」でしたが「Ubuntu-20.04」になっている様子です。
緊急対応として、レジストリ修正で名前を変更し解決する方法が公開されています。
20.04 - WSL not working after update from Microsoft store - Ask Ubuntu
※まこみな さん。情報感謝です!

ですが、今後updateする度に新しい名前になる可能性もあり、さっさとスナップショットを作成して復活させる方が健全な気がしております。

解決の記録

エラー「0x80070050」となりWSL2が起動しなくなった時の解決方法。
結論から書きますと・・・

スナップショットを取ってないと復活できない可能性大!です。

突然「0x80070050」エラー

機嫌よく起動していたUbuntu20.04が起動しなくなり途方に暮れました。
スナップショットを取っていない場合、今まで起動していたバーチャルマシンそのものが死んでいるような状況になるため、どうしようもありません。。。
※復活できる方法をご存じの方は是非教えてください。。。orz

念のためWSLのUbuntuをアンインストール

怖かったので、「プログラムの追加と削除」からUbuntuをアンインストールしました。

Ubuntuを再インストール

アンインストール後、Microsoft StoreからUbuntu20.04を再インストール。

管理者権限でPowershellを起動

管理者権限でPowerShellを起動します。
以降、バーチャルマシンへのあれこれは、PowerShell上で行います。

バーチャルマシンを確認

環境が壊れる前に作っていた仮想マシンが生きている模様。
これはもしかしたら、私だけのラッキーなのかもしれない。。。
「Ubuntu20.04LTS_sk1」が、壊れる前にとっておいたスナップショット。

> wsl -l -v
  NAME                  STATE           VERSION
* Ubuntu20.04LTS_sk1    Stopped         2
  Ubuntu-20.04          Stopped         2

バーチャルマシンを起動

ユーザーを指定して、バーチャルマシンを起動してみる。
ユーザー名を指定しない場合、rootでの起動となる。(--user k を入力しなければroot)

「ファイル名を指定して実行」を開く

Windows11メニューからインストールしたUbuntuを開けば良いのかと思ったらどうも違うらしい。
「ファイル名を指定して実行」からwslコマンドを叩く

# 右記の通り短縮可能。 --distribution → -d  --user → -u
> wsl --distribution Ubuntu20.04LTS_sk1 --user k

もしスナップショットの仮想マシンが表示されなかったら(もしくは起動しなかったら)・・・

Ubuntuを再インストールしたとき、スナップショットの仮想マシンが表示されなかったら・・・
または、壊れてしまっていたら・・・

大丈夫!
スナップショットから仮想マシンを作成し、仮想マシンを起動すれば復活できるはずです。

仮想マシンの復活

# 例)仮想マシンの削除
> wsl --unregister Ubuntu20.04LTS_sk1

# スナップショットから仮想マシンを作成
# 左から → 仮想環境名、仮想環境ファイル置き場、スナップショット名
> wsl --import Ubuntu20.04LTS_sk1 C:\wsl_vhdx\Ubuntu20.04LTS_sk1 C:\wsl_snapshot\ubuntu20210629.tar

スナップショットの起動

「ファイル名を指定して実行」を開く

Windows11メニューからインストールしたUbuntuを開けば良いのかと思ったらどうも違うらしい。
「ファイル名を指定して実行」からwslコマンドを叩く

# 右記の通り短縮可能。 --distribution → -d  --user → -u
> wsl --distribution Ubuntu20.04LTS_sk1 --user k

デフォルトのバーチャルマシンを指定しておく

wslコマンドで起動するディストリビュージョンをあらかじめ設定しておく

> wsl -s Ubuntu20.04LTS_sk1