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=""