9.5. カスタムカーネルの構築とインストール
戻る | 第9章 FreeBSD カーネルのコンフィグレーション | 次へ

## 9.5. カスタムカーネルの構築とインストール

### 注記:

カーネルを構築するには、FreeBSD のすべてのソースファイルが必要です。

カーネルを構築する場所は、`/usr/src/sys` です。 ここには、カーネルの各部分を構成するサブディレクトリがいくつもあります。 その中には、カーネルコンフィグレーションファイルのある ``arch`/conf`、 および、カーネルを作る場所である `compile` も含まれています。 `arch` には、 サポートされている各アーキテクチャ、`i386`, `amd64`, `ia64`, `powerpc`, `sparc64` および `pc98` のサブディレクトリがあります。 各アーキテクチャのディレクトリ内部にあるファイルはすべてそのアーキテクチャでのみ使用されます。 残りのコードは、アーキテクチャに依存しない、 すべてのプラットフォームで共有されるコードです。 サポートされているデバイス、ファイルシステム、オプションが、 それぞれのサブディレクトリに分かれている、 という論理的な構成に注意してください。

この章で示されるコマンドの例は、 i386 アーキテクチャを仮定しています。 他のアーキテクチャのシステムでは、 使用しているアーキテクチャに適したパス名に変更してください。

### 注記:

もし、`/usr/src/` が存在していなかったり、空であれば、 カーネルのソースはインストールされていません。 ソースをインストールするもっとも簡単な方法は、「Subversion を使う」 で説明した svn を用いる方法です。 以下のように、`/usr/src/sys/` へのシンボリックリンクも作成してください。

`#` `ln -s /usr/src/sys /sys`

つぎに、cd を用いて ``arch`/conf` に移動し、 `GENERIC` コンフィグレーションファイルをカスタムカーネルの名前にコピーしてください。 たとえば次のようにします。

`#` `cd /usr/src/sys/`i386`/conf` `#` `cp GENERIC `MYKERNEL``

慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの FreeBSD マシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として ``MYKERNEL`` と呼ぶことにします。

### ヒント:

カーネルコンフィグレーションファイルの編集を終えたら、 ファイルのバックアップを `/usr/src` 以外の場所に保存してください。 `GENERIC` ファイルを直接編集しないでください。

もしくは、カーネルコンフィグレーションファイルは他の場所において、 ``i386`` にシンボリックリンクを張る方法もあります。

たとえば、次のようにします。

`#` `cd /usr/src/sys/`i386`/conf` `#` `mkdir /root/kernels` `#` `cp GENERIC /root/kernels/`MYKERNEL`` `#` `ln -s /root/kernels/`MYKERNEL``

``MYKERNEL`` をテキストエディタで編集してください。 デフォルトのエディタは vi で、 使い方については、 参考図書 にあるような多くの本で詳しく説明されています。 そちらを参照してください。初心者に対してより簡単なエディタである ee も利用できます。 まずファイルの最初の方のコメント行を編集し、 設定内容や `GENERIC` からの変更点を記述しておきましょう。

もし、`GENERIC` コンフィグレーションファイルが親しみにくいのであれば、コンフィグレーションファイル の節をゆっくりと注意深く読んでください。

### 注記:

最新のソースと ソースツリーを同期 したら、 何らかのアップデートを行う前に、必ず `/usr/src/UPDATING` をチェックしてください。 このファイルには、 アップデートされたソースコードに関する重要な問題や特別に注意すべき点がすべて書かれています。 `/usr/src/UPDATING` は常に FreeBSD のソースのバージョンと同期しているので、 ハンドブックの記述よりも新しい内容を含んでいます。

編集を保存したら、カーネルのソースコードをコンパイルしましょう。

手順9.1 カーネルの構築

### 注記:

カーネルを構築するには、FreeBSD のすべてのソースファイルが必要です。

1. `/usr/src` ディレクトリに `cd` で移動します。

   `#` `cd /usr/src`

2. カスタムコンフィグレーションファイルの名前を指定して新しいカーネルをコンパイルします。

   `#` `make buildkernel KERNCONF=`MYKERNEL``

3. 新しいカーネルをインストールします。

   `#` `make installkernel KERNCONF=`MYKERNEL``

### ヒント:

デフォルトでは、カスタムカーネルを構築すると すべて のカーネルモジュールが再構築されます。 カーネルのアップデートをより早く行いたい、または、 カスタムモジュールのみを構築したいといった場合は、 カーネルの構築を開始する前に、以下のように `/etc/make.conf` を編集してください。

MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs

この変数は、すべてのモジュールを構築するというデフォルトの設定にかわり、 構築するモジュール一覧を指定します。

WITHOUT_MODULES = linux acpi sound ntfs

この変数は、構築を行わないトップレベルのモジュールを指定します。 カーネルの構築プロセスに関連する、他の変数については、 make.conf(5) を参照してください。

新しいカーネルは `/boot/kernel` に `/boot/kernel/kernel` という名前でコピーされ、 今までのカーネルは `/boot/kernel.old/kernel` という名前へ変更されます。 では、新しいカーネルを使うために、システムをシャットダウンして再起動してください。 うまく行かない場合は、 問題が起きた場合には や、新しいカーネルが 起動しない 場合のリカバリの方法を参照してください。

### 注記:

ブートローダ (loader(8)) や設定などのブートプロセスに関係する他のファイルは、 `/boot` に置かれます。 サードパーティ製やカスタムモジュールを `/boot/kernel` に置くこともできますが、 コンパイルしたカーネルとモジュールを同期しておく必要があります。 コンパイルしたカーネルとモジュールが対応していないと、 システムが不安定になる可能性があります。

戻る | 上に戻る | 次へ
9.4. カーネルドライバ、サブシステムとモジュール | ホーム | 9.6. コンフィグレーションファイル

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、 ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、 <doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。