カーネルモジュールを選別的にコンパイル2008年05月09日 12時26分13秒

時折、カーネルに変更を加えて実験をすることがある。カーネルとは言っても、そんなに根本的な部分ではなく、ファイルシステムや、GEOM といったカーネルモジュールになっている物ばかりだ。

今までは、一回変更する毎に、make buildkernel を行なっていた。そのままだと、全てのモジュールを再コンパイルし直す。そこで、NO_CLEAN=yes を make.conf に入れて、make clean は抑えておいた。しかし、それでも、カーネルモジュールに対し make のサブプロセスが大量に生成されるので、それなりに時間が掛かる。

ttt:(VMware)FreeBSD 6.1Rのカーネル再構築(2) 不要なモジュールをビルドしないようにするに、必要なカーネルモジュールのみをコンパイルする方法が紹介されていた。MODULES_OVERRIDE を用いて、カーネルモジュールを指定すれば良いそうだ。

man make.conf をしたら、他にも WITHOUT_MODULES といって、逆に指定したモジュールを除外するオプションもある。PORTS_MODULES にはカーネルを作り直す度に、コンパイルをやり直したい ports を並べておくらしい。kqemu.ko などの様な ports から入れるカーネルモジュールの為の様だ。

MODULES_OVERRIDE で、カーネルモジュールで実験するのが楽になりそうだ。