| トップ | Solaris | FreeBSD | Gentoo | CentOS | Fedora | Windows | Tips | 自宅サーバの動作確認 | サイト内検索(Namazu) | サイト内検索(HE) |
ここで述べるのはFreeBSDのバージョンをアップグレードする為の一般的な手順。
自分が試したのは
「FreeBSD6.0-RELEASE」→「FreeBSD6.1-RELEASE」
「FreeBSD6.1-RELEASE」→「FreeBSD6.2-RELEASE」
の2通り。
どのバージョンへでもアップグレードできる訳ではないので、基本的にドキュメントを参照する。
なお、当然の事ながら、この作業を行う前のバックアップは必須。
ソースの同期
システムのソースを現在のバージョンから新バージョンのソースに変更する。
FreeBSD# vi /usr/share/examples/cvsup/standard-supfile <= 設定ファイルの編集 *default host=CHANGE_THIS.FreeBSD.org ↓ *default host=cvsup2.jp.FreeBSD.org <= 近くのミラーサイトを指定 *default release=cvs tag=RELENG_6_1 ↓ *default release=cvs tag=RELENG_6_2 <= 新バージョンに変更 |
上記で指定したソースを取得し、同期をとる。
なお、cvsupを利用するので、導入していない場合はこちらを参照。
FreeBSD# cvsup -g -L 2 /usr/share/examples/cvsup/standard-supfile |
これで新バージョンのソースが取得出来る。
/usr/src/UPDATING
にアップグレード時の注意事項があるので、確認する。
また、必要なファイルのバックアップをとる。
/etc、/var、/home 以下が特に対象になると思われるが、環境による。
/usr/obj の削除
make worldを実行すると、構築されたものが/usr/obj 以下に作成される。
その為、以前に1回でもmake worldをしたことがある場合、/usr/obj 以下を削除する。
/usr/obj 下のファイルは動作しているシステムに影響がない上、
make buildworldの時間を短縮させ、依存問題のトラブルを回避する為にも削除した方が良い。
FreeBSD# cd /usr/obj FreeBSD# chflags -R noschg ./* <= 変更禁止フラグの解除 FreeBSD# rm -rf ./* |
ベースシステムの構築
まず、/usr/obj以下に新しい完全なディレクトリツリーを構築する。
FreeBSD# cd /usr/src <= ソースコードのあるディレクトリに移動 FreeBSD# make buildworld <= ディレクトリツリーの構築 |
カーネルの構築
新しいシステムを完全に利用するにはカーネルの再構築が必要。
FreeBSD# make buildkernel <= カーネルの再構築 FreeBSD# make installkernel <= カーネルのインストール |
システムの更新
システムの更新作業はシングルユーザモードで行うので、再起動し、Boot時の起動レベルの選択時にシングルユーザモードを選択する。
FreeBSD# sync;sync;sync FreeBSD# shutdown -r now <= 再起動 |
シングルユーザモードで起動したら、まずは以下のように実行する。
FreeBSD# fsck -p <= ファイルシステムの整合性チェック FreeBSD# mount -u / <= ルートパーティションを書き込み可能状態へ FreeBSD# mount -a -t ufs <= 他のファイルシステムをマウント(オプション) FreeBSD# swapon -a <= スワップの有効化(オプション) FreeBSD# adjkerntz -i <= カーネルクロックの調整(オプション) |
ビルドに必要な環境が整っているかを確認する。
FreeBSD# mergemaster -p |
ここまでの作業で特に問題が無ければシステムを更新する。
FreeBSD# cd /usr/src FreeBSD# make installworld |
FreeBSD6.1からは以下のコマンドで古いファイルやディレクトリ、ライブラリの存在の確認を出来る。
FreeBSD# cd /usr/src FreeBSD# make check-old <= 古いファイルやディレクトリ、ライブラリの確認 |
その為、FreeBSD6.1以降からアップグレードする場合、以下のようにして古いものを削除することが出来る。
FreeBSD# cd /usr/src FreeBSD# make delete-old <= 古いファイルやディレクトリを削除 FreeBSD# make delete-old-libs <= 古いライブラリを削除 |
設定ファイルの更新
/etc 以下のファイルは更新されないので更新する。
まず以下のコマンドで新たに用意された、古いシステムの/etc 以下には存在しないファイルを/etc にコピーする。
FreeBSD# mergemaster -siva |
次に以下のコマンドで、変更されたファイルの差分を確認しながら更新する。
FreeBSD# mergemaster -sivr |
ここで、2つのファイルからどのように更新するか選択するが、このとき利用できるコマンドは以下の通り。
| コマンド | 説明 |
|---|---|
| d | 古いファイルをそのまま残す(新しいファイルは削除) |
| i | 古いファイルに新しいファイルを上書きする |
| m | 画面が左右に分割され、古いファイルが左、新しいファイルが右に表示されるので一行ずつマージしていく。 |
個人的には、m コマンドは利用せず、後から手で修正した方がやりやすい。
mergemaster終了後、各種設定ファイルを反映させるか聞いてくるので、yを入力し、更新する。
マシンの再起動
以上でシステムがアップグレードされたので再起動する。
FreeBSD# sync;sync;sync FreeBSD# shutdown -r now <= 再起動 |
再起動後、以下のコマンドでアップグレードされたか確認する。
FreeBSD# uname -r 6.2-RELEASE <= アップグレード後のバージョン |