年末年始の休暇を利用して、管理しているFreeBSDサーバーのOSを更新しました。
今まで動かしていたOSは、FreeBSD 11.3。
このバージョンはサポートが終了していますが、運用上は特に問題ありません。しかし、このまま運用し続けると、過去の例から、近日中に portsnap, portupgrade や pkg コマンドでのメンテナンスがエラーを出力するようになり、メンテナンスし続けられなくなります。
FreeBSD 11.3 にこだわる理由はないので、サポートが継続されている11.4 に上げることにしました。12系 に上げることも考えましたが、まだ、マイナーが.2 なので、12系を使うのは11系のサポートが終わってからにしようと思います。
いつものようにFreeBSD の更新は freebsd-update コマンドにお任せ。
特にエラーも無く 5台のサーバーを更新できました。
しらばくは、何も気付かなかったのですが、1台のサーバーの daiy run out に
Checking userland and kernel versions: Userland and kernel are not in sync Userland version: 1103000 Kernel version: 1104001
という情報が含まれていることに気付きました。
検索してみると、これは、カーネルのバージョンと、ファイルシステム上のOSバージョンが異なるということ。
厳密に書くと、「uname -U」と「uname -K」のコマンド実行出力結果が異なるということ。
即、運用にダメージがある不具合ではありませんが、早期に解決すべき課題です。
しかし、何やったんだろう?今までこんな事は無かったのに。
Web検索しても、効果的な情報は出て来ず。
freebsd-update コマンドによるOS更新は、
- freebsd-update -r MM.m-RELEASE upgrade で、更新に必要なファイルをダウンロードし、設定ファイルを編集(必要なら。)
- freebsd-update install で結果を反映
- リブート
- もう一度、freebsd-update install で後処理。
- pkg upgrade でパッケージを更新
- もう一度、freebsd-update install でpkgの後処理。
という流れになります。
全部やったはずなんですが、5台もやっていると記憶が混濁しているのかもしれません。
今回の場合、カーネルは新しくなっているが、ファイルは古いまま ということを示していますので、まさか、手順4を実行し忘れた???
試しに、freebsd-update install を実行してみると、、、
# freebsd-update install src component not installed, skipped Installing updates... done.
あらら、実行出来てしまいました。実行し忘れていたみたいです。手順3までしか終了させていなかったのかも。
コマンドプロンプトが戻ってきた後、バージョンを確認するために uname コマンドを発行してみると
# uname -U -K 1104001 1104001
一致しました。
これで、明日以降の daily output レポートから、この問題は報告されなくなるでしょう。