mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

FreeBSD - アップグレード手順!

[ pc_tips, サーバ構築 ] [ FreeBSD ]

こんばんは。

FreeBSD 9.1-Release がまもなく正式リリースされそうな今日この頃、今回はアップグレード方法についての記録を残しておくことにします。

以下の記録は、9.0-Release を 9.1-RC3 にアップグレードした時のものですが、9.1-Release が正式リリースされた際や他のバージョンでも同様だと思います。 元のバージョンがもっと古い場合は、手順等が異なる場合もあるも知れませんが。

作業記録

0. 前提条件

  • FreeBSD 9.0-RELEASE-p3 を FreeBSD 9.1-RC3 へアップグレードすることを想定。
  • カーネルはカスタムカーネルではなくGENERICカーネル(カーネルのカスタマイズは行なっていないこと)を想定。

1. 現バージョン確認

まず、現状のバージョンを確認してみる。

1
2
3
# uname -v
FreeBSD 9.0-RELEASE-p3 #0: Tue Jun 12 02:52:29 UTC 2012
root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC

2. セキュリティアップデート

現行のシステムに最新のセキュリティパッチを当てる。

1
2
# freebsd-update fetch
# freebsd-update install

3. マシン再起動

カーネルにセキュリティパッチを当てた場合には、システムを再起動する必要がある。 (特にアップデートが無かった場合は、再起動は不要)

1
# shutdown -r now

4. 差分コンポーネント取得

差分コンポーネントを取得する。

1
2
3
4
5
6
# freebsd-update upgrade -r 9.1-RC3

The following components of FreeBSD do not seem to be installed:
world/catpages world/games

Does this look reasonable (y/n)?

インストールされていないコンポーネントがあれば確認されるので、 “y” で応答する。

現状の設定ファイルを編集している場合は、以下のようになる。 Eneter キーを押下して vi を起動させて適切に編集する。

1
2
3
The following file could not be merged automatically: /etc/hosts.allow
Press Enter to edit this file in vim and resolve the conflicts
manually...
1
<<<<<<< current version

から

1
=======

までに記述されているのもが現状の状態で、以降

1
>>>>>>> 9.0-RELEASE

までに記述されているものが新しい状態なので、適切に編集する。 そして、当然、

1
2
3
<<<<<<< current version
=======
>>>>>>> 9.0-RELEASE

の行は削除する。

5. カーネルアップグレードの反映

取得した差分コンポーネントをインストールする。

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

6. マシン再起動

1
# shutdown -r now

7. ユーザランドコンポーネントインストール

カーネル部分のアップグレードが終了したので、ユーザランド部分のアップデートを行う。

1
2
# freebsd-update install
Installing updates... done.

8. マシン再起動

1
# shutdown -r now

9. 現バージョン確認

ここで、アップグレードができているかバージョンを確認してみる。

1
2
3
# uname -v
FreeBSD 9.1-RC3 #0 r242324: Tue Oct 30 00:58:57 UTC 2012
root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC

10. サードパーティ製ソフトウェアを再構築

※以下の 10 - 13 は「7. ユーザランドコンポーネントインストール」後に、サードパーティ製ソフロウェアのリビルドが必要という旨のメッセージが表示された場合のみ?

システム(カーネル+ユーザランド)はアップグレードできたが、サードバーティ製ソフトウェアは古いバージョンのシステム上で構築されたもののままなので再構築する必要がある。

マシンの性能にもよるが、全てのパッケージ DB を再構築するには相当の時間(数時間以上、場合によっては半日以上?)を要する。 時期を見て行うか、必要に応じて行なってもよいかも知れない。

以下では portupgrade コマンドを使用して全 ports を再構築している。 ( portupgrade は Ruby を使用するので、最初に Ruby をアップデートしている)

1
2
3
4
5
# portupgrade -f ruby
# rm /var/db/pkg/pkgdb.db
# portupgrade -f ruby18-bdb
# rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
# portupgrade -af

11. サードパーティ製ソフトウェアアップデートの反映

再構築されたパッケージ DB を反映させる。

1
# freebsd-update install

12. Ports 不要ファイルの削除

必要なら、Ports の不要なファイルを削除する。

1
# portsclean -CDP
  • -C は、portsディレクトリのworkディレクトリ内を消す。
  • -D は、古いバージョンを消す。
  • -P は、旧バージョンのpackageを消す。

13. マシン再起動

1
# shutdown -r now

14. システムの状態の比較

参考までに、インストールされている FreeBSD の状態と、 正しく動作することが分かっている状態とを比較できる。

1
2
# freebsd-update IDS >> outfile.ids
# cat outfile.ids | awk '{ print $1 }' | more

参考サイト


FreeBSD はメンテナンスは大変(時間がかかる)ですが、基本的に使用するマシンのためだけにコンパイル形になるので、動作は比較的軽いです。 また、サーバ用途に関して言えば、容易にセキュアなサーバが構築できます。

以上。

Comments