PR

FreeBSD OS メンテナンス 13.0 -> 13.1

FreeBSD
記事内に広告が含まれています。

私たちの FreeBSD のアプリケーションをメンテナンスしている間に OS 自身も 13.1 がリリースされました。そこで、今使用中の 13.0 から 13.1 へアップデートしてみたいと思います。私たちの FreeBSD の OS ではカスタマイズと言えるものは何にもしておりません。ですので、このアップデートは退屈なアップデート作業となると思います。が、とりあえずやってみましょう。

OS メジャーバージョンが同じなので、アプリケーション関係を触る必要が基本的にないことが大きいと思います。この辺りは次回 14.0-RELEASE が世に現れたときにやってみることができると思います。

マイナーバージョンアップデート

さて、現在のバージョンは 13.0-RELEASE-p11 です。アプリケーションもすべて最新のようです。

現状です。

まず最初の手順は 13.0 で最新かどうか調べます。アップデートがあるならば、パッチレベルを最新にしておきます。が、既に最新のようです。

OS のメンテナンスは freebsd-update コマンドで行います。

OS もアプリケーションも最新なので、13.1-RELEASE にアップデートします。

freebsd-update upgrade

同じく freebsd-update コマンドにバージョンを指定して実行します。詳しくは man freebsd-update を確認。

OS をインストールするときに選択したコンポーネントを覚えていますか?それらがアップデートされるコンポーネントと一致すれば OK なので次に進みます。

カスタムカーネルを使用していて generic カーネルを削除しているなどで、 kernel/generic が含まれていない場合は、一旦カスタムカーネルを generic に戻して、アップデート後再度カスタマイズを適用する。

必要なファイルをローカルにコピーして、その情報を基にしてアップデートの準備が行われます。

結構時間が …

ここまで結構時間がかかります。インストールするまで変更は何も行われないので、コーヒーでも飲みながらゆっくりと行いましょう。今回はマイナーアップデートなので、更新ファイルも少ないと思われますが、これがメジャーアップデートであったり、マイナーバージョンが離れていたりすると更新ファイルが多くなります。ディスクの空き容量には気を付けましょう。更新ファイルが準備できた後、設定ファイルなどで意図しない更新がある場合、こう変更するがこれで OK か?と聞いてきます。変更が複雑な場合はエディタによるファイルの編集を求められます。いずれの場合も diff の出力の見方がわかれば問題ないと思います。

yes or no ?

確認事項がすべてクリアとなれば準備完了です。指示通り更新ファイルをインストールします。

ここまででは何も変更は行われません。

freebsd-update install

freebsd-update install コマンドは2回実行します。最初はカーネルだけがアップデートされ、再起動して新しいカーネルを実行し、そのうえで再度実行し、新しいカーネルで動く OS ファイルをインストールしてゆきます。

カーネルが新しくなりました。

カーネルファイルがインストールされたので、再起動します。

残りを新しいカーネル上で行います。

これは不安定です 🙂 安定させましょう!

同じバージョンがベスト。

2回目の実行でカーネル以外をインストールして行きます。

アップデート中!

システム daemon で古いファイルモジュールが実行されている場合もあるので、再起動します。

最終ステップ。

freebsd-update fetch

13.1 がリリースされた直後なので、 13.1-RELEASE-p0 が最新のパッチレベルのようです。が、念のため、freebsd-update fetch で最新かどうか確認しておきます。

これで完了です。たぶん、最も簡単なアップデートになったと思います。ここまで OS アップデート手順に記載されたそのまんまで OK なのも珍しいと思います。OS のメジャーバージョンが同じである場合はアプリケーションのバイナリ互換が基本的に保証されているので、ポーツやパッケージに手を付ける必要もなく、設定ファイルの変更で質問されたのも /etc/group ファイルだけでした。これが例えば 12.3 から 13.1 へのアップデートなどの場合、freebsd-update install を3回実行することになります。2回目と3回目の間にすることがポーツやパッケージの再インストールを行います。このステップの目的は、別のディレクトリへ移動された 12.3 の OS 関係の共有ライブラリを使用して実行されているアプリケーションを 13.1 のライブラリを使用して実行できるようにする作業が必要となります。そのうえで3回目の freebsd-update install で古い共有ライブラリが削除されます。この辺りの情報がこちらに書かれておりますし、自身でも 14.0-RELEASE が世に出たときに堪能できると思います 🙂

freebsd-update rollback

最後に、OS アップデート後期待通りにアプリケーションが動くかどうかテストをすると思いますが、もし 13.1 にアップデートすることにより動かなくなった機能がある場合、行えることは2つあります。簡単そうであれば、そのままで問題を修正する。何が悪いのか簡単にわかりそうもないのであれば、元の 13.0 に戻して実験環境で再現後、再度 13.1 にするか、次回 13.2 がリリースされたときにアップデートと修正を適用する。後者を選択される場合、元の状態に戻すことが簡単にできます。アップデートで更新されたファイルは /var/db/freebsd-update ディレクトリに保存されています。

rollback オプションで元に戻します。

再起動して完了です。

再起動が必要です。

戻ってしまいました。お気づきかと思いますが、メジャーバージョンを跨いだアップデートやロールバックの場合、ポーツやパッケージの取り扱いに時間がかかります。基本的に rollback では新しいほうの OS の共有ライブラリは単に消えてなくなるので、13.1 で再作成されたポーツやパッケージの多くはロールバック後動かなくなる可能性が非常に高くなります。アップデートの場合は新旧両ライブラリが利用できますのでダウンタイムはアプリケーションの再起動の時間だけですが、ロールバックの場合はアプリケーションを作り直すまで動かないと思われるので、ダウンタイムが大きくなります。計画と実験が大切です。

さぁ、完璧でしょうか?全て OK なことが確認されたら不要になったファイルは削除しておきましょう。/var/db/freebsd-update をディレクトリごと削除して、同じ名前のディレクトリを作っておけば OK です。ディレクトリのモードは 700 のはずです。

以下広告


コメント