久しぶりに WSL2 でいろいろとしたいなと思っていたら、ちょうど WSL2 の Ubuntu の 24.04 が出ていたのに気がつきました。ということで、あれこれやり始める前に、バージョンを上げたので、その作業をメモっておきます。
参考にしたサイト
WSLのUbuntu 22.04 LTSを24.04にアップグレードする
準備
まずは、現状確認
mor@DESKTOP-DE7IL4F:~$ cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.5 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.5 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 mor@DESKTOP-DE7IL4F:~$
パッケージを最新にしておく
mor@DESKTOP-DE7IL4F:~$ sudo apt update (略) mor@DESKTOP-DE7IL4F:~$ sudo apt upgrade (略) mor@DESKTOP-DE7IL4F:~$ sudo apt autoremove
一度、Windows (コマンドプロンプト)からシャットダウンしておく。
C:\Users\mor>wsl --shutdown
アップグレード
アップグレードできるディストリビューションの確認
mor@DESKTOP-DE7IL4F:~$ sudo do-release-upgrade -c Checking for a new Ubuntu release New release '24.04.1 LTS' available. Run 'do-release-upgrade' to upgrade to it. mor@DESKTOP-DE7IL4F:~$
早速、アップグレードすると
mor@DESKTOP-DE7IL4F:~$ sudo do-release-upgrade Checking for a new Ubuntu release Please install all available updates for your release before upgrading. mor@DESKTOP-DE7IL4F:~$
あれ?保留のパッケージがあるので、アップグレードできないらしい。
保留パッケージの解消
まずは、再確認します。
mor@DESKTOP-DE7IL4F:~$ sudo apt upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 アップグレードパッケージを検出しています... 完了 以下のパッケージは保留されます: libgl1-amber-dri libgl1-mesa-dri libglapi-mesa libglx-mesa0 mesa-vulkan-drivers sosreport ubuntu-wsl アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 7 個。 mor@DESKTOP-DE7IL4F:~$
保留が7個ってあるね。どうしたものか調べてみます。下記記事によると apt install すればよいらしい。
Ubuntu 保留されたパッケージの対処方法 | 広目天合同会社
なので、やってみると、
mor@DESKTOP-DE7IL4F:~$ sudo apt install --reinstall libgl1-amber-dri libgl1-mesa-dri libglapi-mesa libglx-mesa0 mesa-vulkan-drivers sosreport ubuntu-wsl パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: (中略) /sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link libgtk-3-bin (3.24.33-1ubuntu2.2) を設定しています ... libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) のトリガを処理しています ... Scanning processes... Scanning processor microcode... Scanning linux images... Failed to retrieve available kernel versions. Failed to check for processor microcode upgrades. No services need to be restarted. No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host. mor@DESKTOP-DE7IL4F:~$
ん?最後に Failed のメッセージあるけど、アップグレードできたのか?
エラーメッセージの内容
メッセージがが気になるので調べてみると、 WSL2 の Ubuntu 22.04 の問題らしい。どうも needrestart というパッケージが出しているメッセージで、メッセージを抑えたければ、設定ファイルを書き直せばいいみたい。
- Ubuntu 22.04 on WSL で sudo apt update すると出るエラーを抑制する備忘録 | hyt adversaria
- windows subsystem for linux - Ubuntu 22.04 LTS on WSL: "Failed to retrieve available kernel versions"/"Failed to check for processor microcode upgrades" when installing packages - Ask Ubuntu
- Failed to retrieve available kernel versions - くたくたじゅうよん
needrestart パッケージをアンインストールしてもいいみたいだけど、今回はメッセージを無視するだけにします。
アップグレード再び
エラーメッセージに大きな影響がないようなので、保留パッケージがないことを念のため、確認してみると
mor@DESKTOP-DE7IL4F:~$ sudo apt list --upgradable
一覧表示... 完了
mor@DESKTOP-DE7IL4F:~$
大丈夫そう。こっちで表示しても、
mor@DESKTOP-DE7IL4F:~$ sudo apt upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 状態情報を読み取っています... 完了 アップグレードパッケージを検出しています... 完了 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 mor@DESKTOP-DE7IL4F:~$
保留はないね。一応、保留はなくなったみたい。
これで、もう一度やってみます。
mor@DESKTOP-DE7IL4F:~$ sudo do-release-upgrade Checking for a new Ubuntu release = Welcome to Ubuntu 24.04 LTS 'Noble Numbat' = (略) Continue [yN]
と聞かれるので、 y を入力します。
しばらく順調に進んでいるかとおもいきや
error: cannot list snaps: cannot communicate with server: Get "http://localhost/v2/snaps": dial unix /run/snapd.socket: connect: no such file or directory Traceback (most recent call last): File "/tmp/ubuntu-release-upgrader-t4hk374i/noble", line 8, in <module> sys.exit(main()) File "/tmp/ubuntu-release-upgrader-t4hk374i/DistUpgrade/DistUpgradeMain.py", line 241, in main if app.run(): File "/tmp/ubuntu-release-upgrader-t4hk374i/DistUpgrade/DistUpgradeController.py", line 2662, in run return self.fullUpgrade() File "/tmp/ubuntu-release-upgrader-t4hk374i/DistUpgrade/DistUpgradeController.py", line 2467, in fullUpgrade if not self.doPostInitialUpdate(): File "/tmp/ubuntu-release-upgrader-t4hk374i/DistUpgrade/DistUpgradeController.py", line 1438, in doPostInitialUpdate self.quirks.run("PostInitialUpdate") File "/tmp/ubuntu-release-upgrader-t4hk374i/DistUpgrade/DistUpgradeQuirks.py", line 102, in run func() File "/tmp/ubuntu-release-upgrader-t4hk374i/DistUpgrade/DistUpgradeQuirks.py", line 127, in noblePostInitialUpdate self._test_and_fail_on_tpm_fde() File "/tmp/ubuntu-release-upgrader-t4hk374i/DistUpgrade/DistUpgradeQuirks.py", line 1898, in _test_and_fail_on_tpm_fde snap_list = subprocess.check_output(['snap', 'list']) File "/usr/lib/python3.10/subprocess.py", line 421, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/lib/python3.10/subprocess.py", line 526, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['snap', 'list']' returned non-zero exit status 1. === Command terminated with exit status 1 (Wed Dec 11 12:42:13 2024) ===
とエラーが出ました。snap に関連するサーバー (snapd?) が動いていないとのこと。
snap のエラーへの対応
でも、そんなの動かしてないよなと思いつつ調べてみると、ちょうどの記事がありました。
WSL2 で Ubuntu 24.04 LTS へのアップグレードがなぜできない? – Ellinikonblue.com Reloaded
snapd を動かすためには systemd が必要で、systemd はいつのころからか WSL2 で動くようになっているようです。たぶん、ある時期より古いタイミングでインストールした WSL2 (Ubuntu) では動いてなかったんでしょうね。
で、 WSL2 の Ubuntu でも systemd を動かすことができるとのことです。
systemd を使用して WSL で Linux サービスを管理する | Microsoft Learn
なので、やってみます。
mor@DESKTOP-DE7IL4F:~$ cd /etc mor@DESKTOP-DE7IL4F:/etc$ sudo touch wsl.conf [sudo] mor のパスワード: mor@DESKTOP-DE7IL4F:/etc$ sudo vi wsl.conf mor@DESKTOP-DE7IL4F:/etc$ cat wsl.conf [boot] systemd=true mor@DESKTOP-DE7IL4F:/etc$
この設定ファイルを作ったのち、一度、 wsl を閉じます。 Windows のコマンドプロンプトから WSL をシャットダウンします。
C:\Users\mor>wsl --shutdown
この状態にしてから、 WSL2 を立ち上げればいいはずです。
3 度目の正直
ということで、もう一度 do-release-upgrade を実行します。順調に進んでいき、途中で
アップグレードを開始しますか? 1 個のインストール済みパッケージは Canonical によってサポートされなくなりました。ただしコミュニティからのサポートは受けることができます。 71 個のパッケージが削除されます。 177 個の新規パッケージがインストールされます。 790 個のパッケージがアップグレードされます。 合計 863 M をダウンロードする必要があります。 This download will take about 2 分 with a 40Mbit connection and about 23 分 with a 5Mbit connection. アップグレードの取得とインストールには数時間かかることがあります。ダウンロードが完了してしまうと、処理はキャンセルできません。 続行する[yN] 詳細 [d]
と聞かれるので、 y を入力します。またしばらく進むと、
サポートが中止された(あるいはリポジトリに存在しない)パッケージを削除しますか? 115 個のパッケージが削除されます。 パッケージの削除に数時間かかることがあります。 続行する[yN] 詳細 [d]d 削除: libflac8 (自動インストールされた) bolt fwupd-signed g++-11 gcc-12-base irqbalance isc-dhcp-client isc-dhcp-common libaio1 libappstream4 libarchive13t64 libatasmart4 libatk1.0-data libblas3 libblockdev-crypto2 libblockdev-crypto3 libblockdev-fs2 libblockdev-fs3 libblockdev-loop2 libblockdev-loop3 libblockdev-mdraid3 libblockdev-nvme3 libblockdev-part-err2 libblockdev-part2 libblockdev-part3 libblockdev-swap2 libblockdev-swap3 libblockdev-utils2 libblockdev-utils3 libblockdev2 libblockdev3 libboost-regex1.74.0 libbpf0 libbytesize-common libbytesize1 libc6-i386 libcbor0.8 libdns-export1110 libefiboot1t64 libefivar1t64 libfwupd2 libgcab-1.0-0 libgpgme11t64 libgudev-1.0-0 libgusb2 libicu70 libisc-export1105 libjcat1 libjson-glib-1.0-0 libjson-glib-1.0-common libldap-2.5-0 liblinear4 libllvm15t64 liblua5.3-0 liblua5.4-0 libmbim-glib4 libmbim-proxy libmbim-utils libmm-glib0 libmpdec3 libnetplan0 libnsl-dev libnsl2 libnss-nis libnss-nisplus libnvme1t64 libparted-fs-resize0t64 libpcre3 libperl5.34 libprocps8 libprotobuf-c1 libpython3.10 libpython3.10-dev libpython3.10-minimal libpython3.10-stdlib libqmi-glib5 libqmi-proxy libqmi-utils libqrtr-glib0 libsmbios-c2 libssh2-1t64 libstdc++-11-dev libtiff5 libtirpc-dev libtss2-mu0 libudisks2-0 libunistring2 libvolume-key1 lua-lpeg mime-support modemmanager nmap-common openjdk-11-jdk openjdk-11-jdk-headless openjdk-11-jre openjdk-11-jre-headless perl-modules-5.34 pkexec policykit-1 python3-jaraco.classes python3-jeepney python3-keyring python3-secretstorage python3.10 python3.10-dev python3.10-minimal sbsigntool secureboot-db tpm-udev ubuntu-advantage-tools udisks2 usb-modeswitch usb-modeswitch-data xbitmaps xterm を削除 続行する[yN] 詳細 [d]
とでてきます。Python3.10 がちょっと気になるんだけど、いろいろと確認するのもかったるいし、ここは問題出てきたらまた対応することにして、とりあえず、 y を入力します。
システムのアップグレードが完了しました。 Action required Exit all other instances of Ubuntu WSL before continuing. Unsaved progress may otherwise be lost. 続けるには [ENTER] キーを押してください
enter を押すと、再起動しろ、という旨のメッセージが出ます。
WSL restart required Exit this instance of Ubuntu WSL. The upgrade will then be complete. 続けるには [ENTER] キーを押してください
となり、無事にディストリビューションのバージョンが上がったようです。
なお、 enter キー入力後、念のためコマンドプロンプトから、 wsl --shutdown も実行しておきました。
確認
上がってますね。
mor@DESKTOP-DE7IL4F:~$ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04.1 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.1 LTS (Noble Numbat)" VERSION_CODENAME=noble 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=noble LOGO=ubuntu-logo mor@DESKTOP-DE7IL4F:~$
まとめ
意外と手間取りましたが、無事に Ubuntu のバージョンを上げることができたようです。さて、本題のセットアップに移ろうかな。
2024/12/12 追記
python 3.10 パッケージのアンインストールのことに触れましたが、これは ubuntu 22.04 デフォルトの python のバージョンです。このため、 24.04 にしたら、 python 3.12.3 に切り替わりました。また、 python のバージョンは pyenv で管理しているのですが、こちらの system が指している python も正しく 3.12.3 を呼び出しています。
なので、問題ないですね。