目的
さくらVPSでUbuntu 16.04 LTSを運用していましたが、しばらく放置していたすきに時代は次のバージョンが出てました。ログインしたら以下のようなメッセージも表示されます。
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-134-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage New release '18.04.4 LTS' available. Run 'do-release-upgrade' to upgrade to it. SAKURA Internet [Virtual Private Server SERVICE]
というか、もうUbuntu 20.04 LTSも出ているみたいですね。まあでもいったん18.04にしてみようと思います。
ということで、Ubuntu 16.04 から Ubuntu 18.04 へのアップグレードを行った時の記録です。あくまでさくらのVPSでの話です。
コマンドを打ってアップグレード
$ sudo apt update $ sudo apt upgrade
apt upgradeが終わったあと以下のようなメッセージが表示されていた。
The following packages were automatically installed and are no longer required: linux-headers-4.4.0-62 linux-headers-4.4.0-62-generic linux-image-4.4.0-62-generic linux-image-extra-4.4.0-62-generic Use 'sudo apt autoremove' to remove them.
いらなくなったものがあるからautoremoveで消したらどうって言っている。指示に従ってみた。
$ sudo apt autoremove
-cをつけるといきなりアップグレードせずにチェックができるという情報があったので打ってみる。
$ sudo do-release-upgrade -c Checking for a new Ubuntu release New release '18.04.4 LTS' available. Run 'do-release-upgrade' to upgrade to it.
ふんふん。18.04になるみたい。よし実行。
$ sudo do-release-upgrade Checking for a new Ubuntu release Get:1 Upgrade tool signature [819 B] Get:2 Upgrade tool [1,242 kB] Fetched 1,243 kB in 0s (0 B/s) authenticate 'bionic.tar.gz' against 'bionic.tar.gz.gpg' extracting 'bionic.tar.gz' Reading cache Checking package manager Continue running under SSH? This session appears to be running under ssh. It is not recommended to perform a upgrade over ssh currently because in case of failure it is harder to recover. If you continue, an additional ssh daemon will be started at port '1022'. Do you want to continue? Continue [yN]
あ、「SSH越しにこのまま実行する? あまりオススメしないけど」と言われている。そうか、たしかによくないかも。
ここまでの作業はSSH越しにやってましたが、一旦中断してさくらのVPSのコンソールから作業を再開する。
$ sudo do-release-upgrade
インストールするパッケージのチェックなどを行なったあと、削除するもの、インストールするもの、アップグレードするものの情報が表示される。つらつらと見てみると、ntpが削除の対象になっている。ntpはもう使われないのかな?
Continueでyを打ってアップレードを続行する。
途中で、「Configuring keyboard-configuration」という画面が表示される。とりあえず Japanese, Japaneseで選択した。
さらに、「/etc/sysctl.confに変更がある。どうする?」と言われる。 その場でdiffを見ることができるが、問題なさそうな気がしたので新しいパッケージのほうで上書きを選んだ。
また処理が進んで、今度は「Configuring grub-pc」という画面が表示される。 「/etc/default/grub が新しくなっているけどどうする?」と言われている。
なにがどうなっているのかなと調べていると、そもそもさくらのVPSで標準OSインストールとして選べる「Ubuntu 18.04 LTS」でインストールした時の OSセットアップ情報が記載されている記事を発見した。Ubuntu 18.04 LTSからさくらが(気を利かせてみたいなところだろう)カスタマイズしている内容が記載されている。
OSセットアップ情報(Ubuntu18.04 LTS) – さくらのVPSニュース
なるほどなるほど、これはかなり重要な情報ですね。今更ながらこれを参考にしながらアップグレード作業進めていこう。
で、記事にはさくらのほうで grub の設定もカスタマイズしている。なのでdiffを取ってみるとなんとも言えない差分が出ている。
とりあえずさくらの記事の設定に合わせたいので、手で直せるなら直してみようと思い、「do a 3-way merge between available versions」を選択してみた。
が、あれ? なんかそのまま処理が続行してしまった。どうなったんだろう?
次は「/etc/ntp.confに変更がある。どうする?」と言われる。 これも先ほどのさくらの記事によると、さくらのVPS用にカスタマイズしている内容がある。いったんYで新しいパッケージのほうを優先して、あとで記事の内容に従って修正することにする。
今度は「Configuring openssh-server」という画面が表示される。 diffを見るとすごく差分がある。記述の順番が変わっているだけなのかもしれないけど一旦パッケージの方をインストールして、あとで修正することにする。
次は「/etc/dovecot/conf.d/10-mail.confが新しいやつがある。どうする?」と言われる。 これは幸いなことにさほど差分がない。新しくするとメールサーバが動かなくなるかもしれないので、Keep local versionにする。
次は「/etc/dovecot/conf.d/10-ssl.confが」と言われる。 これも幸いなことにさほど差分がない。Keep local versionにする。
さらに処理が進んで、「Remove obsolete packages?」と聞かれるのでyで削除する。
最後に 「Restart required」となって、yで再起動する。
ログイン画面が Ubuntu 18.04.04 LTSになっているので、とりあえずうまく行っているっぽい。
動作確認と設定のし直し
grub
/etc/default/grub は3-way mergeを選んで何も言われないまま続行したので中身を確認してみる。すると、どうやっているのかわからないが、まあまあうまくマージしてくれているっぽい。一応前述のさくらの記事に合わせる形で修正しておく。以下はさくらの記事に書いてある内容。
GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=hidden GRUB_TIMEOUT=0 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" GRUB_CMDLINE_LINUX_DEFAULT="noresume nomodeset consoleblank=0 elevator=noop console=tty0 console=ttyS0,115200n8"
設定変えた後、ファイルの冒頭に" If you change this file, run 'update-grub' afterwards to update /boot/grub/grub.cfg." と書いてあるので、指示に従ってコマンドを打つ。
$ sudo update-grub
すると、/boot/grub/grub.cfg のタイムスタンプが変わった。なるほど、ここに変更内容が反映されるんだな。
ntpd
さっきhtpdの設定を上書きしたので変えなくちゃ……と思ったが、 do-release-upgrade
を実行した時に、ntpdが削除対象になっていたことを思い出す。
軽く調べてみると、やはりUbuntu 18.04ではntpdではなく、systemdのtimesyncdサービスというのを使っているらしい。
psコマンドでntpdがないかを確認したがない。 $ sudo systemctl status ntpd
と打ってみたがそんなサービスないよと言われる。やっぱり動いてないっぽい。
前述のさくらのVPSの記事によると、さくらのVPSで標準で用意しているUbuntu 18.04はntpdを追加でインストールしてntpdを使って同期するようにしてあると説明している。
が、現時点でntpdを使ってない状態になっているようなので、ここは新しいやり方に合わせることにしよう。
timedatectl
コマンドで状況を確認できるらしい。
$ timedatectl Local time: Sat 2020-05-02 22:43:00 JST Universal time: Sat 2020-05-02 13:43:00 UTC RTC time: Sat 2020-05-02 13:43:01 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
ふむ、動いているらしい。サービスとしては systemd-timesyncd.serviceという名前らしく、 $ sudo systemctl status systemd-timesyncd.service
を打つと確かに active (running) になっている。接続先は ntp.ubuntu.com になっているらしい。
systemd-timesyncdの設定ファイルは、/etc/systemd/timesyncd.confにあるらしい。Time Serverの接続先をさくらに変更する。
[Time] NTP=ntp1.sakura.ad.jp
変更後、サービス再起動。
$ sudo systemctl restart systemd-timesyncd.service
status確認してみたが、ちゃんと動いているらしい。
sshd
さっきsshdの設定を上書きしたので、もともとこちらでカスタマイズしている設定をし直す。ポート番号と、その他ちょっと設定変えていたのでそれを /etc/ssh/sshd_configに反映する。 sshdを再起動。
$ sudo systemctl restart sshd
ちゃんと動いた。sshで接続確認して、大丈夫なことを確認した。
dovecot
設定ファイルの何が変更になったのかあんまり確認していないが、とりあえずメールはIMAPでみれたので、大丈夫っぽい。