カーネルの再構築
以下の作業中にカーネルの再構築が必要になったので、方法を調べて実施する。
jail内でのmount - 英語とプログラミング気まぐれ日記
現在のカーネルのバージョンを確認しておく
この作業は必須ではない。念の為。
$ sysctl kern.version kern.version: FreeBSD 7.3-RELEASE-p2 #0: Mon Jul 12 19:04:04 UTC 2010 root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
使用されているカーネルモジュールを調べる。
$ kldstat Id Refs Address Size Name 1 5 0xc0400000 a220cc kernel 2 1 0xc0e23000 6a500 acpi.ko 3 1 0xc277a000 4000 nullfs.ko 4 1 0xc27b6000 4000 fdescfs.ko
カーネルモジュールは /boot/kernel/ディレクトリ 以下に大量に存在するが、現在使用されているのは"acpi"、"nullfs"、"fdescfs"だけであることが分かった。
これらのモジュールだけコンパイルされるよう設定する
カーネルの設定ファイルを編集する。
ここでは、GENERICカーネルの設定ファイル "/usr/src/sys/i386/conf/GENERIC" をコピーして編集することにする。
GENERICカーネルの設定ファイル(GENERIC)を(CUSTOM_NULLFS)にコピー $ cd /usr/src/sys/i386/conf/ $ sudo cp GENERIC CUSTOM_NULLFS コピーしたファイルを編集。 kldstatで調べたモジュール名を空白区切りで指定する。 $ sudo vim CUSTOM_NULLFS makeoptions MODULES_OVERRIDE="linux acpi/acpi nullfs fdescfs" ※ モジュール名は /usr/src/sys/modules 以下にあるディレクトリ名らしい
カーネルのコンパイル
configの実行 コンパイル用のディレクトリが作成される $ cd /usr/src/sys/i386/conf/ $ sudo config CUSTOM_NULLFS コンパイル用のディレクトリに移動 $ cd /usr/src/sys/compile/CUSTOM_NULLFS コンパイルの実行 $ sudo make depend $ sudo make
現在のカーネルと入れ替える
$ sudo make install
再起動して、カーネルが変更されていることを確認。
$ sysctl kern.version kern.version: FreeBSD 7.3-RELEASE-p4 #0: Sun Apr 3 20:26:57 JST 2011 root@test-freebsd.dip.jp:/usr/src/sys/i386/compile/CUSTOM_NULLFS
おお、うまくいったみたい。