2004/11/ 5

FreeBSD 5.2.1R→5.3Rアップグレード(FreeBSD, Install)

はじめに

本エントリではFreeBSD 5.2.1-RELEASEからFreeBSD 5.3-RELEASEにcvsupを使ってソースファイルからアップグレードする際の注意事項について書きました。

5.3Rになってもちろんここでは書ききれない程の修正や改良が入ってその全てを紹介することは出来ませんが、特に5.2.1から大きく変わった事と言えば以下のものだと思います。

  • 標準のXがXFree86からXorgに変更
  • gccの大幅なバージョンアップ
  • bindが9に上がって標準でchroot環境で動作するようになった

5.3Rのソースツリー取得

それではFreeBSD 5.3Rのソースツリーを取得しましょう。この記事を読んでいる日によっては5.3Rではなく、5.3R-p??になっているかもしれません。

以下のファイルを適当なディレクトリにsrc.cvsupとでも名前を付けて保存して「cvsup src.cvsup」を実行しましょう。

*default host=cvsup.jp.freebsd.org
*default base=/usr/local/etc/cvsup
*default prefix=/usr
*default release=cvs tag=RELENG_5_3
*default delete use-rel-suffix
*default compress
src-all

basesystemのbuild

先ずはbasesystemのビルドを行います。後の章で説明するkernelのビルドの前に行っておく必要があります。

/usr/objパーティションに十分な空きがあるのを確認後、以下のコマンドを打って数時間待機します。その間は別にログアウトしても構いません。

# cd /usr/src
# make buildworld >& world.log &

進行状況を確認したくなったら「tail -f /usr/src/world.log」で確認しましょう。

ちなみにbuildworldが終わるまで次の章のbuildkernelは実行してはいけません。おとなしく待ちましょう。

kernelのbuild

今まで5.2.1でGENERICカーネルを使用していた人は別に問題ないのですが、/usr/src/sys/i386/conf/GENERICの内容が増えたり減ったりしているので自前のカーネルを使用している人は元のGENERICファイルをベースに新たにオリジナルconfigファイルを作った方がいいと思います。

私は不要なLANカードやFirewire、RAID関連のオプションを削って独自の設定ファイルを使用しています。

さて、それではカーネルをビルドしましょう。以下のコマンドを打って数分待機します。例ではconfigファイル名はRABIになっていますので適宜修正してください。

# cd /usr/src
# make buildkernel KERNCONF=RABI

システムの入れ替え

カーネルのインストール

前章で作ったカーネルをインストールします。以下のコマンドでインストールします。KERNCONFのパラメータはGENERICの人は指定しなくて結構です。

# cd /usr/src
# make installkernel KERNCONF=RABI

mergemasterの実行

まだ再起動しないでください。以下のコマンドで/etc配下のファイル等を5.3R対応にします。

# mount -a
# mergemaster -svia
# mergemaster -svir

二番目のmergemasterは非常に手間がかかります。基本的には全然いじったことないファイルは「i」で上書き。自分で設定を書き換えたファイルは「m」でマージモードに入ったら、差分行一つ一つで左(旧)と右(新)のどちらを採用するか「l」「r」で決めていきます。

/etc/rc.d配下は普通は変更なんてしないのに殆ど全てのファイルでマージするか聞いてくるのでちょっとうっとうしいです。

実はそれでも、master.passwordとgroupがうまくマージ出来なかったので手動で追加設定しました。

proxy,_pflogdのユーザとproxy,authpf,_pflogdのグループが追加されていないと、basesystemのインストールが停止してしまいます。

basesystemのインストール

カーネルを差し替えたらシングルユーザモードで起動します。rootのコマンドプロンプトが出たら以下のコマンドでbasesystemをインストールします。

# cd /usr/src
# make installworld

/etc/namedbが今まで実体だったのが、/var/named/etc/namedbに移動しましたので、namedを動かす人は、/etc/namedbを別の名前にmvしておきましょう。/etc/rc.d/namedが起動するときに自動的に/etc/namedbがシンボリックリンクとして作成されます。

ここまで終了したら再起動すれば基本的にはFreeBSD 5.3Rへのアップグレードは完了です。

Xorgを入れる

つづいてFree86をXorgに入れ替えましょう。

portsコレクションは最新になっていますか?なっていなかったら以下のファイルを適当なディレクトリにports.cvsupとでも名前を付けて保存して「cvsup ports.cvsup」を実行しましょう。

*default host=cvsup.jp.freebsd.org
*default base=/usr/local/etc/cvsup
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
ports-all

さて、/usr/ports/UPDATINGを読んでいくと、20040723の記事にXorgへの移行の仕方が書いてあります。この通りにすれば良いのですが、簡単に説明しますと。

  • /etc/make.confに「X_WINDOW_SYSTEM=xorg」を追加
  • 「pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-*」を実行
  • 「cd /usr/ports/x11/xorg && make install clean」を実行
  • 「pkgdb -F」を実行(何か聞かれたら全てYesと答える)

でいけると思います。もちろん全てソースからビルドしますので時間はかかりますが、その時点での最新のXorgが入ります。

Xの設定は「xorgcfg」で行えるのですが…実は自宅のマシンはコンソールレスなので実験できていません。
/.Jの記事を引用します。

xorgcfgを使ってxorg.conf(XFree86におけるXF86Config)の雛型を作って、 それにこれまで使ってたXF86Configの内容(DefaultDepthとか)をmergeしてセットアップ終了。 デスクトップ環境を含むXアプリケーションも予想通り再コンパイルなしに無事起動しました。

portsを再コンパイルする

基本的にはインストール済みの全てのportsコレクションをビルドし直した方がいいのですが(gccが新しくなったため)、gcc++の標準ライブラリであるlibstdc++を使用しているアプリケーションは再コンパイルが必要です。

2ちゃんねるのFreeBSDスレからの情報ですが、以下のスクリプトを実行すると、libstdc++を使用しているパッケージの一覧が見ることが出来ます。

for f in /usr/local/{bin,libexec,sbin}/* /usr/local/lib/lib*.so.*; do
file $f | egrep -qs 'ELF.*(dyn|share)' && ldd $f | egrep -q 'libstdc\+\+' && pkg_which $f
done | sort -u

私の環境で実行したら以下の結果が出ました。

ImageMagick-6.0.6.2
gettext-0.13.1_1
libfpx-1.2.0.9

よって、ImageMagick,gettext,libfpxを「portupgrade -f パッケージ名」で強制再ビルドしてしまいます。

おわりに

一応家の環境では上記手順でうまくアップグレードは完了しました。

それぞれの人の環境によって手順が異なったり増えたりするかもしれません。是非その際はコメント頂ければ幸いです。

投稿者 yotan : 2004年11月 5日 00:00| トラックバック(0)
アンケート
このエントリは・・・
とても役に立った
役に立った
どちらとも言えない
あまり役に立たなかった
全く役に立たなかった
コメント
コメントする

※コメント内にURLを書くとSPAM扱いとなります。2ch風に表記はOKです










名前、アドレスを登録しますか?