はじめに
OpenBSD プロジェクトから 2022 年 10 月 20 日に OS の 7.2 がリリースされました✨ 53 番目のリリースに当たります。
The OpenBSD project celebrates its 53rd release!
— OpenBSD (@openbsd) October 20, 2022
See what's new here: https://t.co/p6Yudc57IP
Read the announcement here: https://t.co/TkCEBO1lPX pic.twitter.com/waPbxVf0qm
本記事で OpenBSD を 7.1 を 7.2 にアップグレードする手順を説明します。 各手順は 公式のすばらしいガイド (英語) に基づいています。
チュートリアル
実行するコマンド一式を示しながら、ステップ・バイ・ステップ形式で書いた、アップグレード用のガイドです。
1. アップグレード前準備: 検証とカスタイマイズ
公式のチュートリアルには Before using any upgrade method (私訳: アップグレード方法に関わらずその前に行うこと) セクションが設けられています。
アップグレード方法としては sysupgrade
を使うのが、たいていの場合、良いでしょう。
ディスク空き容量の確認
/usr
に 1.1GB 以上の空きがあることが必要です。
$ df -h
Filesystem Size Used Avail Capacity Mounted on
(...)
/dev/sd1d 6.8G 1.8G 4.6G 29% /usr
OK のようです :)
現在の利用内容がアップグレード結果と適合することの確認
Configuration and syntax changes (私訳: 設定と構文の変更) and Special packages (私訳: 特別なパッケージ) を確認しましょう。
アップグレード内容のカスタマイズ (必要な場合)
/auto_upgrade.conf をレスポンス・ファイルとして利用できます。 OpenBSD の autoinstall のドキュメントに、次のように書かれています:
If either /auto_install.conf or /auto_upgrade.conf is found on bsd.rd’s built-in RAM disk, autoinstall behaves as if the machine is netbooted, but uses the local response file. In case both files exist, /auto_install.conf takes precedence.
(私訳: /auto_install.conf または /auto_upgrade.conf が bsd.rd 内蔵の RAM ディスクに存在する場合、autoinstall は、ネットブートモードで起動されたマシンのように振る舞いますが、ローカルにあるレスポンス・ファイルを使用します。両方のファイルが存在する場合、/auto_install.conf が優先されます。)
/auto_upgrade.conf
の完全な内容の一例は次のようなものです:
Location of sets = disk
Pathname to the sets = /home/_sysupgrade/
Set name(s) = -x*
Set name(s) = +xbase*
Set name(s) = -game*
Set name(s) = done
Directory does not contain SHA256.sig. Continue without verification = yes
この場合、xbase を除く x 一式と game が、インストール対象外になります。
それから /upgrade.site を用いた指定も可能です。
2. sysupgrade
によるアップグレード
このまま進めて問題は無いでしょうか ? 何かしらバックアップを取っておいた方が良いものがあるかもしれませんよ。
* 注意: sysupgrade
はひとたび実行すると中断はできません。
準備ができたようでしたら、以下のコマンドを実行しましょう。実行するのはこれだけです:
$ doas sysupgrade
以下のように出力されるでしょう:
Fetching from https://cdn.openbsd.org/pub/OpenBSD/7.2/amd64/
SHA256.sig 100% |*************************************| 2144 00:00
Signature Verified
INSTALL.amd64 100% |************************************| 43554 00:00
base72.tgz 100% |*************************************| 331 MB 00:12
bsd 100% |*************************************| 22445 KB 00:02
bsd.mp 100% |*************************************| 22550 KB 00:02
bsd.rd 100% |*************************************| 4533 KB 00:00
comp72.tgz 100% |*************************************| 74598 KB 00:05
game72.tgz 100% |*************************************| 2745 KB 00:00
man72.tgz 100% |*************************************| 7610 KB 00:01
xbase72.tgz 100% |*************************************| 52832 KB 00:03
xfont72.tgz 100% |*************************************| 22967 KB 00:02
xserv72.tgz 100% |*************************************| 14815 KB 00:02
xshare72.tgz 100% |*************************************| 4559 KB 00:00
Verifying sets.
Fetching updated firmware.
fw_update: added none; updated intel; kept vmm
Upgrading.
sysupgrade
プロセスは自動でマシンの再起動を行います。そして次のように続きます:
Let's upgrade the sets!
Location of sets? (disk http nfs or 'done') [http] disk
Is the disk partition already mounted? [yes] yes
Pathname to the sets? (or 'done') [7.2/amd64] /home/_sysupgrade/
Select sets by entering a set name, a file name pattern or 'all'. De-select
sets by prepending a '-', e.g.: '-game*'. Selected sets are labelled '[X]'.
[X] bsd [X] comp72.tgz [X] xbase72.tgz [X] xserv72.tgz
[X] bsd.rd [X] man72.tgz [X] xshare72.tgz
[X] base72.tgz [X] game72.tgz [X] xfont72.taz
Set name(s)? (or 'abort' or 'done') [done] done
Directory does not contain SHA256.sig. Continue without verification? [no] yes
Installing bsd 100% |**************************| 22445 KB 00:00
Installing bsd.rd 100% |**************************| 4533 KB 00:00
Installing base72.tgz 100% |**************************| 331 MB 00:25
Installing comp72.tgz 100% |**************************| 74598 KB 00:18
Installing man72.tgz 100% |**************************| 7610 KB 00:04
...
さらにもう一度再起動が行われます。その後に sysmerge
が自動で実行されます。私の場合、出力内容は以下のようなものでした:
...
clearing /tmp
kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
running rc.sysmerge
===> Adding the _bgplgd group
===> Adding the _agentx group
===> Adding the _bgplgd user
===> Updating /etc/changelist
===> Updating /etc/skel/.cshrc
===> Updating /etc/skel/.profile
===> Updating /etc/ssl/cert.pem
===> Updating /etc/X11/xenodm/Xsession
===> Updating /etc/X11/xinit/xinitrc
===> Updating /etc/mail/aliases
starting network daemons: sshd smtpd sndiod.
...
sshd
その他のデーモンが、それまでと同様に起動されるでしょう。
そして syspatch
が sysmerge
のように続きます:
Checking for available binary patches...
私が実行した時は、対象は何もありませんでした。
その後ついにログインメッセージが表示されます。そこには “OpenBSD 7.2 (GENERIC)” とあるでしょう。
3. アップグレード後の操作: sysmerge
(必要に応じて)
公式ドキュメントに アップグレード後に行うこと (英語) が書かれています。大いに参考になるでしょう。
rc.sysmerge
は、前段のプロセスで見たように、自動で実行済です。しかしこのコマンドをここで実行することが必要な場合もあります。
conf ファイル、例えば以下のようなものの、手動マージを要求されることがあるのです:
/etc/login.conf
コマンドを実行してみましょう:
$ doas sysmerge
まず差分が出力されるでしょう。それから以下のようにたずねられます:
Use 'd' to delete the temporary ./etc/login.conf
Use 'i' to install the temporary ./etc/login.conf
Use 'm' to merge the temporary and installed versions
Use 'v' to view the diff results again
Default is to leave the temporary file to deal with by hand
How should I deal with this? [Leave it for later]
最初の 3 つは、以下のような挙動になります:
d
: 現在の (ローカルの) ファイルを保持する。i
:sysupgrade
が取得した新しいファイルでローカルを上書きする。m
: 対話型形式で手動でマージする。
m
を入力するとマージモードが立ち上がります。一つ一つの差分について、いずれを採用するのかを確認されるでしょう:
l
を入力すると左側が採用されます。r
は右側です。
その後に、マージ結果ファイルに対して、どの操作を行うのかをたずねられます:
Use 'e' to edit the merged file
Use 'i' to install the merged file
Use 'n' to view a diff between the merged and new files
Use 'o' to view a diff between the old and merged files
Use 'r' to re-do the merge
Use 'v' to view the merged file
Use 'x' to delete the merged file and go back to previous menu
Default is to leave the temporary file to deal with by hand
===> How should I deal with the merged file? [Leave it for later]
e
を入力すると、エディタが起動されてマージ結果ファイルを編集できるようになります。
i
を入力すると、マージ結果ファイルをマシンにインストールします:
===> Merging /etc/login.conf (running cap_mkdb(1), needs a relog)
4. syspatch
の適用 (スキップ可能)
ここからの 2 つのタスクは、日常的なメンテナンスで、システムをアップデートする時にも実施するものです。
syspatch
は重要なコマンドです。OpenBSD から、必要と判明し次第都度、継続的に提供される公式のバイナリ・パッチです。
さて sysupgrade
は syspatch
をプロセス内で実行します。そのためここで手動で実行する必要はありません:
$ # きっとスキップ可能です:
$ # doas syspatch
5. パッケージのアップデート
What’s new (英語) セクションがリリースページにありますが、そこの “Ports and packages” (私訳: Ports とパッケージ) に “Some highlights” (私訳: 注目点) が記載されています。例えば今回 PHP の 8.1 が 7.4 や 8.0 のように使えるようになりました :)
このコマンドはマシンにインストールされているすべてのパッケージをアップデートします:
$ doas pkg_add -u
大量の出力がなされるでしょう。しかし慎重に読む必要があります。終わりの部分は特に、です。そこに重要な変更点や実施すべきアクションが書かれているかもしれません。
6. 古いファイルの削除
これはシンプルな手順です。公式チュートリアルの Files to remove (英語) (私訳: 削除すべきファイル) に書かれていることを行うだけです。今回の場合は以下の内容です:
$ doas userdel _switchd
$ doas groupdel _switchd
$ doas rm /etc/rc.d/switchd \
/usr/sbin/switchctl \
/usr/sbin/switchd \
/usr/share/man/man4/switch.4 \
/usr/share/man/man5/switchd.conf.5 \
/usr/share/man/man8/switchctl.8 \
/usr/share/man/man8/switchd.8
7. 特別なパッケージ
公式チュートリアルの Special packages (英語) を確認しましょう。使っているものがあるかもしれません:
- databases/openldap
- editors/vim
- inputmethods/fcitx
- lang/python
- www/sogo
8. 再起動
ゴールが見えて来ました !
$ doas reboot
これで完了です。
おわりに
新しいシステムが、あなたに良いことをもたらしますように :)
OpenBSD プロジェクトとコミュニティへの深い感謝を込めつつ擱筆 (かくひつ) します。