WSL2に切り替えたのを機にUbuntuもアップグレードしようかと思う。
WSL1→WSL2の切り替えについては以下を参照
WSL1 → WSL2の移行
WSLのLinuxディストリビューションについて
WSLでは導入するLinuxのディストリビューションを選択できるが、その中でいくつかの種類のUbuntuがあるが、違いについてよくわからなかったので調べてみた。
Ubuntuについて
Ubuntuは、基本的に新しい機能が頻繁に追加される一方、サポート期間が9ヶ月と比較的短いという特徴がある。そのため、常に最新の機能を使いたいというユーザーに向いているが、安定性に懸念がある。通常、4月と10月にリリースされる。
その対策として、LTS(長期サポート)版というのが存在し、2年ごとにリリースされ、5年間の長期サポートが提供される。安定性を重視し、長期にわたって同じ環境で運用したいユーザーに適している。ただし、LTS版は大きな機能追加は行われないが、セキュリティパッチやバグ修正などのアップデートは定期的に提供される。
LTS版は、2年おきにリリースされ、例えばUbuntu 16.04 LTS、Ubuntu 18.04 LTS などがある。
WSLにおけるUbuntu
WSLに導入できるUbuntuにはいくつか種類があり、大まかにはUbuntu(無印)とUbuntu-XX.04(XXは18,22…とか西暦下2桁が入る)の二通りになっている。
- Ubuntu(無印)
現行のUbuntu LTSであり、新しいバージョンが出るたびに更新される。
いつ導入するかで、どの中身が導入されるかが変わるようだ。 - Ubuntu-XX.04
明確にLTSのバージョンを指定したもの。
例えばUbuntu 16.04の場合、2021年までサポートされるらしい。
Ubuntu(無印)の方は、自分で最新のLTS版に更新をかけることができるらしい。
やり方は、通常のUbuntuのアップグレードと同じで後述。
では、Ubuntu(無印)はいつ切り替わり、アップグレードできるようになるかというと、最初のポイントリリースのタイミングらしい。
Ubuntu(無印)の中身が、Ubuntu 18.04の場合、Ubuntu 20.04.1のポイントリリースのタイミングで切り替わり、アップグレードが可能になるみたい。
※ポイントリリースは、LTS版のリリース後、数ヶ月ごとに提供されるアップデート済みのインストールメディア。これにより、新規インストール時やバージョンアップ時に、一度に多くのアップデートを適用する手間を省くことができる。Windowsのサービスパックに相当するもので、LTS版の最初のポイントリリースがリリースされるまでは、メジャーバージョンへの移行は控えることが推奨されている。
結局、特にこだわりなければUbuntu(無印)で良さそう。
自分でアップグレードかけなければ、メジャーバージョンは移行されないようだし。
その他
ちなみにWSL用に存在する中で選択できるディストリビューションは以下
※powershellから、wsl –list –onlineで確認できる。
> wsl --list --online
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
・・・
WSLに導入しているディストリビューションの確認は、wsl -l -vで確認
自分はUbuntu(無印)のみ導入している。
> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
Ubuntuのアップグレード
ということで、自分がWSL2にいれているUbuntu(無印)のアップグレードを行ってみる。
全体の流れは以下
・バージョンの確認
・パッケージアップデート
・Ubuntuのアップグレード
・確認
途中で気づいたのだが、現行のバージョンと最新のバージョンの間にLTS版が存在する場合、順番にバージョンを上げていく必要があるらしい。
なので、まずはUbuntu 18.04 → Ubuntu 20.04のアップグレードを行う。
バージョンの確認
現行のバージョンを確認。
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.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=bionic
UBUNTU_CODENAME=bionic
Ubuntu 18.04 LTS でだいぶ古い。
パッケージのアップデート
現行バージョンでのアップデートを最新にする。
sudo apt update
sudo apt upgrade
sudo apt autoremove
sudo apt autoclean
上記を実行。ログは大量に出るので割愛。
一応、Ubuntuを再起動しておく。
(※exitで抜けただけだと再起動にならないっぽいので、
管理者権限で立ち上げたpowershellから、wsl –shutdownとして停止後、再度WSLを起動)
Ubuntuのアップグレード
アップグレードを実行。
sudo do-release-upgrade
コマンドを実行するとなんやかんや動いてアップグレードのするかの確認が出る。
#sudo do-release-upgrade -cとするとアップグレード先のバージョンが確認できる。
Do you want to start the upgrade?
2 installed packages are no longer supported by Canonical. You can
still get support from the community.
8 packages are going to be removed. 170 new packages are going to be
installed. 649 packages are going to be upgraded.
You have to download a total of 365 M. This download will take about
1 minute with your connection.
Installing the upgrade can take several hours. Once the download has
finished, the process cannot be canceled.
Continue [yN] Details [d]
サポートされない、削除される、インストールされる、アップグレードされるパッケージがいくつかあるよと、アップグレードには数時間かかり、プロセスをキャンセルすることはできないよってことを言われている。
一応、dを押して詳細を確認
・サポートされていない、removeされるパッケージ
・インストールさされるパッケージ
・アップグレードされるパッケージ
がずらっと羅列される。
qを押すとContinueかdetailかをまた選択できるようになるので、yを押してアップグレードを開始。
途中で上記のようなメッセージが出て、処理内容について確認がされる。
問題なければOK。
Searching for obsolete software
Reading state information... Done
Remove obsolete packages?
83 packages are going to be removed.
Continue [yN] Details [d]
他にも、removeされるパッケージが問題ないか聞かれるので、問題なければyで継続する。
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]
と出て、アップグレードが完了。
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
Failed to talk to init daemon.
=== Command detached from window (・・・) ===
=== Command terminated normally (・・・) ===
yを押しても、上記のようになるのでxを押してセッションを切って、WSLのターミナルに戻って再起動する。
#WSL上で走らせている関係で、完了時のプロセスで再起動できないらしい。
アップグレードには12,3分くらいかかった。
●ハマったところ
最初、do-release-upgradeを実行しようとすると、以下のようになって進まなかった。
=== Command terminated with exit status 1(・・・) ===
Ubuntu 18.04 LTSの場合、インストールされているsnapが原因で、アップグレードできないことがあるらしいので、削除してから再実行。
sudo apt remove snapd
アップグレードの確認
再起動した後にubuntuのバージョンを確認。
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 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
ここで気づいた。。。
アップグレードはできているが18→20となっている。
さらにアップグレードできるか確認してみる。
$ sudo do-release-upgrade -c
Checking for a new Ubuntu release
New release '22.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
どうやら順番にバージョンを上げていく必要があるようだ。
24まで上げたいので、後2回アップグレードを繰り返す。
Ubuntu 20.04 → Ubuntu 22.04 へアップグレード
前述の手順を繰り返し、22.04へアップグレード
8分程度かかった。
$ 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
無事にUbuntu 22.04にアップグレード完了。
Ubuntu 22.04 → Ubuntu 24.04 へアップグレード
アップグレード先のバージョンを確認。
$ 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.
24.04がリリースされているようなので、アップグレードする。
以下のエラーが出て先に進まない。
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-219kwmsl/noble", line 8, in <module>
sys.exit(main())
File "/tmp/ubuntu-release-upgrader-219kwmsl/DistUpgrade/DistUpgradeMain.py", line 241, in main
if app.run():
File "/tmp/ubuntu-release-upgrader-219kwmsl/DistUpgrade/DistUpgradeController.py", line 2662, in run
return self.fullUpgrade()
File "/tmp/ubuntu-release-upgrader-219kwmsl/DistUpgrade/DistUpgradeController.py", line 2467, in fullUpgrade
if not self.doPostInitialUpdate():
File "/tmp/ubuntu-release-upgrader-219kwmsl/DistUpgrade/DistUpgradeController.py", line 1438, in doPostInitialUpdate
self.quirks.run("PostInitialUpdate")
File "/tmp/ubuntu-release-upgrader-219kwmsl/DistUpgrade/DistUpgradeQuirks.py", line 102, in run
func()
File "/tmp/ubuntu-release-upgrader-219kwmsl/DistUpgrade/DistUpgradeQuirks.py", line 127, in noblePostInitialUpdate
self._test_and_fail_on_tpm_fde()
File "/tmp/ubuntu-release-upgrader-219kwmsl/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.
色々調べてみると、snapdのデーモンプロセスが動いていないことが原因らしい。
システムとして、デーモンが動くためにはsystemdが動いている必要があるらしいのだが、前はこのプロセスが許可されていなかったが、最近(WSL2から?)サポートされるようになったらしい。
新しくインストールしている場合は問題ないらしいので、古い環境からアップグレードして使っている場合に特有のハマるポイントみたい。
結局、どうすればいいかというと、/etc/wsl.confファイルを書き換える(ない場合は作成から)必要がある。
sudo emacs /etc/wsl.conf #エディタはvimとかでもよい
コンフィグファイルを開き、以下のように記述する。
[boot]
systemd=true
WSLを再起動。
以下のコマンドを実行してデーモンが動いていることを確認できればOK。
$ systemctl status snapd
○ snapd.service - Snap Daemon
Loaded: loaded (/lib/systemd/system/snapd.service; enabled; vendor preset: enabled)
Active: inactive (dead) since XXX;
● snapd.socket
Process: 260 ExecStart=/usr/lib/snapd/snapd (code=exited, status=42)
Main PID: 260 (code=exited, status=42)
XXX snapd[260]: daemon.go:250: started snapd/2.66.1+22.04 (series 16; classic; devmode; wsl) ubuntu/>
・・・
XXX systemd[1]: snapd.service: Deactivated successfully.
NGな場合は以下のようになる。
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
snapdが問題ないことを確認したら、再度Ubuntuのアップグレードを実施。
今度は問題なくアップグレード成功。
14分程度かかった。
$ 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
ちなみに次のリリースを確認すると、まだリリースはないとのこと。
$ sudo do-release-upgrade -c
Checking for a new Ubuntu release
There is no development version of an LTS available.
To upgrade to the latest non-LTS development release
set Prompt=normal in /etc/update-manager/release-upgrades.
ようやく最新の環境にまで更新できた。。。
コメント