さくらのVPSとAWS LightSailとでUbuntu 18.04 Serverを2台動かしているのでそれらを20.04にあげた。基本的に前回16.04から18.04にあげたときと同じだった。

はじめに


本来であれば、18.04から20.04まで一発であげる予定だったが、手順を誤ったのか19.10を挟む結果となってしまった。ちゃんと18.04から20.04に(19.10を経由せず)あげることができるはず。これはこういうのやったレベルの備忘録ということで。

※いちおう、途中にこうやれば一発で20.04に上がったであろう手順は書いている。そもそも、もうすこし待てばこの手順でも一発で20.04に上がるはず。

作業概要など


AWS LightSailはスナップショットが取得できるのでスナップショットを採った。さくらはそのまま勢いで上げた。本来であればAWS LightSailを人柱として上手く行くかどうか試してからさくらでやるべきだったけど、めんどくさいので並行して作業した。その結果、2台ともわざわざ一旦19.10にアップグレードしてから20.04にアップグレードというめんどくさいことになってしまった。

作業時間


18.04から19.10がやたら時間がかかった。30分くらい。19.10から20.04は15分くらいだった。トータルで45分くらい。

パッケージの更新


次のコマンドでパッケージを更新した。

1
2
3
4
$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
$ sudo apt autoremove

この時apt dist-upgrade実行時に下記のように不要なパッケージを消すようにいわれたのでsudo apt autoremoveで削除した。

1
2
3
4
5
6
7
8
9
10
$ sudo apt dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
linux-headers-4.15.0-91 linux-headers-4.15.0-91-generic linux-image-4.15.0-91-generic
linux-modules-4.15.0-91-generic linux-modules-extra-4.15.0-91-generic
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

アップグレード設定ファイルの変更


このあとdo-release-upgradeでアップグレードを開始しようとすると「新しいLTSは無い」といわれる。出たばっかりなのでこのままではムリっぽい。もう少し時間が経てばイケるようになると思うけど、やり始めた勢いでやり終えたいので、メッセージに出ている通りアップグレード設定ファイルを変更する。

1
2
3
4
5
$ sudo do-release-upgrade
Checking for a new Ubuntu release
There is no development version of an LTS available.
To upgrade to the latest non-LTS develoment release
set Prompt=normal in /etc/update-manager/release-upgrades.

/etc/update-manager/release-upgradesPrompt=normalを設定するようにいわれているので/etc/update-manager/release-upgradesを確認する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ less /etc/update-manager/release-upgrades
# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting 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

これの一番最後を次のようにnormalに変更する。

1
2
- Prompt=lts
+ Prompt=normal

アップグレード実行


再度do-release-upgradeコマンドを実行する。

※このページの最後に書いてますが、ここで-dオプションを使用していれば一発で20.04に上がったと思われる

1
2
3
$ sudo do-release-upgrade
Checking for a new Ubuntu release
You have not rebooted after updating a package which requires a reboot. Please reboot before upgrading.

sshポート確認

初めに一時的に追加でsshポートが開けられる旨と、続行するかどうか聞かれる。

1
2
3
4
5
If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?

Continue [yN] y

アップグレード時になにか失敗しても追加で開けられたポートで接続できますよ。的なことを言われて、ENTERを押すように言われる。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Starting additional sshd

To make recovery in case of failure easier, an additional sshd will
be started on port '1022'. If anything goes wrong with the running
ssh you can still connect to the additional one.
If you run a firewall, you may need to temporarily open this port. As
this is potentially dangerous it's not done automatically. You can
open the port with e.g.:
'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT'

To continue please press [ENTER]

Reading package lists... Done
Building dependency tree
...

一部パッケージ無効化の確認

続けてsource.listに記載されているパッケージは無効になる旨が表示される。続けてENTERを押す。

1
2
3
4
5
6
7
8
9
Updating repository information

Third party sources disabled

Some third party entries in your sources.list were disabled. You can
re-enable them after the upgrade with the 'software-properties' tool
or your package manager.

To continue please press [ENTER]

アップグレード実行確認

アップグレードを開始する旨と削除されるパッケージなどについて聞かれる。

1
2
3
4
5
6
7
8
9
10
11
12
13
9 installed packages are no longer supported by Canonical. You can
still get support from the community.

3 packages are going to be removed. 105 new packages are going to be
installed. 472 packages are going to be upgraded.

You have to download a total of 188 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を押せば具体的にどのパッケージが削除されるのかなどが表示される。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 No longer supported: gcc-8-base libargon2-0 liblxc-common liblxc1
lxcfs lxd lxd-client uidmap xdelta3

Remove: libapt-inst2.0 libapt-pkg5.0 libpolkit-backend-1-0

Install: bolt cryptsetup-initramfs cryptsetup-run dbus-user-session
...
thin-provisioning-tools usb.ids


Upgrade: accountsservice acl acpid adduser apparmor apport
apport-symptoms apt apt-transport-https apt-utils at aufs-tools
...
libpam-runtime libpam-systemd libpam0g libparted2 libpcap0.8

lxdのバージョン確認

AWS LightSailの方のみLDXのバージョンをどうするか聞かれた。LTSの3.0を選択

sshdの設定確認

sshdをどうするかはさくらもLightSailも両方で聞かれた。これはそのままを維持するように選択した。

設定を変更するかどうかの確認

openssl, nginx, ufwとrelease-upgradesの設定をどうするか聞かれた。release-upgradesは先ほど弄ったのが原因なのでYで問題なし。openssl, nginxとufwは弄りまくっているので変更が入ると困るのでNを選択。この辺りはサーバで弄っているかどうかで聞かれるかどうか異なるはず。

openssl

1
2
3
4
5
6
7
8
9
10
Configuration file '/etc/ssl/openssl.cnf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** openssl.cnf (Y/I/N/O/D/Z) [default=N] ? N

nginx

1
2
3
4
5
6
7
8
9
10
Configuration file '/etc/nginx/nginx.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** nginx.conf (Y/I/N/O/D/Z) [default=N] ? N

ufw

1
2
3
4
5
6
7
8
9
10
11
Configuration file '/etc/default/ufw'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** ufw (Y/I/N/O/D/Z) [default=N] ? N

release-upgrades

1
2
3
4
5
6
7
8
9
10
Configuration file '/etc/update-manager/release-upgrades'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** release-upgrades (Y/I/N/O/D/Z) [default=N] ? Y

非推奨のパッケージの削除

非推奨パッケージを削除するかどうか聞かれた。Yを選択した。

1
2
3
4
5
6
7
8
9
Searching for obsolete software
Reading state information... Done

Remove obsolete packages?


47 packages are going to be removed.

Continue [yN] Details [d]

再起動


最後に再起動が必要な旨のメッセージが表示される。yを入力すれば再起動される。誤ってnを入力してもrebootコマンドで再起動かければOK。

1
2
3
4
5
6
7
8
 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]

Welcome to Ubuntu 19.10 ??????


これで、Ubuntu 20.04に上がった。と思いきや、なぜか19.04だった。

1
Welcome to Ubuntu 19.10 (GNU/Linux 5.3.0-1017-aws x86_64)

20.04へ


再度do-release-upgradeコマンドを実施するも…

1
2
3
$ sudo do-release-upgrade
Checking for a new Ubuntu release
No new release found.

とのこと。調べたところ、どうも-dオプションをつければいけそうなことがわかった。

今すぐ18.04 LTSにアップグレードするには?

後はそれぞれ2台のサーバに対してこのページの手順を再度実施。めでたく20.04となった。

1
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-28-generic x86_64)

おわり。