開発したアプリなど一覧

起動しなくなった WSL からデータ復旧を行った

記事内にアフィリエイトリンクを含む場合があります

昨日 WSL を起動しようとしたところ、以下のように「ファイルにアクセスできません。」と言われ利用できなかった。

> wsl -d ubuntu ファイルにアクセスできません。

何が原因なのかは不明だがとにかく起動しない。この直前に Windows の復元を行った影響だとは思うが、何故復元したら壊れるのか・・・

WSL が動かないだけなら WSL と ディストリビューションを再インストールすれば良いだけだ。しかし、WSL 外に保存していない各種データが消えると困る。

とはいえ、起動しないだけならデータは残っている可能性が高いため、データを復旧してみることにした。

WSL データのバックアップ

WSL2 のストレージは vhdx 形式の仮想ドライブに保存される。まずは仮想ドライブのバックアップを行おう。

Ubuntu であれば以下のようなパスに保存されている。

C:\Users\USER_NAME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_??????\LocalState

こんな感じで ext4.vhdx ファイルがあると思う。このファイルを別の場所にコピーしよう。

WSL の再インストール

WSL 関連のものを一度全てアンインストールし、再インストールしよう。

Windows の「設定」アプリから「アプリ」->「インストールされているアプリ」から「Ubuntu(もしくは利用しているディストリビューション)」と「Windows Subsystem for Linux」があればそれらをアンインストールし、Microsoft Store から再度インストールしよう。

もし再インストールしても動かないのであれば「Windows の機能の有効化または無効化」から「Linux 用 Windows サブシステム」のチェックを外し再起動し、再度チェックを入れて機能を有効にしなおしてみる。

WSL が再度実行できれば OK だ。

WSL で VHDX をマウントする

WSL が再度動くようになったら vhdx ファイルをマウントしよう。PowerShell から以下のコマンドを実行する。

> wsl --mount "path\to\ext4.vhdx" --vhd

もし「パラメーターが間違っています。」とかいわれる場合は「wsl --update」を実行して wsl をアップデートする。

マウントに成功すれば以下のように「ディスクは '/mnt/wsl/ext4vhdx' として正常にマウントされました。」と表示される。

マウントされたら WSL から元のファイル群にアクセスできる。

こんな感じ。これでバックアップを取れる。

余談だが WSL のフォルダはエクスプローラーで \\wsl$ と入力するとアクセスできる。

GUI のほうがよい場合はこちらを利用すると良い。

このように WSL2 では vhdx 形式でデータを管理しているため、他の環境からマウントする事もできる。便利だ。にしてもデータ消えなくてよかった。

Sponsored Link

コメント

  1. さとう より:

    ありがとうございました。
    データが助かりました!(^^)!

タイトルとURLをコピーしました