WSL2の Ubuntu 20.04 を 22.04 へアップグレードしてみた

## はじめに

Ubuntu 22.04 Jammy Jellyfishがリリースされました。
自分はいつも業務PCのWSL2上でUbuntuを入れて作業をしています。
Ubuntuのバージョンは20.04で、直近までLTSだったものです。
色々と自分用にカスタマイズしているので、別バージョンを入れ直すのは面倒だなーと感じてましたが、簡単に直接アップグレードできるとの情報を聞いてやってみました。

##### 注意事項

環境によっては正常に動かないケースもあるかもなので、作業は自己責任でお願いします。

## 現行バージョン確認

アップグレード前に現状のUbuntuバージョンを見ておきます。
`VERSION="20.04.3 LTS (Focal Fossa)"` とあります。

```
❯ cat /etc/os-release                                                                                                

NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
```

## パッケージアップデート

インストールされているパッケージのアップデートを実施します。

```
❯ sudo apt update && sudo apt upgrade
（コマンド出力が多いので割愛）
```

ひたすらアップデートして２分くらいで終わりました。

#### 補足1

アップグレードするのに`dist-upgrade` と`update-manager-core`のパッケージが必要です。
自分の環境ではインストール済だったので作業無しですが、パッケージ入ってない人は下記を実行します。

```
sudo apt dist-upgrade && sudo apt install update-manager-core
```

#### 補足2

update-managerの設定を必要に応じて変更する必要があります。
WSLのUbuntuのデフォルトは下記のはずですが、`Prompt=lts`となっていない場合はテキストエディタで修正してください。

```
❯ sudo cat /etc/update-manager/release-upgrades

# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting and upgrade behavior, valid options:
#
#  never  - Never check for, or allow upgrading to, a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the supported release that immediately succeeds the
#           currently-running release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that if this option is used and
#           the currently-running release is not itself an LTS release the
#           upgrader will assume prompt was meant to be normal.
Prompt=lts
```

## アップグレード

ようやく（というほど作業してないが）、アップグレードの準備が完了しました。
下記コマンド実行でアップグレードされるので、早速実行します。

```
❯ sudo do-release-upgrade -d

Checking for a new Ubuntu release
You have not rebooted after updating a package which requires a reboot. Please reboot before upgrading.
```

あー、、、さっきパッケージアップデートした後にリブートしてないので怒られました。
wsl上のOSはrebootコマンドとかではリブートできないので、コマンドプロンプトやPowerShellから停止してやります。

↓このコマンドでWSL上のOS名を確認
```
（コマンドプロンプト or PowerShellから実行）
> wsl -l -v

  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  Legacy                 Stopped         1
  docker-desktop-data    Running         2
  docker-desktop         Running         2
```

↓ `-t` で停止。前述コマンドで確認した名称（ここでは`Ubuntu`）を引数にしている
```
（コマンドプロンプト or PowerShellから実行）
> wsl -t Ubuntu
```

再度Ubuntuを起動し、Ubuntuのプロンプトを表示します。
改めて先程実行できなかったコマンドを実行します。

```
❯ sudo do-release-upgrade -d
```

今度はアップグレードの処理が進みました。
しばらくすると下記の確認画面が出ました。

```
Do you want to start the upgrade?


1 installed package is no longer supported by Canonical. You can
still get support from the community.

5 packages are going to be removed. 148 new packages are going to be
installed. 756 packages are going to be upgraded.

You have to download a total of 499 M. This download will take about
2 minutes with your connection.

Installing the upgrade can take several hours. Once the download has
finished, the process cannot be canceled.

 Continue [yN]  Details [d]
```

アップグレードが開始したらキャンセルできなくなるよ、処理は数時間かかるかもよ、って言ってます。実行の最終確認ですね。
問題ないのでyで回答します。dで回答すると、インストール/アンイストール/アップグレードされるパッケージ情報が確認できました。

また、処理が進む中、下記のようにパッケージ処理に関する確認が表示されることがあります。
問題なければ`Yes`等の選択をして処理を進めます。

![pkgconfirm01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87961/e950cd47-5647-e651-4fd1-2b55433ee810.png)

最終的に処理が完了すると下記の表示が出て完了です。
自分の環境では13分かかりました。


```
System upgrade is complete.

Restart required

To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.

Continue [yN]
```

ちなみに、この問に対してy回答しても、WSLなのでちゃんとリブートできません。
表示が切り替わるので自動再起動したか？って思いがちですが、タブ補完が上手く動かない状態だったので、上述のwslコマンドから停止しましょう。

## アップグレード後のバージョン確認

アップグレード後のUbuntuバージョンを見てみましょう。
`VERSION="22.04 LTS (Jammy Jellyfish)"`となっているので成功ですね！

```
❯ cat /etc/os-release                                                                                                

PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
```

## さいごに

実はwindows機は２台あったので、事前に予習で１台アップグレードしてたのですが、少しインストールしたパッケージが異なっていたのか、アップグレード途中で聞かれる問いの状況が違っていました。（１台目は何も聞かれること無く完了した。）
oh-my-zsh入れてますが、zsh環境もそのまま動いており、今のところ問題となるような動作は出ていません。
みなさまの環境でアップグレードされる際の参考になれば幸いです。

### 参考にしたサイト等

https://zenn.dev/ryuu/articles/upgrade-ubuntu2204-wsl