FreeBSD 11.2-RELEASEをFreeBSD 12.0-RELEASEに更新

遅ればせながら家鯖をFreeBSD 11.2-RELEASEから12.0-RELEASEへと更新した。

まずは現在の環境を最新にしておく(あまりに古いとメジャーバージョンアップに失敗することがあるため)

$ freebsd-version -ku
11.2-RELEASE-p7
11.2-RELEASE-p7

# freebsd-update fetch
# freebsd-update install
# reboot

ここで、ブートローダまでは起動するがカーネル読み込みでブラックスクリーンになる謎現象に2日ほど悩まされた。結局BIOS設定をデフォルト状態に戻したら直ったが、原因は恐らくデュアルCPUからシングルCPUに変えた事と思われる。うちの鯖は無駄にデュアルCPUだったので(ドヤァ

最新になったか確認。

$ freebsd-version -uk
11.2-RELEASE-p10
11.2-RELEASE-p10

12.0-RELEASEへ更新する。 </code> # freebsd-update -r 12.0-RELEASE upgrade Looking up update.FreeBSD.org mirrors… 3 mirrors found. Fetching metadata signature for 11.2-RELEASE from update2.freebsd.org… done. (略) To install the downloaded upgrades, run “/usr/sbin/freebsd-update install”. </code>

システムのインストール

# freebsd-update install
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.

「再起動して再度freebsd-update installせよ」とのことだが、ここで必ずサードパーティのkext(vboxdrvとか)を一旦無効化する。さもないと、再起動後のカーネル読み込みでクラッシュする場合がある。

# emacs /boot/loader.conf
hogehoge_load="YES"の行をコメントアウトするで~

再起動

# reboot

システムのバージョンを確認してみる。システムは更新され、ユーザーランドは古いままという事が分かる。

$ freebsd-version -ku
12.0-RELEASE-p4
11.2-RELEASE-p10

ユーザーランドを更新。procの所有権を変えようとしてエラーが出てるけど、まぁ気にしない。

# freebsd-update install
Installing updates...install: chown 0:0 ///proc: Operation not supported
install: chmod 555 ///proc: Operation not supported

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-version -uk
12.0-RELEASE-p4
12.0-RELEASE-p5

ここまで来たら、pkg-static upgrade -fでインストール済みpackagesをすべて更新するのが正しいお作法。

なんだけれども、自分はportsでビルドしていく派なのでpkgだけ更新して、残りはちまちまportmasterする。

# pkg-static install -f pkg
pkg-static: Warning: Major OS version upgrade detected.  Running "pkg-static install -f pkg" recommended
Updating FreeBSD repository catalogue...
pkg-static: Repository FreeBSD has a wrong packagesite, need to re-create database
Fetching meta.txz: 100%    944 B   0.9kB/s    00:01
Fetching packagesite.txz: 100%    6 MiB   1.7MB/s    00:04
Processing entries: 100%
FreeBSD repository update completed. 31778 packages processed.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be REINSTALLED:
        pkg-1.10.5_5 (ABI changed: 'freebsd:11:x86:64' -> 'freebsd:12:x86:64')

Number of packages to be reinstalled: 1

3 MiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching pkg-1.10.5_5.txz: 100%    3 MiB   1.7MB/s    00:02
Checking integrity... done (0 conflicting)
[1/1] Reinstalling pkg-1.10.5_5...
[1/1] Extracting pkg-1.10.5_5: 100%
ldconfig: /usr/lib: ignoring directory not owned by root

んん~?/usr/libのオーナーがrootじゃないだとー?

$ ls -al /usr
total 177
drwxr-xr-x  18 6151  wheel   17 11月 23  2018 .
drwxr-xr-x  25 root  wheel   34  5月 29 01:20 ..
dr-xr-xr-x+  3 root  wheel    3 10月 19  2011 .zfs
drwxr-xr-x   2 6151  wheel  515  5月 29 00:39 bin
drwxr-xr-x   2 root  wheel    5  1月 29  2017 freebsd-dist
drwxr-xr-x  16 root  wheel   15 10月 22  2018 home
drwxr-xr-x  58 6151  wheel  344  5月 29 00:33 include
drwxr-xr-x  12 6151  wheel  710  5月 29 00:49 lib
drwxr-xr-x   5 root  wheel  720  5月 29 00:39 lib32
drwxr-xr-x   5 root  wheel    5  5月 29 00:49 libdata
drwxr-xr-x   9 root  wheel   68  5月 29 00:39 libexec
drwxr-xr-x  19 root  wheel   19 11月 15  2018 local
drwxr-xr-x   3 root  wheel    3  7月 13  2017 obj
drwxr-xr-x  72 root  wheel   92  5月 29 07:49 ports
drwxr-xr-x   2 root  wheel  305  5月 29 00:39 sbin
drwxr-xr-x  30 6151  wheel   30  5月 29 00:49 share
drwxr-xr-x  26 root  wheel   40  5月 29 00:34 src
drwxr-xr-x  15 root  wheel   18  7月 13  2017 tests

6151って誰だよ…。最早FreeBSD更新とは無関係になってきたので、続きは別記事で。