WSL2 Ubuntu20.04 を WSL1 に戻すには地道な方法しかなかった

## 概要
WSL1 の Ubuntu 20.04 を移行してみたが、次の点で問題があったのでもとに戻した。

* VS-Code の Paste Image が使えない  
  WSL上の README.md に画像貼り付けできない。Windowsのクリップボードにある画像をLinux上のクリップボードに変換できない。

## 結果
地道な方法しかなかった。
なので、WSL2に移行するときは、 export して新規作成した環境で試してからが良いと思います。

* 失敗 ... WSL2のイメージをexportしてWSL1としてimportする  
  → importは成功したが起動できず
* 成功 ... WSL2内のファイルをバックアップして、WSL2のイメージを消す、WSL1のイメージを再作成して、ファイルやパッケージ類を復元する

## 手順: WSL2に移行するときにexportしておかなかった場合
参考程度です。
失敗した手順からの復旧をしたので、実際には試せていません。

1. WSLを開いている Terminal, VS-Code などのエディタ、Explorer などを閉じる
1. `wsl --export Ubuntu-20.04 ./Ubuntu.tar` する
1. `wsl --import Ubuntu-20.04-WSL2 .\Ubuntu-20.04-WSL2 Ubuntu.tar --version 2`
1. WSL1 で `Ubuntu-20.04` を入れ直す
1. `Ubuntu-20.04-WSL2` からファイルをtarで固めるなりして移行する

## 参考: 失敗した手順

1. 状態を確認する

    ```
    PS C:\wsl_migration> wsl -l --verbose
      NAME            STATE           VERSION
    * Ubuntu-20.04    Running         2
    PS C:\wsl_migration> 
    ```

1. ターミナルやVS-Codeを閉じる
   閉じた後、`Stopped` になっていることを確認する

    ```
    PS C:\wsl_migration> wsl -l --verbose
      NAME            STATE           VERSION
    * Ubuntu-20.04    Stopped         2
    PS C:\wsl_migration>
    ```

1. exportを行う

    ```
    PS C:\wsl_migration> wsl --export Ubuntu-20.04 ./Ubuntu.tar
      NAME            STATE           VERSION
    * Ubuntu-20.04    Stopped         2
    PS C:\wsl_migration>
    ```


1. Distribution を登録解除する

    ```
    PS C:\wsl_migration> wsl --unregister Ubuntu-20.04
    登録を解除しています...
    PS C:\wsl_migration> wsl -l --verbose
    Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。
    ディストリビューションは Microsoft Store にアクセスしてインストー 
   ルすることができます:
    https://aka.ms/wslstore
    PS C:\wsl_migration>
    ```

1. 管理者で PowerShell を起動し、WSLのデフォルトのバージョン指定を 1 にする

    ```
    PS C:\WINDOWS\system32> wsl --set-default-version 1
    PS C:\WINDOWS\system32>
    ```

1. Ubuntu-20.04 を再度導入する
   Windowsメニューにリンクがあればそれをクリックしてもよいし、Storeから導入してもよい。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326797/3b04adcd-af46-00f2-69ec-f43ff21c6109.png)

    **導入中**

    ```
    PS C:\wsl_migration> wsl -l --verbose
      NAME            STATE           VERSION
      Ubuntu-20.04    Installing      1
    PS C:\wsl_migration>
    ```

    **導入完了**

    ```
    PS C:\wsl_migration> wsl -l --verbose
      NAME            STATE           VERSION
    * Ubuntu-20.04    Running         1
    PS C:\wsl_migration>
    ```

1. Import する
   `wsl --import <被らないNAME> <LocalState(rootfsとか)の展開先> <exportしたtarファイルのパス> --version 1` みたいな形式。

    ```
    PS C:\wsl_migration> wsl --import Ubuntu-20.04-WSL1 C:\Users\RoboDev\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows Ubuntu.tar --version 1
    PS C:\wsl_migration> wsl -l --verbose
      NAME                 STATE           VERSION
    * Ubuntu-20.04-WSL1    Stopped         1
    PS C:\wsl_migration>
    ```

1. 起動する
   次のコマンドやWindows Terminal などで起動する。失敗した。失敗した。失敗した。

    ```
    PS C:\wsl_migration> wsl -d Ubuntu-20.04-WSL1
    サーバーの実行に失敗しました
    PS C:\wsl_migration>
    ```

1. 管理者で PowerShell を起動し、復旧する
   `wsl -l --verbose` コマンドが固まるし、 unregister もエラー終了するので復旧する。

    ```
    PS C:\WINDOWS\system32> Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    ```

    再起動を要求されたので、再起動後に次のコマンドを実行する。

    ```
    PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    ```

    アプリと機能でUbuntuとかが残っているなら消しておく

    ```
    PS C:\WINDOWS\system32> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    ```

    `wsl --unregister Ubuntu-20.04-WSL1` とかで消しておく。


## 参考

* [Easily move WSL distributions between Windows 10 machines with import and export! - Scott Hanselman](https://www.hanselman.com/blog/EasilyMoveWSLDistributionsBetweenWindows10MachinesWithImportAndExport.aspx)
* [WSL 上で同一ディストリビューションの環境を複数インストール･管理する - Qiita](https://qiita.com/souyakuchan/items/9f95043cf9c4eda2e1cc)