FreeBSDカーネルコンフィギュレーション
200210
木村健一郎
なぜカーネルコンフィグレーションを行う
か?
標準のカーネルでは組み込まれていないデ
バイスや機能を利用する
使用していないデバイスをカーネルからはず
起動の高速化、消費メモリ量削減
カーネル内部で持っている情報を変更する
使用するファイル
/usr/src/sys/i386/conf/MYKERNEL
コンフィグレーションファイル
標準で備わっているもの(GENERIC)をコピー
して作る
/usr/src/sys/i386/conf/LINT
コンフィグレーションファイルで指定可能なカー
ネルオプションの詳細
手順
1. #cp GENERIC MYKERNEL
2. コンフィグレーションファイル(MYKERNEL)を編
3. #config MYKERNEL
4. #cd ../../compile/MYKERNEL
5. #make depend
6. #make
7. #make install
8. 再起動
/usr/src/sys/i386/conf に移ってから行う
手順(2)
1. #make KERNCONF=MYKERNEL buildkernel
2. #make KERNCONF=MYKERNEL installkernel
3. #make install
4. 再起動
最近はこっちのほうがいいかも。
コンフィグファイルを書いたら、/usr/src で作業
コンフィグレーションファイル・必須オプション
machine i386
マシンのアーキテクチャ
cpu
CPUタイプを指定
現在主流のPentiumPro以降のCPUI686_CPU
ident
カーネルの識別名
maxusers
最大ユーザ数
プロセスの最大数を決定 20+16*maxusers
4.5R以降なら、0にしたらメモリ量から自動的に計算してくれる
その他のオプション(1)
makeoptions DEBUG=-g
カーネル再構築の際にgdbのデバッグオプショ
ンをつけて構築する
options MATH_EMURATE
i386i486SXなど浮動小数点演算部を持たな
CPUの場合カーネルにシミュレートさせる
i486DX以降のCPUであればコメントアウトして
もよい
Ethernet NICのドライバ
必要なものだけ残す
その他のオプション(2)
options IPFIREWALL
パケットフィルタリングのためのコード(IPFW)をカーネ
ルに組み込む
options IPFIREWALL_VERBOSE
syslogdを用いてパケットのログをとるためのコードを
有効にする
options IPFILTER
NATを用いるときに必要?
最近ならNATIPDIVER
その他のオプション(3)
一部のデバイスは注意。
SCSI系のデバイス(umassも含む)
Device scbus を忘れない
一部のNIC
Device miibus を忘れない
Fxp,dc,rlなど
カーネル周りはバージョンによって頻繁に変わるの
で、アップデート時には注意。Make worldしたら
かならず/usr/src/UPDATINGを読む
カーネルオプション
かなりのカーネルオプションは、再構築なしで設定
可能
Sysctlコマンドを使う
Man sysctl
一部の値は起動してしまったら書き換えできな
/etc/sysctl.confに書く
デバイスドライバ
一部のデバイスドライバは、実行時に組み込むこ
が可能
Man kldload
カーネルモジュールになってるドライバはこれで読み込
んで動くものもある(たとえばpcm
実習
カーネルの再構築を手順に従って行ってみてくだ
事前に自分のマシンのデバイスを調べておく(CPU
NICSCSIコントローラーの有無、etc・・・)
Dmesg コマンドや/var/run/dmesg.bootを参考に。
ここも参考にして下さい
The FreeBSD Project
http://www.jp.freebsd.org/