FreeBSDカーネルの再構築

オープンソースOSのよいところは, 全てが透過なので核となるカーネルから全てをカスタマイズすることができることである.

と宣っているが, 私は開発者ではないので設定ファイルを編集してコンパイルする程度のことしかしない(できない)ユーザである.

FreeBSDのいいところは亜種がなく, 完全に整理されたドキュメント (FreeBSD Handbook) にある通りの手順で設置・操作ができる点が挙げられる.

前置きはこのくらいにして, 今後の作業で参照できるようにメモである.

"New" Way

# cd /usr/src
# make buildkernel   KERNCONF=TIGER02
# make installkernel KERNCONF=TIGER02

TIGER02というのはカーネルの設定ファイル名.

この方法では, ソースファイルが全て揃っていなといけない (This method of kernel building requires full source files.). FreeBSD 5.3R から 5.4Rへアップグレードしたときにカーネルの設定を変更する必要があり, せっかくなので普段やっている方法 (後述: traditional way)とは違う方法でやってみた.

Linuxにくらべて凄く操作が単純だ.

そしてこれがtraditional way.

"Traditional" Way

# /usr/sbin/config TIGER02
# cd ../compile/TIGER02  
# make depend
# make
# make install

FreeBSD 5.0以前では2行目は "cd ../../compile/TIGER02" が正しい.

設定ファイル

デフォルトのパスは

/usr/src/sys/i386/conf/GENERIC

これを, ↑の例に合わせると

# cd /usr/src/sys/i386/conf
# cp GENERIC  TIGER02

とコピーしてから編集する.

NATを有効にする

FreeBSD 5.3R から 5.4Rへアップグレードしたときにデフォルトの設定ファイル (= GENERIC) でカーネルを再構築してしまったために, NAT (Network Address Translation)の機能が削られてしまった.

以下が, NATを有効にするために設定ファイル (/usr/src/sys/i386/conf/GENERIC など) へ追加する行.

options IPFIREWALL
options IPDIVERT

更に, /etc/rc.conf へ以下も必要.

gateway_enable="YES" 
firewall_enable="YES"
firewall_type="OPEN" 
natd_enable="YES"
natd_interface="fxp0"  ←NICにより異なる
natd_flags=""