グチャグチャになった「Ubuntu on WSL2」のやり直し方

# 「Ubuntu on WSL2」のやり直し方
人生のやり直し…もとい…
グチャグチャに遊びこんだ「WSL2用`Ubuntu`」を**最初からやり直したくなりました…**

インストールした「`Ubuntu`」を**リセット**することにより、アンインストールせずに簡単にやり直すことができます。以下、**手順**をまとめておきます。
<img width=600 src='https://user-images.githubusercontent.com/69660581/123802488-52702d00-d926-11eb-87f4-ed428aa04267.png'>

## ➊ Ubuntuのリセット方法

- [`スタート`] → [`設定`] → [`アプリ`]にて、「`アプリと機能`」へ移動。
- 検索窓から「`Ubuntu`」を検索。 
- 「`Ubuntuアプリ`」が見つかったら、それの「`詳細オプション`」をクリック。 
![](https://user-images.githubusercontent.com/69660581/123720952-3a65c280-d8c0-11eb-8946-d7834a004841.png)

- リセットセクションの「`リセット`」ボタンをクリックする。

これできれいサッパリ`Ubuntu`がクリアされます。
![](https://user-images.githubusercontent.com/69660581/123720954-3b96ef80-d8c0-11eb-9443-12753feb6c25.png)

## ➋ Ubuntu新規作成方法

- windowsの検索窓から、「`ubuntu`」を検索する。
![](https://user-images.githubusercontent.com/69660581/123721060-6bde8e00-d8c0-11eb-9243-f221f60b4cbf.png)

- 「`Ubuntu`」アプリをクリック

これで最初からやり直すことができます。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405376/631d3b5e-2bcf-dbe1-ff64-f104076525d3.png)

- 一応ではありますが、「`PowerShell`」からも「`Ubuntu`」が起動されていることを確認しておきましょう。

``` powershell:powershell
PS C:\Users\user1> wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop-data    Stopped         2
  docker-desktop         Stopped         2
  Ubuntu                 Running         2
```

- 必須ではありませんが、デフォルトのディストリビューションが「`docker-desktop-data`」となっていたので、「`Ubuntu`」へ変更しておきます。

> コマンドは以下の様式です。
> wsl --set-default \<仮想環境名>

``` powershell:powershell
PS C:\Users\user1> wsl --set-default Ubuntu
PS C:\Users\user1> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
```

ここまでで、**「Ubuntu on WSL2」のやり直し**は、終了です。
以降は、**リセット**をしないで良いような環境作りについてです。


## ➌ グチャグチャになってもいいように対処しておく
毎回ゼロからスタートするのは大変なので、ある程度「環境構築でけた！」というタイミングで`スナップショット`を取っておくのをお勧めします。

![wsl2](https://user-images.githubusercontent.com/69660581/123742876-5d579d00-d8e7-11eb-90e0-70caff6f8502.png)

### (1) スナップショット（export）
グチャグチャになる前にスナップショットを取っておけば、何度でも同じ状態を作り上げることができます。
> wsl --export <仮想環境名> <スナップショット名>

#### ■スナップショット置き場作成
スナップショット置き場を作成します。ここでは「%USERPROFILE%」配下の「`wsl_snapshot`」としておきます。

``` powershell:powershell
PS C:\Users\user1> mkdir wsl_snapshot
```

#### ■スナップショット作成
スナップショットを取りたい`仮想環境名`と`スナップショット名`を指定して、スナップショットを作成します。

``` powershell:powershell
PS C:\Users\user1> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
PS C:\Users\user1> wsl --export Ubuntu wsl_snapshot/ubuntu_20210629.tar
```

### (2) 仮想環境作成（import）
スナップショットから仮想環境を作成します。
> wsl --import <仮想環境名> <仮想環境ファイル置き場> <スナップショット名>

#### ■仮想環境ファイルの置き場作成
仮想環境ファイル(.vhdx)の置き場を作成します。ここでは「%USERPROFILE%」配下の「`wsl_vhdx`」としておきます。

``` powershell:powershell
PS C:\Users\user1> mkdir wsl_vhdx
```

#### ■仮想環境作成①
`仮想環境名`、`仮想環境ファイル置き場`、`スナップショット名`を指定して、仮想環境を作成します。

``` powershell:powershell
PS C:\Users\user1> wsl --import ubuntu001 wsl_vhdx/ubuntu001 wsl_snapshot/ubuntu_20210629.tar
PS C:\Users\user1> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  ubuntu001              Stopped         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
```

#### ■仮想環境作成②
こんな感じで同じスナップショット(`ubuntu_20210629.tar`)から、同じ環境を複数作成することができます。

``` powershell:powershell
PS C:\Users\user1> wsl --import ubuntu002 wsl_vhdx/ubuntu002 wsl_snapshot/ubuntu_20210629.tar
PS C:\Users\user1> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  ubuntu001              Stopped         2
  ubuntu002              Stopped         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
```

### (3) 仮想環境起動（distribution ）
仮想環境を起動します。
> wsl --distribution <仮想環境名>

#### ■rootで起動
`仮想環境名`を指定して起動します。

``` powershell:powershell
PS C:\Users\user1> wsl --distribution ubuntu001
```

#### ■user(popcorn)を指定して起動
`仮想環境名`＋`既存ユーザ名`を指定して起動します。
※「`popcorn`」ユーザがいない場合は、「ユーザーが見つかりません。」となり起動できません。

``` powershell:powershell
PS C:\Users\user1> wsl --distribution ubuntu001 --user popcorn
```

#### ■「`Windows Terminal`」からの起動
「`Windows Terminal`」を使用している場合は、アプリを再起動すると自動的に起動メニューに「`ubuntu001`」、「`ubuntu002`」が表示されます。そのまま仮想環境名を選択し起動すれば、「`root`」での起動となります。
![](https://user-images.githubusercontent.com/69660581/123738997-ddc6cf80-d8e0-11eb-868f-031fe1d70a66.png)

なお、「`Windows Terminal`」からuser(`popcorn`)を指定して起動したい場合は、[`設定`]→[`ubuntu001`]→[`コマンドライン`]の箇所を「wsl.exe -d ubuntu001 `--user popcorn`」としてあげればOKです。「ディレクトリの開始」も合わせて修正しておくと良いと思います。
![](https://user-images.githubusercontent.com/69660581/123739748-1fa44580-d8e2-11eb-8e2b-09a1942f9280.png)

### (4) 仮想環境削除（unregister）
仮想環境を削除します。
> wsl --unregister <仮想環境名>

#### ■仮想環境削除
不要な仮想環境は、`仮想環境名`を指定して削除します。

``` powershell:powershell
PS C:\Users\user1> wsl --unregister ubuntu001
登録を解除しています...
PS C:\Users\user1> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  ubuntu002              Stopped         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2
```
仮想環境「`ubuntu001`」が削除できました。
また、「%USERPROFILE%/wsl_vhdx/`ubuntu001`」を参照すると仮想環境ファイルもキレイさっぱり削除されていることが分かります。

# 以上
こんな様に人生も「綺麗サッパリ」簡単にやり直すことができたら、どんなに素晴らしいでしょう😔…

お疲れ様でした😊