FreeBSD 11.4: Userland and kernel are not in sync

年末年始の休暇を利用して、管理している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更新は、

  1. freebsd-update -r MM.m-RELEASE upgrade で、更新に必要なファイルをダウンロードし、設定ファイルを編集(必要なら。)
  2. freebsd-update install で結果を反映
  3. リブート
  4. もう一度、freebsd-update install で後処理。
  5. pkg upgrade でパッケージを更新
  6. もう一度、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 レポートから、この問題は報告されなくなるでしょう。

コメントを残す