1. 概要
「VirtualBox」上に、「FreeBSD 13.5 RELEASE」のマシンがありますので、これを「FreeBSD 14.2 RELEASE」にアップデートしてみます。
アップデート前のマシンは、いくつかのサーバアプリケーションをインストールしたものです。
2. ports の更新
放置しておいたので、アップデートの発生している、「ports」が山ほどあります。
全部更新しておきます。
数が相当数あったのと、重い「ports」が存在したので、数日かかりました。
「glib」のみ更新できませんでした。
pkg autoremove
で、「glib」が消えたので、よしとします。
3. パッチをあてる
現在の状況を見てみます。
$ uname -a
FreeBSD ns.vm.sing.ne.jp 13.5-RELEASE FreeBSD 13.5-RELEASE MYKERNEL amd64
パッチがあたっていないので、パッチをあてるところから・・・。
以下、「root」ユーザ権限で。
freebsd-update fetch
メッセージは長々と出力されるので割愛します。
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update1.freebsd.org... done.
Fetching metadata signature for 13.5-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 49 patches.....10....20....30....40.... done.
Applying patches... done.
Fetching 10 files... ....10 done.
The following files will be removed as part of updating to
13.5-RELEASE-p1:
/etc/ssl/blacklisted/03179a64.0
/etc/ssl/blacklisted/080911ac.0
/etc/ssl/blacklisted/157753a5.0
・・・ 略 ・・・
/usr/share/certs/blacklisted/Staat_der_Nederlanden_Root_CA_-_G2.pem
/usr/share/certs/blacklisted/Trustis_FPS_Root_CA.pem
The following files will be added as part of updating to
13.5-RELEASE-p1:
Space と q で進めていきます。
アップデート。
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: 1996.
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.5-RELEASE FreeBSD 13.5-RELEASE MYKERNEL amd64
ん~、更新が発生しているように見えたのですが、「p*」にはなっていないですね。
4. GENERIC boot を用意しておく
メジャーアップデートなので必要になるかもしれないので、あらかじめメディアだけは用意しておきます。
「.iso」ファイルをダウンロードして、それをマウントするのが手っ取り早い。
カーネルさえあればいいので、「DVD」メディアでなく、「CD」メディアで十分。
ダウンロード。
mkdir -pv /tmp/disk
curl https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/13.5/FreeBSD-13.5-RELEASE-amd64-disc1.iso --output /tmp/disk/FreeBSD-13.5-RELEASE-amd64-disc1.iso
5. バージョンアップ
バージョンアップ。
「root」ユーザ権限で。
freebsd-update -r 14.2-RELEASE upgrade
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 13.5-RELEASE from update2.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata files... done.
Inspecting system... done.
WARNING: This system is running a "mykernel" kernel, which is not a
kernel configuration distributed as part of FreeBSD 13.5-RELEASE.
This kernel will not be updated: you MUST update the kernel manually
before running 'freebsd-update [options] install'.
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 files will be removed as part of updating to
14.2-RELEASE-p0:
/boot/kernel/amr.ko
/boot/kernel/amr_cam.ko
・・・ 略 ・・・
/boot/kernel/qat_c62x_fw.ko
/boot/kernel/qat_common.ko
:
更新するファイルをずらずらと表示してきます。
Space または q で進めていきます。
最終的に、下記を表示して終了します。
To install the downloaded upgrades, run 'freebsd-update [options] install'.
インストール。
freebsd-update install
下記のメッセージが表示されます。
Creating snapshot of existing boot environment... done.
Installing updates...
Kernel updates have been installed. Please reboot and run
'freebsd-update [options] install' again to finish installing updates.
「カーネルが変わったけん、再起動して、アップデートしなされ」ということですな。
再起動。
shutdown -r now
6. 再起動後
再起動後にログインしたときのログイン時のメッセージが
FreeBSD 14.2-RELEASE-p1 GENERIC
となっております。
再度、「root」ユーザ権限で。
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: 1982.
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
'freebsd-update [options] 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-2.1.0...
package pkg is already installed, forced install
Extracting pkg-2.1.0: 100%
「ports」更新。
git -C /usr/ports pull
portsdb -Fu
「ports」の更新チェック。
$ portversion -v | grep '<'
[Reading data from pkg(8) ... - 197 packages found - done]
更新が発生しているものがあれば、「portupgrade」しますが、今回はありませんでした。
freebsd-update install
Creating snapshot of existing boot environment... done.
Installing updates...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.
削除しようとしているディレクトリがないみたいですね。
「FreeBSD 13.3 RELEASE」から「FreeBSD 14.1 RELEASE」へアップグレードしたとき、「FreeBSD 13.4 RELEASE」から「FreeBSD 14.2 RELEASE」へアップグレードしたときと同じ現象が起こるような、嫌な予感。
再起動してみます。
shutdown -r now
再起動後に、バージョンを確認します。
$ uname -a
FreeBSD ns.vm.sing.ne.jp 14.2-RELEASE-p1 FreeBSD 14.2-RELEASE-p1 GENERIC amd64
と、めでたく、バージョンはあがったのですが・・・。
「sudo」コマンドをたたこうとすると。
$ sudo su
ld-elf.so.1: Shared object "libcrypto.so.111" not found, required by "sudo"
やはりな。
サーバアプリケーションも同様にこけているものがあります。
仕方ない。
「FreeBSD 13.5 RELEASE」で稼働している別のマシンから。
「sftp」で。
get /usr/lib/libssl.so.111 libssl.so.111.64
get /usr/lib32/libssl.so.111 libssl.so.111.32
get /lib/libcrypto.so.111 libcrypto.so.111.64
get /usr/lib32/libcrypto.so.111 libcrypto.so.111.32
bye
で取得します。
「root」ユーザ権限で。
(この時点で、「sudo」も動かないので、「su」を使います)
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
直後から、「sudo」が機能するようになります。
「service」を見てみると、この時点で動いているものの方が少ないので、ライブラリをいれたので、再起動します。
再起動後に、「service」がすべて起動するのを確認しました。
この点で、実機で「FreeBSD 13.x RELEASE」から「FreeBSD 14.x RELEASE」へアップグレードするのをためらっているのですが・・・。
そろそろ、この辺であきらめて、アップグレードしようかと思います。