コンフィグレーションファイルの一般的なフォーマットはとてもシンプルです。
各行は 1 つのキーワードと 1 つ以上の引数を含んでいます。
見やすくするために、ほとんどのキーワードは引数を 1 つしか書いてありません。
#
に続くものはすべてコメントとして扱われ、
無視されます。ここでは、それぞれのキーワードについて
GENERIC
に出てくる順番で説明します。
アーキテクチャ依存のおびただしい数のオプション一覧については、
そのアーキテクチャの GENERIC
と同じディレクトリにある NOTES
ご覧ください。
アーキテクチャに依存しないオプションについては、
/usr/src/sys/conf/NOTES
ファイルをご覧ください。
コンフィグレーションファイルでは include
ディレクティブを利用できます。
コンフィグレーションファイルに他のファイルを取り込むことができるので、
すでに存在するファイルに対する小さな変更を簡単に維持できます。
たとえば、オプションやドライバの追加が少しだけの場合には、
以下のように GENERIC からの差分だけの管理が可能になります。
この方法では、ローカルのコンフィグレーションファイルには、
ローカルにある GENERIC
カーネルとの差分が記述されています。
アップグレードが行われると、
GENERIC
に追加された新しい機能は、
(nooptions
や nodevice
によって外されない限り) ローカルのカーネルにも反映されます。
コンフィグレーションの構成要素に関する包括的な一覧と説明は
config(5) にあります。
この章のここから先は、典型的なコンフィグレーションファイルの中身と、 さまざまなオプションやデバイスの役割について説明します。
利用可能なすべてのオプションを含むファイルを構築するには、
以下のコマンドを root
権限で実行してください。
#
cd /usr/src/sys/i386
/conf && make LINT
以下は必要に応じてコメントを追加した
GENERIC
カーネルのコンフィグレーションファイルの例です。
この設定例は
/usr/src/sys/
に極めて近いものになっているはずです。i386
/conf/GENERIC
マシンのアーキテクチャです。これは
amd64
, i386
,
ia64
, pc98
,
powerpc
または
sparc64
のいずれかでなければなりません。
このオプションは、CPU タイプを指定します。
複数の CPU エントリを書いても構いませんが、
カスタムカーネルを作る場合、使用する CPU だけを指定するのがベストです。
CPU のタイプを判断するには、
/var/run/dmesg.boot
にある起動メッセージを調べるとよいでしょう。
これはカーネルの識別名です。
たとえば、
のように、新しいカーネルに付けたい名前に書き換えて下さい。
MYKERNEL
ident
に書いた値はカーネルを起動する時に表示されます。
デバイスドライバのオプションは device.hints(5)
を用いて設定されます。
デフォルトの場所は
/boot/device.hints
です。
hints
オプションを用いると、
カーネルにこれらのヒント情報を静的に加えてコンパイルするので、
device.hints
を作成する必要はありません。
このオプションは gcc(1) がデバッグ情報を生成するようにします。
FreeBSD のデフォルトのスケジューラです。 このオプションはこのままにしてください。
優先度の高いカーネルスレッドがプリエンプションできるようにします。 このオプションを使うことでインタラクティブになり、 待ち状態になるよりすぐに実行状態になるようスレッドの割り込みを許可します。
ネットワークのサポート。 ほとんどのプログラムは少なくともループバックネットワークを必要とするので、 基本的にこの行は必須です。
このオプションは IPv6 通信プロトコルを利用可能にします。
これは標準のハードドライブファイルシステムです。 システムがハードディスクから起動する場合は残して下さい。
このオプションは、カーネル内の Soft Updates 機能を有効にし、
ディスクへの高速な書き込みを支援します。
カーネルがこの機能を提供していても、
特定のディスクに対してはこのオプションを有効にする必要があります。
mount(8) の出力を見て、
Soft Updates が有効になっているかどうかを確認してください。
soft-updates
オプションが見当たらなければ、
現在使用しているファイルシステムには tunefs(8)、
新規のファイルシステムには newfs(8)
コマンドで有効にできます。
このオプションは、カーネルのアクセス制御リスト (ACL) のサポートを有効にします。 この機能は拡張属性および UFS2 が有効になっていることに依存し、 「ファイルシステムアクセス制御リスト」 で機能の説明が行われています。 ACL はデフォルトで有効にされています。 もし、これまでにファイルシステムで有効にしていたのであれば、 カーネルの中で無効にすべきではありません。 なぜなら、無効にすると ACL が削除され、 ファイルの保護が予想できない方法で行われるためです。
このオプションは、メモリを多少余分に食うものの、 大きなディレクトリに対するディスク操作を高速化する機能を有効にします。 大規模なサーバや対話的なワークステーションではこのオプションを残しておいて、 ファイアウォールのように、 メモリが貴重でディスクアクセス速度がそれほど重要でない小規模なシステムでは削除するとよいでしょう。
このオプションは、メモリディスクによる root デバイスのサポートを有効にします。
ネットワークファイルシステム (NFS)。 NFS ファイルサーバから TCP/IP を介してパーティションをマウントするのでない限り、 これらの行をコメントアウトできます。
MS-DOS® ファイルシステム。
起動時に DOS でフォーマットされたハードドライブのパーティションをマウントするのでなければ、
この行はコメントアウトできます。
この機能は最初に DOS パーティションをマウントする時に自動的にロードされます。
emulators/mtools
package
を使うと、マウント、アンマウントすることなしに DOS
フロッピーにアクセスすることができ、
MSDOSFS
を必要としません。
CD-ROM 用の ISO 9660 ファイルシステム。 もしシステムが CD-ROM ドライブを持っていないか、 ときどきデータ CD をマウントするだけなら、 データ CD を最初にマウントする時に自動的にロードされるので、 この行をコメントアウトしてください。 音楽 CD はこのファイルシステムを必要としません。
プロセスファイルシステム。
これは /proc
にマウントされるもので、他のプログラムに、
どんなプロセスが走っているかについて、
より多くの情報を提供する事ができます。
ほとんどのデバッグおよびモニタリングツールが
PROCFS
なしで起動するので、
ほとんどの環境では PROCFS
を必要としません。
デフォルトのインストールではこのファイルシステムをマウントしません。
カーネルで PROCFS
を使う場合には、
PSEUDOFS
のサポートが必要です。
GUID パーティションテーブル (GPT) に対応します。 GPT では、1 つのディスクに数多くのパーティション (標準の構成では最大 128) を作成可能です。
4.3BSD との互換機能です。 有効なままにして下さい。 この行をコメントアウトするとおかしな動きをするプログラムがあります。
このオプションは、 古いバージョンの FreeBSD でコンパイルされた古いシステムコールインターフェースを用いるアプリケーションを利用する場合に必要とされます。 古いアプリケーションを実行するすべての i386™ システムで、このオプションの利用を推奨します。 FreeBSD 4.X より後にサポートされた ia64 や SPARC64® といったプラットフォームでは、このオプションは必要ありません。
このオプションは、 FreeBSD 5.X でコンパイルされた FreeBSD 5.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。
このオプションは、 FreeBSD 6.X でコンパイルされた FreeBSD 6.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。
このオプションは、FreeBSD 8 以降において、 FreeBSD 7.X でコンパイルされた FreeBSD 7.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。
この行は、カーネルがそれぞれの SCSI 機器を検出する前に 5 秒間待つようにします。 システムが IDE ドライブしか持たないなら無視するか、 起動時間を短くするために、この数字を小さく変更できます。 もし、FreeBSD が SCSI 機器を認識しなくなってしまったら、もう一度数字を増やしてください。
この行はデバッグに役立つカーネルプロセスのトレースを可能にします。
このオプションは System V 共有メモリを提供します。 この機能の最も一般的な使用方法は X における XSHM 拡張です。 多くのグラフィックス重視のプログラムではこの機能を自動的に描画のスピードアップに利用します。 Xorg がインストールされているなら、 これを含めてください。
System V のメッセージのサポート。 このオプションはカーネルサイズを数百バイト大きくするだけです。
System V セマフォのサポート。 あまり使われませんが、カーネルサイズは数百バイト大きくなるだけです。
ipcs(1) を -p
で実行すると、これらの System V
機能を使っているプロセスのリストを表示します。
リアルタイム拡張が 1993 POSIX® に追加されました。 Ports Collection の内のいくつかのアプリケーションはこれを使っています。
キーボードデバイスノードを /dev
に作成するにはこのオプションが必要です。
このデバイスは、I/O APIC の割り込みを有効にします。
ユニプロセッサおよび SMP カーネル両方で使用できますが、
SMP カーネルでは必須です。
マルチプロセッサに対応するには
options SMP
を追加してください。
このデバイスは i386 アーキテクチャにのみ存在します。 他のアーキテクチャでは、この行を含まないでください。
システムが EISA マザーボードを持っている場合、 この行を含めて下さい。これは EISA バスに接続されているすべてのデバイスの自動検出と設定を可能にします。
システムが PCI マザーボードを持っている場合、この行を含めて下さい。 これは PCI カードの自動検出と PCI から ISA バスへのゲートウエイを可能にします。
これはフロッピーディスクコントローラです。
このドライバはすべての ATA と ATAPI デバイスをサポートします。
最近のマシンでは device ata
行を
1 行書くだけですべての PCI ATA/ATAPI デバイスを検出することができます。
ATA ディスクドライブには device ata
と共にこの行が必要です。
ATA RAID ドライブには
device ata
と共にこのデバイスが必要です。
ATAPI CDROM ドライブには device ata
と共にこの行が必要です。
ATAPI フロッピードライブには device ata
と共にこの行が必要です。
ATAPI テープドライブには device ata
と共にこの行が必要です。
この行はコントローラ番号を静的に割り当てます。 このオプションがない場合、デバイス番号は動的に割り当てられます。
このセクションでは、
システムにない SCSI コントローラはコメントアウトして下さい。
もし IDE しかないシステムならこれらすべてを削除できます。
*_REG_PRETTY_PRINT
行は、
対応するドライバに対するデバッグオプションです。
システムにない SCSI 周辺機器はコメントアウトしてください。 もし IDE しか持っていないならこれらを完全に削除できます。
USB umass(4) ドライバ、およびその他のいくつかのドライバは、 本当の SCSI デバイスではないにもかかわらず、 SCSI サブシステムを利用します。 そのようなドライバがカーネルコンフィグレーションに含まれている場合には、 SCSI サポートを削除しないでください。
サポートされる RAID コントローラです。 システムがこれらのどれも持っていない場合には、 すべてをコメントアウトもしくは削除してください。
atkbdc
キーボードコントローラは
AT キーボードおよび PS/2 スタイルポインティングデバイスの
I/O サービスを提供します。
atkbd(4) および psm(4)
はこのコントローラを必要とします。
atkbd(4) ドライバ。 atkbdc(4) コントローラと協調して動作し、 AT キーボードコントローラに接続された AT 84 キーボードや AT 拡張キーボードへのアクセスを提供します。
マウスが PS/2 マウスポートに接続するタイプならこのデバイスを使って下さい。
標準のキーボードマルチプレクサのサポート。 システムが 2 つ以上のキーボードを用いなければ、 この行を削除してもかまいません。
vga(4) ビデオカードドライバです。
起動時のスプラッシュスクリーンおよびスクリーンセーバが必要とします。
sc(4) は SCO に類似したデフォルトのコンソールドライバです。
殆どのフルスクリーンのプログラムは termcap
のようなターミナルデータベールライブラリにアクセスするので、
sc
を使うか VT220
互換のコンソールドライバである vt
を使うかは重要ではありません。
ログイン時、このコンソールでフルスクリーンプログラムが動かないときは
TERM
変数を scoansi
に設定して下さい。
これは VT220 互換のコンソールドライバで、
VT100/102 と後方互換性があります。
sc
とハード的に互換性がないラップトップでも問題なく動きます。
ログイン後、TERM
を
vt100
又は vt220
と設定して下さい。
vt100
は仮想的にすべてのプラットフォームで有効であるため、
sc
デバイス用の
termcap
や terminfo
のエントリが無い、ネットワーク上の多くの異なったマシンに接続する際に、
このドライバは有用です。
システムが AGP カードを搭載している場合には、 この行を含めてください。 AGP および (ボードが機能を持っている場合には) AGP GART に対応します。
APM および ACPI といった電源管理イベントのためのタイマデバイスドライバです。
PCMCIA サポート。ラップトップを使っているなら必要でしょう。
これらは Windows® では COM
と呼ばれているシリアルポートです。
もしシステムが内蔵モデムを COM4
に、
シリアルポートを COM2
に設定している場合、モデムの IRQ を 2 に変更してください。
もしマルチポートシリアルカードを持っていて、
/boot/device.hints
に追加する正しい数値に関する情報がほしい場合は、
マニュアルページ sio(4) を参照して下さい。
ビデオカードのいくつかは、特に S3 チップベースのものは、IO
アドレスを 0x*2e8
と言う形式で表現します。
多くの安価なシリアルカードは 16 ビットの IO
アドレス空間を完全にデコードしないので、
これらのカードを使った場合衝突が起こり、
事実上 COM4
ポートを使用不可能にします。
各々のシリアルポートは固有の IRQ を必要とします。
COM3
と COM4
用のデフォルト IRQ は利用できません。
例外は、共有割り込み番号をサポートするマルチポートカードを使っている場合です。
ISA バスパラレルポートインタフェースです。
パラレルポートバスのサポートを提供します。
パラレルポートプリンタのサポートを追加します。
上の 3 つはすべてパラレルプリンタを利用可能にするために必要です。
汎用I/O (「geek port」) + IEEE1284 I/O です。
Iomega の Zip ドライブ用です。scbus
と da
サポートが必要です。
EPP 1.9モードを使うと最高の性能が得られます。
puc(4) glue ドライバがサポートしている 「dumb」 シリアル、 またはパラレル PCI カードをシステムが持っているのであれば、 このデバイスを有効にしてください。
PCI ネットワークカードのドライバです。 システムにないものはコメントアウトするか削除して下さい。
MII バスサポートはいくつかの PCI 10/100 イーサネット NIC、
すなわち MII に従うトランシーバや MII
のようなトランシーバ制御インタフェースを実装するもの、に必要となります。
カーネルコンフィギュレーションに device miibus
を追加することで、汎用 miibus API のサポートと、
特定のドライバを必要としない場合に利用される汎用のものを含むすべての
PHY ドライバが導入されます。
MII バスコントローラコードを利用するドライバです。
ISA イーサネットドライバです。
どのカードがどのドライバによりサポートされているかの詳細は、
/usr/src/sys/
を参照して下さい。i386
/conf/NOTES
標準の 802.11 サポート。ワイヤレスネットワークではこの行が必要です。
802.11 デバイスの暗号化サポート。 暗号化および 802.11i セキュリティプロトコルを使うシステムでは、 これらの行が必要です。
ワイヤレスカードのサポートです。
TCP/IP の汎用ループバックデバイスです。 これは必須です。
暗号化されたセキュア乱数ジェネレータです。
ether
はイーサネットカードを持っているシステムでのみ必要です。
汎用イーサネットプロトコルコードを含みます。
sl
は SLIP サポートを提供します。
SLIP は設定のより簡単な、モデム-モデム間の接続にはより適していてより高機能な
PPP に殆ど取って代わられています。
これはダイアルアップ接続用のカーネル PPP サポートです。
他にも tun
を利用し、
デマンドダイアリングのような柔軟性と機能を提供するユーザーランドのアプリケーションとして実装された
PPP が存在します。
これはユーザーランド PPP ソフトウエアにより利用されます。 詳細はこのハンドブックの PPP 章を参照して下さい。
これは 「疑似ターミナル」 或いはシミュレートされたログインポートです。
これは入ってくる telnet
と
rlogin
セッション、
xterm やその他の
Emacs
のようなアプリケーションにより利用されます。
メモリディスク疑似デバイス。
この行は IPv6 over IPv4 トンネル、IPv4 over IPv6 トンネル、
IPv4 over IPv4 トンネル、IPv6 over IPv6 トンネルを提供します。
gif
デバイスは
「auto-cloning (自動複製)」 し、
必要に応じてデバイスノードを作成します。
この疑似デバイスは自分宛に送られたパケットを受け取り、 IPv4/IPv6 変換デーモンに渡します。
このバークレーパケットフィルタ疑似デバイスは、 ネットワークインタフェースを、 イーサネットのようなブロードキャストネットワーク上ですべてのパケットを拾うことのできる promiscuous モードに設定できるようにします。 これらのパケットはディスクに取り込むこともできますし、 tcpdump(1) を使ってチェックをすることもできます。
dhclient(8) も bpf(4) デバイスを使います。 DHCP を使っているなら、これはコメントアウトしないでください。
さまざまな USB デバイスのサポートです。
Firewire デバイスのサポートです。
より詳細な情報と、FreeBSD によりサポートされる他のデバイスについては
/usr/src/sys/
を参照して下さい。i386
/conf/NOTES
大容量のメモリを搭載したコンピュータは、 ユーザ+カーネル仮想アドレス (KVA) 空間における 4 ギガバイトの制限を越えてメモリにアクセスする必要があります。 Intel は Pentium® Pro およびそれ以降の CPU において、 36-bit 物理アドレス空間に対応しました。
Intel® Pentium® Pro およびそれ以降の CPU では、
Physical Address Extensions (PAE)
を用いて 64 ギガバイトまでのメモリの構成を可能にします。
FreeBSD は、PAE
カーネルコンフィグレーションオプションを用いることで PAE に対応します。
現在すべてのバージョンの FreeBSD で利用できます。
Intel のメモリアーキテクチャの制限により、
4 ギガバイト以上または以下の区別をしません。
4 ギガバイト以上に割り当てられたメモリは、
利用可能なメモリのプールに単純に追加されます。
PAE サポートをカーネルで有効にするには、 以下の行をカーネルコンフィグレーションファイルに追加してください。
FreeBSD の PAE のサポートは、 Intel® IA-32 プロセッサでのみ利用できます。 また、FreeBSD における PAE サポートは広くテストが行われているわけではないので、 FreeBSD の他の機能と比較するとベータ品質に位置づけられます。
FreeBSD における PAE サポートには、 以下のような制限があります。
プロセスは、4 ギガバイト以上の仮想メモリ空間にアクセスできません。
bus_dma(9) インタフェースを用いないデバイスドライバは、
PAE が有効なカーネルにおいてデータの破損を引き起こす可能性があるため、
利用することは推奨されません。
そのため FreeBSD で提供される PAE
カーネルコンフィグレーションファイルでは、PAE
が有効なカーネルで動作することが知られていないすべてのドライバが外されています。
いくつかの調整可能なシステムパラメータは、
利用可能な物理メモリによるメモリリソースを調整します。
PAE を必要とするような大きなメモリのシステムでは、
そのような調整可能なリソースが不必要に割り当てられることがあります。
そのような例のひとつが kern.maxvnodes
sysctl です。この sysctl は、カーネルで許される
vnode の最大数を調節します。
この sysctl や同様に変更可能なパラメータを適切な値に調整することをお奨めします。
カーネルバーチャルアドレス (KVA)
の枯渇を避けるため、KVA 空間を大きくとる、または、
激しく消費される特定のカーネルリソースの量を減らす必要があるでしょう。
KVA_PAGES
カーネルオプションを用いて
KVA 空間を増やすことができます。
パフォーマンスや安定性については、 tuning(7) を調べることをお奨めします。 pae(4) は、FreeBSD の PAE サポートに関する最新の情報を含んでいます。
本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。
FreeBSD に関する質問がある場合には、
ドキュメント を読んだ上で
<questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、
<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。