概要
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しておかなかった場合
参考程度です。
失敗した手順からの復旧をしたので、実際には試せていません。
- WSLを開いている Terminal, VS-Code などのエディタ、Explorer などを閉じる
-
wsl --export Ubuntu-20.04 ./Ubuntu.tar
する wsl --import Ubuntu-20.04-WSL2 .\Ubuntu-20.04-WSL2 Ubuntu.tar --version 2
- WSL1 で
Ubuntu-20.04
を入れ直す -
Ubuntu-20.04-WSL2
からファイルをtarで固めるなりして移行する
参考: 失敗した手順
-
状態を確認する
PS C:\wsl_migration> wsl -l --verbose NAME STATE VERSION * Ubuntu-20.04 Running 2 PS C:\wsl_migration>
-
ターミナルやVS-Codeを閉じる
閉じた後、Stopped
になっていることを確認するPS C:\wsl_migration> wsl -l --verbose NAME STATE VERSION * Ubuntu-20.04 Stopped 2 PS C:\wsl_migration>
-
exportを行う
PS C:\wsl_migration> wsl --export Ubuntu-20.04 ./Ubuntu.tar NAME STATE VERSION * Ubuntu-20.04 Stopped 2 PS C:\wsl_migration>
-
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>
-
管理者で PowerShell を起動し、WSLのデフォルトのバージョン指定を 1 にする
PS C:\WINDOWS\system32> wsl --set-default-version 1 PS C:\WINDOWS\system32>
-
Ubuntu-20.04 を再度導入する
Windowsメニューにリンクがあればそれをクリックしてもよいし、Storeから導入してもよい。
導入中
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>
-
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>
-
起動する
次のコマンドやWindows Terminal などで起動する。失敗した。失敗した。失敗した。PS C:\wsl_migration> wsl -d Ubuntu-20.04-WSL1 サーバーの実行に失敗しました PS C:\wsl_migration>
-
管理者で 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
とかで消しておく。