FreeBSD Daily Topics

2008年10月17日≪ハウツー≫CURRENTを追いつづける方法

how to

Follow the current

FreeBSDの最新の機能を実験したり検証したりするにはFreeBSD CURRENTを追いつづける方法が有効です。実験的に機能が追加されるブランチであるためビルド不全になることや動作に問題が発生することもありますが、最近ではよりアグレッシブな開発はp4で実施され、CURRENTに取り込まれる機能は比較的固いものになりつつあります。

STABLEやRELEASEに先駆けて最新の機能を試したりその恩恵に預かるためには、CURRENTを追いつづけるというのは悪くない選択肢です。ここではCURRENTを追いつづける場合の方法を一通り紹介します。まず情報源として次の2つのメーリングリストに参加します。

ビルドに失敗する場合はfreebsd-currentにビルドエラーが表示されます。ビルドできるかどうかをチェックしたり、その他、currentに関係する情報を得るために活用します。svn-src-allにはコミットされた内容が流れます。できればすべてのメッセージに目を通してください。

次にソースツリーをCURRENTに同期するためにcsup(1)を動作させるための設定をおこないます。/etc/src.confの内容を次のように作成します。

リスト1 /etc/src.conf - csup(1)を使ってCURRENTのソースを追うための設定
# SUP
SUP_UPDATE?=    yes
SUP=            /usr/bin/csup
SUPFLAGS?=      -g -L 2
SUPHOST?=       cvsup.jp.FreeBSD.org

SUPFILE= /usr/share/examples/cvsup/standard-supfile

SUPFILE=で指定しているファイルの中身でタグの設定が「tag=.」のようになっていることを確認してください。これが他の値になっていると、CURRENTではなく他のブランチを追うことになります。次のようにしてソースツリーを最新のCURRENTに更新します。

最新のCURRENTソースコードを取得
% su
Password:
# cd /usr/src/
# make update

重要な変更や注意点、作業すべき内容などが/usr/src/UPDATINGファイルに記載されます。ソースツリーをアップデートしたら毎回/usr/src/UPDATINGファイルの内容を確認します。

最新のCURRENTソースコードを取得
# less UPDATING

/usr/src/でシステムの再構築と、カーネルの再構築およびインストールを実施し、システムを再起動します。再起動したシステムはシングルユーザモードで起動します。起動時のデーモン画面で⁠4⁠番を選択するとシングルユーザモードで機能できます。

システムの再構築、カーネルの再構築とインストールを実施
# make buildworld
# make buildkernel KERNCONF=コンフィグファイル名
# make installkernel KERNCONF=コンフィグファイル名
# reboot

シングルユーザモードで起動したらmount -aを実施してファイルシステムをマウントし、mergemaster -pでインストール前設定ファイルのマージ、installworldでシステムをインストールし、さらにインストール後にmergemasterで設定をマージします。

シングルユーザモードで起動してシステムをインストール、設定をマージ
# mount -a
# mergemaster -p
# cd /usr/src/
# make installworld
# make delete-old
# mergemaster
# reboot

システムを再起動したら次のようにして古いライブラリを削除します。

古いライブラリを削除
# make delete-old-libs

システムやカーネルを再構築した場合には再ビルドの必要性があるアプリケーションがあります。カーネルモジュールは基本的に再構築が必要です。たとえば次のようにして再構築の必要があるアプリケーションをportupgrade(ports-mgmt/portupgrade)を使って再構築します。

システム/カーネルアップデート後、関連アプリをアップグレード
# portupgrade -f nvidia-driver-173.14.12 hal-0.5.11_1 fusefs-kmod-0.3.9.p1.20080208_3 kqemu-kmod-1.3.0.p11_9

ちなみにnvidiaドライバは現状ではそのままではアップデートできません。FDT2008年9月22日を参考にして手動でアップグレードを実施してください。ここまで作業したらシステムを再起動します。

システム再起動
# reboot

CURRENTはデフォルトでデバッグ機能が有効になっています。このため常用する場合やベンチマーク試験を実施する場合には、これら機能をリリースと同じように無効化する必要があります。その場合、次のようにカーネル設定ファイルを作成してカーネルを再構築します。

リスト2 カーネル設定ファイル - デバッグ関連機能を無効化した場合
include GENERIC

ident           CURRENT

# disable - Debugging for use in -current
nooptions       KDB
nooptions       DDB
nooptions       GDB
nooptions       INVARIANTS
nooptions       INVARIANT_SUPPORT
nooptions       WITNESS
nooptions       WITNESS_SKIPSPIN

また、同じくmalloc(3)の動作の違いで処理が重くなることもあります。デバッグを実施しないのなら「ln ‐s ’aj⁠⁠ /etc/malloc.conf」のようにしてそうした機能を無効化しておきます。

おすすめ記事

記事・ニュース一覧