0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

原因不明で突然WLSのUbuntuが消えたので

Posted at

今朝、外付けドライブに保存されていたWLSのUbuntu22.04を使おうとしたら、Ubuntuが22.04が無いと、エラーが出ました。
消えたファイルを復元するソフトをインストールしていたので試したのですが、0バイトで仮想ディスクのイメージが壊れているようです。

ext4.vhdxのファイル名のファイルのサイズが、0バイトになっていました。

wsl --list --verbose

このコマンドで、WLSのUbuntuの一覧が表示されました。
消えたUbuntuのバージョンも、一覧にありました。

そのため、まずWLSの一覧から問題のUbuntuのバージョンを削除しました。

下記のコマンドで、WLSの物理ドライブの場所が分かります。

Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\*" | Select-Object DistributionName, BasePath

WLSのディストリビューションを指定して、削除する方法

wsl --unregister <ディストリビューション名>

wsl --unregister Ubuntu-22.04

このコマンドを実行すると、該当する WSL インスタンスが 完全に削除 され、データも消去されます。削除後に再インストールしたい場合は、以下のようにすればOKです。

wsl --install -d Ubuntu-22.04

今回は、外付けのDドライブにディストリビューションを保存していたので、この方法で復旧しました。

このURLで、Ubuntu22.04を直接ダウンロードできます。

https://cloud-images.ubuntu.com/wsl/jammy/current/ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz

サイズ:約325MB

内容:Ubuntu 22.04 LTS(amd64)向けの WSL用ルートファイルシステム

用途:wsl --import コマンドで新しいWSL環境として展開可能

上記のURLからダウンロードしたあと、こちらのコマンドを実行してください。

wsl --import Ubuntu-22.04 D:\wsl\Ubuntu-22.04 C:\Users\ユーザー名\Downloads\ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz --version 2

初回起動

wsl -d Ubuntu-22.04

ユーザーを追加

adduser 追加するユーザー名
usermod -aG sudo 追加したユーザー名

ディフォルトのユーザーとして設定します

1.ルートでUbuntu22.04を起動します。

wsl -d Ubuntu-22.04 --user root

2./etc/wsl.conf を新規作成(存在しないはず)

nano /etc/wsl.conf

3.以下の内容を貼り付けて保存:

[user]
default=追加したユーザー名

4.保存後、WSLを一度終了

exit

5.Windows PowerShellでWSLを終了

wsl --shutdown

6.再度起動

wsl -d Ubuntu-22.04

これでrootユーザーではなく、追加したユーザーでログインしてUbutuを利用できます。

今回の出来事を教訓に、一日一回OneDriveに、バックアップを作るように、バッチファイルを作り、タスクマネージャーに登録しました。

まず手動のコード

wsl --export Ubuntu-22.04 "$env:USERPROFILE\OneDrive\WSL_Backups\Ubuntu-22.04_$(Get-Date -Format yyyyMMdd).tar"

Ubuntu-22.04:バックアップ対象のWSL名

OneDrive\WSL_Backups:OneDrive配下の保存フォルダ(なければ作成してください)

$(Get-Date -Format yyyyMMdd):日付付きのファイル名にして世代管理可能

自動化する方法(タスクスケジューラ)

🔧 手順(1回だけ設定すればOK)

  1. バッチファイルを作る(例:backup_wsl.bat)
    メモ帳などで以下の内容を保存:
@echo off
set BACKUP_DIR=%UserProfile%\OneDrive\WSL_Backups
set DATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
wsl --export Ubuntu-22.04 "%BACKUP_DIR%\Ubuntu-22.04_%DATE%.tar"

backup_wsl.bat という名前で保存(例:C:\Scripts\backup_wsl.bat)

  1. タスクスケジューラで自動実行
    「スタートメニュー」→ タスクスケジューラ を起動

右側「基本タスクの作成」

名前:WSL Backup to OneDrive

トリガー:毎日(任意の時刻に設定)

操作:プログラムの開始

プログラム:cmd.exe

引数:

/c "C:\Scripts\backup_wsl.bat"

復元するときのコマンド

wsl --import Ubuntu-22.04-Restore D:\wsl\Ubuntu-22.04-Restore "C:\Users\ユーザー名\OneDrive\WSL_Backups\Ubuntu-22.04_20250419.tar" --version 2

今回の直接下記のURLからWLSのディストリビューションをダウンロードして、外付けドライブで復旧する手順をChatGPTに教えてもらうことができました。

https://cloud-images.ubuntu.com/wsl/

Microsoftのストアを通さずに、直接WLSの復元をする方法は、便利だと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?