FreeBSD
カーネルコンフィギュレーション
2002
年
10
月
木村健一郎
なぜカーネルコンフィグレーションを行う
か?
標準のカーネルでは組み込まれていないデ
バイスや機能を利用する
使用していないデバイスをカーネルからはず
す
起動の高速化、消費メモリ量削減
カーネル内部で持っている情報を変更する
使用するファイル
/usr/src/sys/i386/conf/MYKERNEL
コンフィグレーションファイル
標準で備わっているもの(
GENERIC
)をコピー
して作る
/usr/src/sys/i386/conf/LINT
コンフィグレーションファイルで指定可能なカー
ネルオプションの詳細
手順
1.
#cp GENERIC
MYKERNEL
2.
コンフィグレーションファイル(
MYKERN
EL
)を編
集
3.
#config
MYKE
RNEL
4.
#cd ../.
./compile/MYK
ERNEL
5.
#make depen
d
6.
#make
7.
#make install
8.
再起動
/usr/src/sy
s/i386/conf
に移ってから行う
手順(2)
1.
#make KE
RNCONF=MYKERNEL buildkernel
2.
#make KE
RNCONF=MYKERNEL installk
ernel
3.
#make i
nstall
4.
再起動
最近はこっちのほうがいいかも。
コンフィグファイルを書いた
ら、
/usr/src
で作業
コンフィグレーションファイル・必須オプション
machine i386
マシンのアーキテクチャ
cpu
CPU
タイプを指定
現在主流の
P
en
tiumPro
以降の
CPU
は
I
686_CPU
ident
カーネルの識別名
maxusers
最大ユーザ数
プロセスの最大数を決定
20+16*ma
xusers
4.5R
以降なら、
0
にしたらメモリ量から自動的に計算して
くれる
その他のオプション
(1)
mak
eoptions DEBUG=
-g
カーネル再構築の際に
gdb
のデバッ
グオプショ
ンをつけて構築する
options MA
TH_EMURA
TE
i386
や
i486SX
など浮動小数点演算部を持たな
い
CPU
の場合カーネルにシミュレートさせる
i486DX
以降の
CPU
であればコメントアウトして
もよい
Ethernet NIC
のドライバ
必要なものだけ残す
その他のオプション
(2)
options
IPFIREW
ALL
パケットフィルタリングのためのコード
(IPFW)
をカーネ
ルに組み込む
options
IPFIREW
ALL_VERBOSE
syslogd
を用いてパケットのログをとるためのコードを
有効にする
options
IPFI
L
TER
NA
T
を用いるときに必要
?
最近なら
NA
T
は
IPDI
VER
で
その他のオプション
(3)
一部のデバイスは注意。
SCSI
系のデバイス(
umass
も含む)
Device scbus
を忘れない
一部の
NIC
Device miibus
を忘れない
Fxp
,d
c,rl
など
カーネル周りはバージョンによって頻繁に変
わるの
で、アップデート時には注意。
Make
world
したら
かならず
/usr/src/UPDA
TING
を読む
。
カーネルオプション
かなりのカーネルオプションは、再構築なしで設定
可能
S
ysctl
コマンドを使う
Man sysctl
一部の値は起動してしまったら書き換えできな
い
/etc/sysctl.conf
に書く
デバイスドライバ
一部のデバイスドライバは、実行時に組み込むこ
と
が可能
Man
kldload
カーネルモジュールになっ
てるドライバはこれで
読み込
んで動くものもある(たとえば
pcm
)
実習
カーネルの再構築を手順に従って行
ってみてくだ
さ
い
事前に自分のマシンのデバイスを調べておく(
CPU
、
NIC
、
SCSI
コントローラーの有無、
etc
・・・)
Dmesg
コマンドや
/v
ar/run/dmesg.boot
を参考に。
ここも参考にして下さい
The FreeBSD
Project
http://www
.jp.fr
eebsd.org/