トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

OpenBSD/Upgrade/70-armv7

INDEX

OpenBSD のアップグレード (6.9 to 7.0 ARMv7 on BBB 版)

BeagleBone Black に入れた OpenBSD 6.9 (Released May 1, 2021) から 6.9 (Released Oct 14, 2021) にアップグレードした際のメモ書き。

お決まりなのだけど、重要なサーバや物理サーバでリモート接続している場合は、最初に同一のローカルシステムで試すことを推奨。まっ、そんな環境ないので、必要なファイルをバックアップした上で、えぃやぁかな。アップグレードでなきゃ、インストールし直しするつもりなので。

OpenBSD 6.6 からは、sysupgrade(8) でアップグレードができる。このアップグレードは一つ次のリリースへのみがサポートされる。諸注意や詳細は、 OpenBSD Upgrade Guide: 6.9 to 7.0 を参照。

sysupgrade(8) を使用した 無人アップグレード 以外に、各アーキテクチャ用のRAMディスクカーネル bsd.rd を取得して、このカーネルが起動したら (U)pgrade を選択して、プロンプトの指示に従って行う インタラクティブ アップグレード 、完全に手動でファイルを更新する マニュアル アップグレード がある。

 確認事項

OpenBSD 7.0 で、OpenSSH 8.8 にアップグレードされる。以前から告知されていたが、デフォルトで RSA/SHA1 が無効にされるため、古い RSA 秘密鍵を利用している場合、認証に失敗する。

PuTTYgen だと、0.64 (released 2015-02-28) で、鍵タイプのデフォルトが 新しい SSH-2 に変更されている。恐らくそれ以前で作った PuTTY の秘密鍵だとダメ(というか、2014年に作った鍵では認証が通らなかった)。

アップグレード

 アップグレードする前に

ダウンロードミラーサイトの設定

/etc/installurl に記載されたURLのサーバから取得される。インストール時に ftp や http を使用していれば、その時の設定が記載されている。

bbb# cat /etc/installurl
https://ftp.jaist.ac.jp/pub/OpenBSD

ディスク空き容量

sysupgrade(8) がダウンロードしたファイルを置く /home/_sysupgrade および、インストール先となる /usr の空き容量を確認する。足りないと失敗する。

/usr には、1.1G 必要とのこと。/home/_sysupgrade は、インストールセットの 500MB かな…。

bbb# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a     13.4G    8.5G    4.2G    67%    /

横着して、1パーティションで構成してた…

 アップグレード

bbb# uname -a
OpenBSD bbb.intranet 6.9 GENERIC#386 armv7

sysupgrade コマンド自体は、SSH上でも可能。ただし、アップグレードが完了して立ち上がるまではつなげないので、様子を確認できない。

X 関連を除くため、自動で再起動しないように -n を指定して、X 関連の インストール セット を除外してから、再起動する。

bbb# sysupgrade -n
Fetching from https://ftp.jaist.ac.jp/pub/OpenBSD/7.0/armv7/
TLS handshake failure: certificate verification failed: certificate has expired

なんか、証明書の有効期限が切れてると言うエラーで失敗する。Let's Encrypt のルート証明書が切れてるかな…。

ひとまず、cdn.openbsd.org から取得するようにして、進めてみる。

bbb# sysupgrade -n  https://cdn.openbsd.org/pub/OpenBSD/
Fetching from https://cdn.openbsd.org/pub/OpenBSD//7.0/armv7/
SHA256.sig   100% |*************************************|  1875       00:00
Signature Verified
INSTALL.armv7 100% |************************************| 36453       00:00
base70.tgz   100% |*************************************|   128 MB    00:49
bsd          100% |*************************************|  6694 KB    00:02
bsd.rd       100% |*************************************| 13162 KB    00:05
comp70.tgz   100% |*************************************| 43357 KB    00:13
game70.tgz   100% |*************************************|  2693 KB    00:01
man70.tgz    100% |*************************************|  7581 KB    00:02
xbase70.tgz  100% |*************************************| 45523 KB    00:15
xfont70.tgz  100% |*************************************| 22966 KB    00:08
xserv70.tgz  100% |*************************************|  8063 KB    00:04
xshare70.tgz 100% |*************************************|  4496 KB    00:01
Verifying sets.
Fetching updated firmware.
Will upgrade on next reboot
bbb#

再起動したらアップグレードがされるところまで来たら、不用な X 関連の インストールセットを外して、再起動する。

bbb# ls -lA /home/_sysupgrade
total 572716
-rw-r--r--  1 root  wheel      36453 Oct  3 19:59 INSTALL.armv7
-rw-r--r--  1 root  wheel       1723 Oct 31 16:24 SHA256
-rw-r--r--  1 root  wheel  134549145 Oct  3 19:10 base70.tgz
-rw-r--r--  1 root  wheel    6854909 Oct  3 19:05 bsd
-rw-r--r--  1 root  wheel   13477951 Oct  3 19:59 bsd.rd
-rw-r--r--  1 root  wheel   44398215 Oct  3 19:11 comp70.tgz
-rw-r--r--  1 root  wheel    2758358 Oct  3 19:11 game70.tgz
-rw-r--r--  1 root  wheel    7763220 Oct  3 19:11 man70.tgz
-rw-r--r--  1 root  wheel   46616121 Oct  4 01:45 xbase70.tgz
-rw-r--r--  1 root  wheel   23517553 Oct  4 01:45 xfont70.tgz
-rw-r--r--  1 root  wheel    8257171 Oct  4 01:46 xserv70.tgz
-rw-r--r--  1 root  wheel    4604029 Oct  4 01:46 xshare70.tgz
bbb# rm /home/_sysupgrade/x*
bbb# ls -lA /home/_sysupgrade
total 410348
-rw-r--r--  1 root  wheel      36453 Oct  3 19:59 INSTALL.armv7
-rw-r--r--  1 root  wheel       1723 Oct 31 16:24 SHA256
-rw-r--r--  1 root  wheel  134549145 Oct  3 19:10 base70.tgz
-rw-r--r--  1 root  wheel    6854909 Oct  3 19:05 bsd
-rw-r--r--  1 root  wheel   13477951 Oct  3 19:59 bsd.rd
-rw-r--r--  1 root  wheel   44398215 Oct  3 19:11 comp70.tgz
-rw-r--r--  1 root  wheel    2758358 Oct  3 19:11 game70.tgz
-rw-r--r--  1 root  wheel    7763220 Oct  3 19:11 man70.tgz
bbb#
bbb# reboot

ということで、↑はSSH、↓はCOMコンソール

 :≪前略≫
OpenBSD/armv7 (bbb.intranet) (console)

login: 
syncing disks... done
rebooting...

U-Boot SPL 2018.09-00002-g0b54a51eee (Sep 10 2018 - 19:41:39 -0500)
Trying to boot from MMC2
Loading Environment from EXT4...
** Unable to use mmc 0:1 for loading the env **
 :≪中略≫
## Starting EFI application at 82000000 ...
disks: sd0* sd1
>> OpenBSD/armv7 BOOTARM 1.17
upgrade detected: switching to /bsd.upgrade
boot>
 :≪中略≫
pmap Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2021 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 7.0 (RAMDISK) #379: Sun Oct  3 04:59:18 MDT 2021
    deraadt@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/RAMDISK
 :≪中略≫
bootfile: sd0a:/bsd.upgrade
boot device: sd0
root on rd0a swap on rd0b dump on rd0b
WARNING: CHECK AND RESET THE DATE!
erase ^?, werase ^W, kill ^U, intr ^C, status ^T

Welcome to the OpenBSD/armv7 7.0 installation program.
Performing non-interactive upgrade...
Terminal type? [vt220] vt220
Available disks are: sd0.
Which disk is the root disk? ('?' for details) [sd0] sd0
Checking root filesystem (fsck -fp /dev/sd0a)... OK.
Mounting root filesystem (mount -o ro /dev/sd0a /mnt)... OK.
Force checking of clean non-root filesystems? [no] no
/dev/sd0a (4cd804583c526979.a) on /mnt type ffs (rw, local, noatime, wxallowed)

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.0/armv7] /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] base70.tgz    [X] man70.tgz
    [X] bsd.rd        [X] comp70.tgz    [X] game70.tgz
Set name(s)? (or 'abort' or 'done') [done] done
Directory does not contain SHA256.sig. Continue without verification? [no] yes
Installing bsd          100% |**************************|  6694 KB    00:02
Installing bsd.rd       100% |**************************| 13162 KB    00:06
Installing base70.tgz   100% |**************************|   128 MB    03:50
Installing comp70.tgz   100% |**************************| 43357 KB    03:12
Installing man70.tgz    100% |**************************|  7581 KB    01:06
Installing game70.tgz   100% |**************************|  2693 KB    00:06
Location of sets? (disk http nfs or 'done') [done] done
Making all device nodes... done.
Relinking to create unique kernel... done.

CONGRATULATIONS! Your OpenBSD upgrade has been successfully completed!

syncing disks... done
rebooting...

U-Boot SPL 2018.09-00002-g0b54a51eee (Sep 10 2018 - 19:41:39 -0500)
Trying to boot from MMC2
Loading Environment from EXT4...
** Unable to use mmc 0:1 for loading the env **
 :≪中略≫
## Starting EFI application at 82000000 ...
disks: sd0* sd1
>> OpenBSD/armv7 BOOTARM 1.18
boot>
booting sd0a:/bsd: 4890176+717992+334164+593724 [273131+120+338976+300769]=0x0

OpenBSD/armv7 booting ...
 :≪中略≫
pmap [ using 913612 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2021 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 7.0 (GENERIC) #80407: Sun Oct  3 04:05:16 MDT 2021
    deraadt@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/GENERIC
 :≪中略≫
bootfile: sd0a:/bsd
boot device: sd0
root on sd0a (4cd804583c526979.a) swap on sd0b dump on sd0b
WARNING: CHECK AND RESET THE DATE!
Automatic boot in progress: starting file system checks.
/dev/sd0a (4cd804583c526979.a): file system is clean; not checking
pf enabled
net.inet.esp.enable: 1 -> 0
net.inet.ah.enable: 1 -> 0
starting network
reordering libraries: done.
starting early daemons: syslogd pflogd ntpd.
starting RPC daemons:.
savecore: no core dump
checking quotas: done.
clearing /tmp
kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
running rc.sysmerge
---- /etc/changelist unhandled, re-run sysmerge to merge the new version
---- /etc/locate.rc unhandled, re-run sysmerge to merge the new version
---- /etc/login.conf unhandled, re-run sysmerge to merge the new version
---- /etc/ntpd.conf unhandled, re-run sysmerge to merge the new version
---- /etc/ssh/sshd_config unhandled, re-run sysmerge to merge the new version
---- /etc/ssl/cert.pem unhandled, re-run sysmerge to merge the new version
starting network daemons: sshd smtpd httpd sndiod.
running rc.firsttime
Path to firmware: http://firmware.openbsd.org/firmware/7.0/
No devices found which need firmware files to be downloaded.
starting SoftEther VPN Server
The SoftEther VPN Server service has been started.
starting local daemons: cron.
Sun Oct 31 16:51:22 JST 2021

OpenBSD/armv7 (bbb.intranet) (console)

login: 

CPUの性能とかにもよるだろうけど、完了するまで20分から25分くらい。

アップデートの中で、 sysmerge(8)fw_update(1) が実行される模様。

 アップグレード後

bbb# uname -a
OpenBSD bbb.intranet 7.0 GENERIC#80407 armv7

設定ファイルの更新

アップデートの中で実行されるので、基本は不要。

bbb# sysmerge

ファームウェアの更新

アップデートの中で実行されるので、基本は不要(下記コマンドは確認のみ)。

bbb# fw_update -v -n
Path to firmware: http://firmware.openbsd.org/firmware/6.9/
No devices found which need firmware files to be downloaded.

バイナリパッチのアップデート

リリース直後であればほどんとない。

bbb# syspatch -c
syspatch: Error retrieving https://ftp.jaist.ac.jp/pub/OpenBSD/syspatch/6.9/armv7/SHA256.sig: 404 Not Found

古いファイルの削除

Files to remove を参考に、古いファイルを削除する。

bbb# 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
bbb#

メモ

比較的簡単にできる。特に何もなければ、コマンドを実行して2,30分で完了する。

全てのインストールセットがアップデート(インストール)されるので、不要なものがある場合は、 -n オプションを指定して、自動的に再起動しないようにして、/home/_sysupgrade に取得されたファイルから不要なものを削除してから、再起動する(_sysupgrade にあるすべてのファイルが対象になる)。

 OpenSSH 8.8 で ssh-rsa を使う

回避策として、一時的に ssh-rsa を有効化する。あくまでも鍵を変更するまでの応急処置として恒久的にするものではない。

ssh-rsa を使えるようにするには、sshd_config に PubkeyAcceptedAlgorithms=+ssh-rsa を追加する。

また、接続先が ssh-rsa のみでしか接続できない場合は、$HOME/.ssh/config もしくは /etc/ssh/ssh_config に下記を追加する(old-host は適に変更する)。

Host old-host
	HostkeyAlgorithms +ssh-rsa
	PubkeyAcceptedAlgorithms +ssh-rsa

最終更新時間:2021年11月23日 12時16分55秒 指摘や意見などあればSandBoxのBBSへ。