satoshiabe.jp : Building a custom kernel

HOME > DOCUMENTS > FreeBSD > Specify the type of CPU

Building a custom kernel

Updated : 2006/07/04
Created : 2006/07/04

まえがき

前提条件

メリット

最新のソースファイルを入手する

CPU タイプを確認する

カーネルファイルを編集する

カーネルを生成する

新しいカーネルで起動する

リンク

まえがき

カスタムカーネルを作成する。

本ページでは、CPU タイプを最適化したカスタムカーネルを作成する。

前提条件

この文書は以下の条件を想定している

i386 アーキテクチャのマシンを使用していること

FreeBSD 6.1-RELEASE

メリット

カスタムカーネルが使用している FreeBSD にもたらす一般的なメリット

起動時間を短くできる

メモリの消費を最低限に抑えられる

追加したハードウェアをサポートできる

最新のソースファイルを入手する

ソースファイルを入手すため、standard-supfile を編集する。

# cp /usr/share/examples/cvsup/standard-supfile /root/ # vi /root/standard-supfile *default host=cvsup3.jp.FreeBSD.org *default release=cvs tag=RELENG_6_1

CVSup を実行する。

# /usr/local/bin/cvsup -g -L 2 /root/standard-supfile Parsing supfile "/root/standard-supfile" Connecting to cvsup3.jp.FreeBSD.org Connected to cvsup3.jp.FreeBSD.org Server software version: SNAP_16_1h Negotiating file attribute support Exchanging collection information Establishing multiplexed-mode data connection Running Updating collection src-all/cvs Shutting down connection to server Finished successfully #

CPU タイプを確認する

自分が使用している CPU タイプを確認する。 dmesg コマンドを実行する or /var/run/dmesg.boot ファイルを表示すると、下線の部分に CPU タイプが表示されていることを確認できる。

Copyright (c) 1992-2006 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 6.1-RELEASE-p2 #0: Sun Jul 2 18:29:01 JST 2006 root@panther.example.com:/usr/obj/usr/src/sys/SMP Timecounter "i8254" frequency 1193182 Hz quality 0 CPU: Intel(R) Pentium(R) M processor 1700MHz (1694.51-MHz 686-class CPU)

カーネルファイルを編集する

もう一度、dmesg コマンドの内容を確認してみる。

Copyright (c) 1992-2006 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 6.1-RELEASE-p2 #0: Sun Jul 2 18:29:01 JST 2006 root@panther.example.com:/usr/obj/usr/src/sys/SMP

GENERIC カーネルでなく、SMP カーネルを使用していることを確認できる。 内容を確認してみる。

# cd /usr/src/sys/i386/conf # cat SMP # # SMP -- Generic kernel configuration file for FreeBSD/i386 SMP # Use this for multi-processor machines # # $FreeBSD: src/sys/i386/conf/SMP,v 1.5.6.1 2005/09/18 03:37:58 scottl Exp $ include GENERIC ident SMP-GENERIC # To make an SMP kernel, the next line is needed options SMP # Symmetric MultiProcessor Kernel

カーネルのコンフィグレーションファイル SMP は、GENERIC カーネルをインクルードしているようだ。 CPU タイプは GENERIC カーネルで指定されている(後述)ため、GENERIC カーネルのコンフィグレーションファイルを編集することになる。

尚、素の GENERIC ファイルは、最新のソースファイルを取得するたびに上書きされるため、決してこのファイルを上書きして使用しないこと。

まず、GENERIC カーネルをコピーして適当な名前(ここではホストネーム)をつける。 慣例として、全て大文字で名前(今回は PANTHER とする)づけする。

# cd /usr/src/sys/i386/conf/ # cp GENERIC PANTHER

PANTHER ファイルの内容を

machine i386 cpu I486_CPU cpu I586_CPU cpu I686_CPU ident GENERIC

以下のように i686 だけを指定するよう変更する。

machine i386 #cpu I486_CPU #cpu I586_CPU cpu I686_CPU ident GENERIC

SMP ファイルのオリジナルの内容は以下のとおり。

# cat SMP # # SMP -- Generic kernel configuration file for FreeBSD/i386 SMP # Use this for multi-processor machines # # $FreeBSD: src/sys/i386/conf/SMP,v 1.5.6.1 2005/09/18 03:37:58 scottl Exp $ include GENERIC ident SMP-GENERIC # To make an SMP kernel, the next line is needed options SMP # Symmetric MultiProcessor Kernel

SMP ファイルもコピーしたファイルを編集することにする。

# cp SMP SMP-PANTHER

編集した内容は以下のとおり。 include の対象を変更した。

# cat SMP-PANTHER # # SMP -- Generic kernel configuration file for FreeBSD/i386 SMP # Use this for multi-processor machines # # $FreeBSD: src/sys/i386/conf/SMP,v 1.5.6.1 2005/09/18 03:37:58 scottl Exp $ include PANTHER ident SMP-GENERIC # To make an SMP kernel, the next line is needed options SMP # Symmetric MultiProcessor Kernel

カーネルを生成する

config(8) コマンドを実行し、カーネルのソースコードを生成する。 実行して結果が表示されると、次に実行するコマンドが表示されいてる。

# /usr/sbin/config SMP-PANTHER Kernel build directory is ../compile/SMP-PANTHER Don't forget to do ''make cleandepend; make depend'' #

config コマンドを正常に終了できたら、続いて以下のコマンドを実行する。

# cd ../compile/SMP-PANTHER # make cleandepend # make depend # make all install

新しいカーネルで起動する

新しいカーネルで起動するため再起動する。

# /sbin/shutdown -r now

起動したら、再び dmesg コマンドを実行するか /var/run/dmesg.boot ファイルを開いて、どのように変化したのか確認してみること。

リンク

Configuring lthe FreeBSD Kernel (freebsd.org)

Email to Satoshi ABE