freebsd-update - 13.3 RELEASE → 14.1 RELEASE - 仮想環境で実験

 クラウディア
1. 概要
2. ports の更新
3. パッチをあてる
4. GENERIC boot を用意しておく
5. バージョンアップ
6. 再起動後
7. service
8. 蛇足

1. 概要

 「VirtualBox」上に、「FreeBSD 13.3 RELEASE」のマシンがありますので、これを「FreeBSD 14.1 RELEASE」にアップデートするところからやってみます。  アップデート前のマシンは、いくつかのサーバアプリケーションをインストールしたものです。

2. ports の更新

 放置しておいたので、アップデートの発生している、「ports」が山ほどあります。  全部更新しておきます。  なぜか、「bind-tools」が「recursive」エラーになって、「portsupgrade」もインストールもできない。  仕方ないので、アンインストールします。  システムのアップグレード後に余裕があれば、インストールしてみますが、いらないと言えば、いらないんだけどな。

3. パッチをあてる

 仮想マシンの現在の状況を見てみます。

$ uname -a
FreeBSD ns.vm.sing.ne.jp 13.3-RELEASE FreeBSD 13.3-RELEASE MYKERNEL amd64
 パッチがあたっていないので、パッチをあてるところから・・・。  以下、「root」ユーザ権限で。

freebsd-update fetch
 メッセージは長々と出力されるので割愛します。

Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update2.freebsd.org... done.
Fetching metadata signature for 13.3-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 35 patches.....10....20....30.. done.
Applying patches... done.
Fetching 6 files... ... done.
The following files will be updated as part of updating to
13.3-RELEASE-p3:
/bin/freebsd-version
/boot/kernel/if_wg.ko

・・・	略	・・・

/rescue/dhclient
/rescue/disklabel
:
 Spaceq で進めていきます。  アップデート。

freebsd-update install
 メッセージは、これだけ。

Creating snapshot of existing boot environment... done.
Installing updates...
Restarting sshd after upgrade
Performing sanity check on sshd configuration.
Stopping sshd.
Waiting for PIDS: 908.
Performing sanity check on sshd configuration.
Starting sshd.
Scanning //usr/share/certs/blacklisted for certificates...
Scanning //usr/share/certs/trusted for certificates...
Scanning //usr/local/share/certs for certificates...
 done.
 
 再起動。

shutdown -r now
 更新を確認。

uname -a

FreeBSD ns.vm.sing.ne.jp 13.3-RELEASE-p3 FreeBSD 13.3-RELEASE-p3 GENERIC amd64
 「FreeBSD 13.3-RELEASE」から「FreeBSD 13.3-RELEASE-p3」へ変わっています。

4. GENERIC boot を用意しておく

 メジャーアップデートなので必要になりかもしれないので、あらかじめメディアだけは用意しておきます。  「.iso」ファイルをダウンロードして、それをマウントするのが手っ取り早い。  カーネルさえあればいいので、「DVD」メディアでなく、「CD」メディアで十分。  ダウンロード。

mkdir -pv /tmp/disk
curl https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/13.3/FreeBSD-13.3-RELEASE-amd64-disc1.iso --output /tmp/disk/FreeBSD-13.3-RELEASE-amd64-disc1.iso

5. バージョンアップ

 バージョンアップ。  「root」ユーザ権限で。

freebsd-update -r 14.1-RELEASE upgrade

Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 13.3-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata files... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic kernel/generic-dbg src/src world/base world/lib32

The following components of FreeBSD do not seem to be installed:
world/base-dbg world/lib32-dbg

Does this look reasonable (y/n)?
 yEnter で答えます。  以降、メッセージはなるべく省略して、入力が必要な個所のみ記述します。  基本的に、デフォルトのコンフィグレーションファイルと異なるものは「conflicts」でっせといって下記のように表示されます。

The following file could not be merged automatically: /etc/mail/mailer.conf
Press Enter to edit this file in vi and resolve the conflicts
manually...
 Enter を押すと、「vi」が起動して、相違のある部分が表示されますので、残す部分以外は削除していきます。  起動できなくなるような編集をしない限りは、最悪、後でも編集しなおせるので、最低限必要な箇所を編集していきます。  同様に、編集の発生しているコンフィグレーションファイルが、次々に編集対象になります。  あるいは、下記のように。

The following changes, which occurred between FreeBSD 13.3-RELEASE and
FreeBSD 14.1-RELEASE have been merged into /etc/hosts:
--- current version
+++ new version
@@ -14,18 +14,18 @@
 #
 # Imaginary network.
 #10.0.0.2              myname.my.domain myname
 #10.0.0.3              myfriend.my.domain myfriend
 #
-# According to RFC 1918, you can use the following IP networks for
-# private nets which will never be connected to the Internet:
+# According to RFC 1918, you can use the following IP blocks for
+# private internets:
 #
-#      10.0.0.0        -   10.255.255.255
-#      172.16.0.0      -   172.31.255.255
-#      192.168.0.0     -   192.168.255.255
+#      10.0.0.0        -   10.255.255.255      (10/8 prefix)
+#      172.16.0.0      -   172.31.255.255      (172.16/12 prefix)
+#      192.168.0.0     -   192.168.255.255     (192.168/16 prefix)
 #
-# In case you want to be able to connect to the Internet, you need
+# In case you want to make addresses available on the Internet, you need
 # real official assigned numbers.  Do not try to invent your own network
 # numbers but instead get one from your network provider (if any) or
 # from your regional registry (ARIN, APNIC, LACNIC, RIPE NCC, or AfriNIC.)
 #
 192.168.100.196                ns.vm.sing.ne.jp
Does this look reasonable (y/n)?
 前のバージョンから、減る個所を「-」、今度のバージョンで増える箇所を「+」で表示して。  「どうね?」と、きいてきます。  たいてい、y Enter で問題ないでしょう。  ほかに。

The following file will be removed, as it no longer exists in
FreeBSD 14.1-RELEASE: /etc/portsnap.conf
Does this look reasonable (y/n)?
 ちゅうのもあります。  「/etc/portsnap.conf」は、「FreeBSD 14.0 RELEASE」から、なくなったのね。  y Enter ですね。  上記のたぐいが、一通り終わったら、下記のように。

The following files will be removed as part of updating to
14.1-RELEASE-p1:
/boot/kernel/amr.ko
/boot/kernel/amr_cam.ko


・・・	略	・・・

/boot/kernel/snd_maestro.ko
/boot/kernel/snd_mss.ko
:
 更新するファイルをずらずらと表示してきます。  Space または q で進めていきます。  最終的に、下記を表示して終了します。

To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".

To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
 ってことで、インストール。

/usr/sbin/freebsd-update install
 下記のメッセージが表示されます。

Creating snapshot of existing boot environment... done.
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
 「カーネルが変わったけん、再起動して、アップデートしなされ」ということですな。  再起動。

shutdown -r now

6. 再起動後

 再起動後にログインしたときのログイン時のメッセージが

FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC
 となっております。  再度、「root」ユーザ権限で。

/usr/sbin/freebsd-update install
 この下のメッセージの途中は、時間がかかります。  1~2時間は、覚悟した方がいいかもです。

Creating snapshot of existing boot environment... done.
Installing updates...Removing conflicting directory ///usr/src/sys/contrib/openzfs/cmd/arc_summary
Removing conflicting directory ///usr/src/sys/contrib/openzfs/cmd/zvol_wait

Restarting sshd after upgrade
Performing sanity check on sshd configuration.
Stopping sshd.
Waiting for PIDS: 903.
Performing sanity check on sshd configuration.
Starting sshd.
Scanning /usr/share/certs/untrusted for certificates...
Scanning /usr/share/certs/trusted for certificates...
Scanning /usr/local/share/certs for certificates...

Completing this upgrade requires removing old shared object files.
Please rebuild all installed 3rd party software (e.g., programs
installed from the ports tree) and then run "/usr/sbin/freebsd-update install"
again to finish installing updates.
 これを読みますと、サードパーティのソフトウェアをアップデートしたうえで、再度「freebsd-update」せよ、とのことです。  メジャーアップデートのときは、こうなりますな。  実は、ここから下、何度もやり直し、書き直しをしています。  なかなか、問題があって、すくない手順でやるのは、苦労します。  まず。

pkg bootstrap -f

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]:
 yEnter で答えます。

Bootstrapping pkg from pkg+https://pkg.FreeBSD.org/FreeBSD:14:amd64/quarterly, please wait...
Verifying signature with trusted certificate pkg.freebsd.org.2013102301... done
Installing pkg-1.21.3...
package pkg is already installed, forced install
Extracting pkg-1.21.3: 100%
 「ports」更新。

git -C /usr/ports pull
portsdb -Fu
 この後、「service」を確認したら、「sa-spamd」の起動が変なので。

cd /usr/ports/mail/spamassassin/
make
make reinstall
sa-update
service sa-spamd status
 一応、この時点で、サービスは、全部起動している。  「ports」の更新チェック。

$ portversion -v | grep '<'
[Reading data from pkg(8) ... - 343 packages found - done]
 ということで、「ports」の更新はなさそうなので。

/usr/sbin/freebsd-update install

Creating snapshot of existing boot environment... done.
Installing updates...rmdir: ///var/db/portsnap: Directory not empty
rmdir: ///usr/src/sys/contrib/openzfs/cmd/zvol_wait: Not a directory
rmdir: ///usr/src/sys/contrib/openzfs/cmd/arc_summary: Not a directory
 done.
 「/var/db/portsnap」は、手動で削除せなあかんのかな?  一応、念のため、再起動しようと、ログインしなおして、「sudo」使用とすると。

sudo su
ld-elf.so.1: Shared object "libcrypto.so.111" not found, required by "sudo"
 「sudo」は、インストールしなおさな、あかんようです、  「portversion」では、わからないのね。他にもありそうだなぁ。  「sudo」が効かないので、「su」で、「root」ユーザ権限を取得して。

cd /usr/ports/security/sudo
make deinstall clean
make
make reinstall
 これで、「sudo」は、回復するものの・・・。  「service」を見てみると、この時点で。

$ service nsd status
ld-elf.so.1: Shared object "libcrypto.so.111" not found, required by "nsd-checkconf"
nsd is not running.
$ service unbound status
ld-elf.so.1: Shared object "libssl.so.111" not found, required by "unbound-checkconf"
unbound is running as pid 677.
 「libcrypto.so.111」ちゅうのと「libssl.so.111」ちゅうのが、ないのがわかります。  「sudo」と同じ要領で、インストールしなおします。  ログインしなおして、「sudo」で、「root」ユーザ権限を取得して。

shutdown -r now

7. service

 起動後に。

/var/log/messages
 をチェックすると。

Jun 26 11:06:47 ns root[1123]: /etc/rc: WARNING: failed to start clamav_clamd
Jun 26 11:06:47 ns root[1176]: /etc/rc: WARNING: failed to start apache24
Jun 26 11:06:47 ns root[1182]: /etc/rc: WARNING: failed to start clamav_freshclam
 となっておる。  「service」コマンドで、サービスのチェックを行うと、軒並み死んでおります。  起動しているものの方が、少ないくらいだな。

apache24
clamav_clamd
clamav_freshclam

qmailsmtpd
qmailsmtpd_ssl
qmailpop3d
qmailpop3d_ssl

mysql
postgresql
 「ports」を取得しなおそうとすると。

$ git -C /usr/ports pull
ld-elf.so.1: Shared object "libssl.so.111" not found, required by "libcurl.so.4"
 この「libssl.so.111」がないちゅうのは、これから悩まされるのだ。  下記をサイトを参考にして。
FreeBSD の 14.0-RELEASE が出てたので導入
 以下を実行。

pkg-static -v.
pkg-static install -f pkg
pkg upgrade -f
 というのが、本式のやり方のはずなのですが。  これだと、その後、「portupgrade」を山ほどやりなおす必要があります。  こすい、裏技として。  「FreeBSD 13.3 RELEASE」のままのシステムがあればよいのです。仮想環境でも構わない。  容易できたら、そのマシンから、必要となるライブラリを持ってきます。  ログインユーザで。

$ sftp -i ~/.ssh/用意したシステムの証明書 用意したシステム
Connected to 用意したシステム
sftp> get /usr/lib/libssl.so.111      libssl.so.111.64
sftp> get /usr/lib32/libssl.so.111    libssl.so.111.32
sftp> get /lib/libcrypto.so.111       libcrypto.so.111.64
sftp> get /usr/lib32/libcrypto.so.111 libcrypto.so.111.32
sftp> bye
 「root」ユーザ権限で。

mv libssl.so.111.64    /usr/lib/libssl.so.111
mv libssl.so.111.32    /usr/lib32/libssl.so.111
mv libcrypto.so.111.64 /lib/libcrypto.so.111
mv libcrypto.so.111.32 /usr/lib32/libcrypto.so.111
 これで、「git」他、ある程度のものが動作するようになります。  再起動。

shutdown -r now
 「service」で動作していないのは、下記のものだけになりました。

clamav_clamd
 ということで。

cd /usr/ports/security/clamav
make clean
make
make reinstall
 起動。

service clamav-clamd start
 これで、このマシン上のサーバプログラムは、すべて正常に起動しているように見えます。  再度、「ports」の更新を確認。

git -C /usr/ports pull
portsdb -Fu
portversion -v | grep '<'
 この結果。

[Reading data from pkg(8) ... - 343 packages found - done]
 ということで、この時点で、「ports」の更新はない。  これで、このマシンのシステムアップグレードは、完了ということになります。

8. 蛇足

 本当は、実機でも、「FreeBSD 13.3 RELEASE」から「FreeBSD 14.1 RELEASE」へのアップグレードを行おうと思っていたのですが・・・。  「libssl.so.111」「libcrypto.so.111」の問題があるため、今回は、実機のアップグレードは、断念しました。  「FreeBSD 13.4 RELEASE」が、2024年9月10日にリリースされる予定で、「FreeBSD 13.4 RELEASE」では、この問題が解決していることを願っております。
ハイスピードプランネットオークションの相場、統計、価格比較といえばオークファン5G CONNECT世界最大級のオンライン英会話EF English LiveマイニングベースJETBOYPoint anytimeそれがだいじWi-Fi