kernel の再構築FreeBSD をインストールした時点では GENERIC kernel と呼ばれる kernel がインストールされています。 これは、様々な環境へのインストールを問題なく進めるために、 あらかじめ多くのデバイスに対応できるように、多くのドライバの組み込まれた、 比較的大きな kernel です。 この GENERIC kernel をそのまま使っても構わないのですが、 通常は自分の環境に応じて不要なドライバを切り離したコンパクトな kernel を再構築して運用します。また、GENERIC kernel に含まれないような kernel の機能を使いたい場合にも kernel の再構築は必要です。 ここでは kernel の再構築の手順を紹介します。 基本的に FreeBSD 4.x ベースの内容ですが、他のバージョンにおいても参考になるでしょう。 FreeBSD ハンドブックの『9. FreeBSD カーネルのコンフィグレーション』 にも詳しく手順が記述されていますので、そちらも参照しておくと良いでしょう。 日本語版のハンドブックは /usr/share/doc/ja/books/handbook 配下に格納されています。 index.html から辿れるので w3m 等テキストベースのブラウザを使ってハンドブックを参照しながら作業を進めるのが確実です。 # cd /usr/share/doc/ja/books/handbook # w3m ./index.html なお、最新のハンドブックの日本語役が以下の Web で参照できますので、 こちらも活用してください。 FreeBSD ハンドブック http://www.jp.FreeBSD.org/www.FreeBSD.org/ja/handbook/ 以下、僕の作業手順を紹介します。 1. コンフィグレーションファイルを作成する 作成する kernel の設定を記述したコンフィグレーションファイルを作成します。 この記述にしたがって kernel が作成されます。デフォルトの kernel のことを GENERIC kernel と呼びますが、この GENERIC kernel のコンフィグレーションファイルが /usr/src/sys/i386/conf/GENERIC です。
GENERIC kernel のコンフィグレーションファイルをベースにして、 自分用のコンフィグレーションファイルを生成していきます。 まずは、GENERIC を自分のカーネルコンフィグレーションファイルとしてコピーします。 この時のファイル名はホスト名を使う習慣がありますが、特に制限があるわけではありません。 なんだって構いません。 以下の例では僕の環境に合わせて SAPPHIRE というファイル名にしてあります。 # cd /usr/src/sys/i386/conf # cp GENERIC SAPPHIRE コピーした SAPPHIRE というファイルを適当なエディタで編集します。 基本的にハンドブックの『9.4. コンフィグレーションファイル』を参考にしてください。 僕の場合のポイントを以下に記しておきます。
2. config を実行する コンフィグレーションファイルが用意できたら config(8) を実行します。 引数はコンフィグレーションファイルです。 # cd /usr/src/sys/i386/conf # config SAPPHIRE Don't forget to do a ``make depend'' Kernel build directory is ../../compile/SAPPHIRE config を実行すると上記のようにメッセージが出力されます。 メッセージの通り ../../compile/SAPPHIRE に make 用のディレクトリが作成されます。 古い make 環境が残っている場合にコンパイルが上手く行かないことがあります。 その場合はあらかじめ、make 用ディレクトリを削除してから config を実行します。 3. make を実行する config 実行時に出力されたメッセージにしたがってディレクトリを移動し、 make depend と make を実行します。 # cd ../../compile/SAPPHIRE # make depend # make コンフィグレーションファイルの記述が適切でなく、依存関係の整合性が取れていない場合は make depend で失敗しますので、再度コンフィグレーションファイルの作成からやり直します。 例えば fxp を使うのに miibus が入っていない場合などは、ここでエラーします。 僕は make depend が成功したらそのまま make を実行するように、以下のようにしています。 # make depend && make make が実行されると kernel がコンパイルされます。 4. kernel をインストールする make が正常に完了したら、続けて make install を実行して、 新しい kernel をインストールします。 # make install 作成した新しい kernel が /kernel としてインストールされます。 これまで使っていた古い kernel は /kernel.old として残っているので、 もし、おかしな kernel を作ってしまった場合は /kernel.old を使って起動することで、 元の環境に戻すことが出来ます。 なお、GENERIC kernel は /kernel.GENERIC として残っているので、 自分で消さない限り消えることはありません。 僕の環境では以下の通りで、GENERIC kernel に比べて 1MB 以上も小さくなっています。 -r-xr-xr-x 1 root wheel 2309767 Jul 5 20:15 /kernel -r-xr-xr-x 1 root wheel 3773568 Jun 11 15:14 /kernel.GENERIC 5. 新しい kernel で再起動する 作成した kernel のインストールが完了したら、あとはリブートするだけです。 # cd / # shutdown -r now これで無事新しい kernel で起動したら作業完了です。 TetsuoSTREAMS > FreeBSD > kernel の再構築 |