OpenBSD 6.9 を 7.0 へ アップグレード
Tags: openbsd, upgrade, tutorial, japanese
Published: 2022-03-10 15:27:33

## Summary

[OpenBSD](https://www.openbsd.org/) の 51 回目のリリースが 2021 年 10 月 14 日に行われました。このリリースで、バージョン番号が [7.0](https://www.openbsd.org/70.html) に到達しました✨

{% twitter 1448676254236938242 %}

<center>[What's New](https://www.openbsd.org/70.html#new)</center>

---

本記事では OpenBSD 6.9 を 7.0 へアップグレードする手順を説明します。

## Tutorial

本記事ではステップ・バイ・ステップ形式で、アップグレード手順を示します。各ステップには実際に実行するコマンドも記述しています。

1. アップグレードの前に
2. Upgrade
3. アップグレードの後に
4. Reboot
5. `syspatch` の適用とパッケージの更新
6. 不要になったファイルの削除
7. 特定のパッケージへの対応
8. Reboot

なお全体の流れは [アップグレードのための公式チュートリアル (英語)](https://www.openbsd.org/faq/upgrade70.html) をもとにしています。

<center>🌊 🐡 🌊</center>

### 1. アップグレードの前に

(参考) [公式チュートリアル内の該当セクション](https://www.openbsd.org/faq/upgrade70.html#BeforeUpdate)

#### ディスク空き容量の確認

`/usr` に 1.1GB 以上の空きが必要です。

```console
$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
(...)
/dev/sd1x      2.9G    1.4G    1.4G    50%    /usr
```

#### 現在の利用内容を継承できることの確認

事前に [設定内容と記法の変更点 (英語)](https://www.openbsd.org/faq/upgrade70.html#ConfigChanges) と [注意すべきパッケージ (英語)](https://www.openbsd.org/faq/upgrade70.html#SpecialPackages) を確認しましょう。

### 2. Upgrade

アップグレードする上で問題は無さそうですか？必要なバックアップの取得は済んでいるでしょうか？

準備ができたら、次のコマンドを実行しましょう！ (注意: 途中で中断はできません。)

```console
$ doas sysupgrade
```

以下のような内容が出力されます:

```console
Fetching from https://cdn.openbsd.org/pub/OpenBSD/7.0/amd64/
SHA256.sig   100% |**************************************************|  2144       00:00    
Signature Verified
INSTALL.amd64 100% |*************************************************| 43523       00:00    
base70.tgz   100% |**************************************************|   302 MB    00:27    
bsd          100% |**************************************************| 21090 KB    00:06    
bsd.mp       100% |**************************************************| 21181 KB    00:09    
bsd.rd       100% |**************************************************|  4109 KB    00:01    
comp70.tgz   100% |**************************************************| 73002 KB    00:18    
game70.tgz   100% |**************************************************|  2743 KB    00:01    
man70.tgz    100% |**************************************************|  7580 KB    00:02    
xbase70.tgz  100% |**************************************************| 54408 KB    00:09    
xfont70.tgz  100% |**************************************************| 22965 KB    00:07    
xserv70.tgz  100% |**************************************************| 19659 KB    00:04    
xshare70.tgz 100% |**************************************************|  4494 KB    00:02    
Verifying sets.
Fetching updated firmware.
intel-firmware-20210216v0->20210608v0: ok
vmm-firmware-1.11.0p3->1.14.0: ok
Read shared items: ok
Upgrading.
```

システムが自動的に再起動され、さらにその後も `sysupgrade` のプロセスが続きます。

この過程で `sysmerge` も自動的に実行されます。出力結果は次のようなものでした:

```console
--- /etc/login.conf unhandled, re-run sysmerge to merge the new version
--- /etc/ssh/sshd_config unhandled, re-run sysmerge to merge the new version
```

すべてが終わってから、ログインすると、ウェルカムメッセージに "OpenBSD 7.0 (GENERIC)" と表示されるのを確認できるでしょう。

### 3. アップグレードの後に

#### 3-1. `sysmerge`

```console
$ doas sysmerge
```

既述の通り `rc.sysmerge` は、すでに自動で実行されています。しかしながら、ここで同じコマンドを実行することが必要な場合があります。
なぜなら手動によるマージが要求される場合があるためです。今回私の場合は以下のファイルが該当しました:

- `/etc/ssh/sshd_config`
- `/etc/login.conf`

マージを行う場合、次の (あるいはさらにその他の) いずれかの入力を行いながら進めます:

- `d`: 既存のファイルを保持します。
- `i`: 新しいファイルで上書きします。
- `m`: 上記のファイル群を手動でマージします。

`m` を選択すると、個々の差分が順番に表示されます。`l` を入力すると、現在表示されている差分において、左側を正式版として採用します。かたや `r` を入力すると、右側の差分を採用します。この他に `eb` を入力することもできます。この場合は "左右の差分を結合した内容を編集" できます。さて編集がすべて完了すると "===> How should I deal with the merged file? [Leave it for later] e
editing merged file..." という確認メッセージが表示されます。ここで `i` を入力することで "マージしたファイルをシステムに取込み" ます。

### 4. Reboot

システムの再起動は、後続の一度で十分かもしれません。しかしここで一度再起動しておきます。なぜかというと、OS のアップグレードが完了したタイミングだからです。

```console
$ doas reboot
```

### 5. `syspatch` の適用とパッケージの更新

以下の 2 つのタスクは、システムを更新する時にも実施する汎用的なものたちです。

#### 5-1. `syspatch` の適用

`syspatch` は OpenBSD から逐次提供される公式のバイナリパッチを取込む重要なコマンドです。
とはいえ `sysupgrade` が実行されている中で `syspatch` もすでに実行されています。そのためここで手動でを実行する必要は無いでしょう:

```console
$ # スキップ可能:
$ # doas syspatch
```

#### 5-2. パッケージの更新

システムにインストールされているパッケージの更新を行います。

```console
$ doas pkg_add -u
```

出力内容は注意して読みましょう。重要な変更点もしくは要対応事項が表示されているかもしれません。

### 6. 不要になったファイルの削除

公式のチュートリアルに [削除すべきファイル群](https://www.openbsd.org/faq/upgrade70.html#RmFiles) が記載されています:

```console
$ doas rm -f /usr/X11R6/lib/libdmx.* \
	  /usr/X11R6/include/X11/extensions/dmxext.h \
	  /usr/X11R6/lib/pkgconfig/dmx.pc \
	  /usr/X11R6/man/man3/DMX*.3
```

### 7. 特定のパッケージへの対応

公式のチュートリアルを読んで [注意すべきパッケージ](https://www.openbsd.org/faq/upgrade70.html#SpecialPackages) への対応を必要に応じて行いましょう。今回は以下のものを使用している場合に注意が必要です:

- net/freeradius

### 8. Reboot

あとはこれだけです。おつかれさまでした。

```console
$ doas reboot
```

アップグレードされたシステムが快適に動きますように :)

---

OpenBSD プロジェクトとコミュニティに深い感謝を込めて。