<!-- $Id: kernelconfig.sgml,v 1.14 1997-08-25 05:49:41 max Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.29 -->
<!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> -->
  <chapt><heading>FreeBSDカーネルのコンフィグレーション <label id="kernelconfig"></heading>

    <p><em>原作: &a.jehamby;. <newline>6 October 1995.</em>

    <p><em>訳:
	&a.tomo;,
	 &a.yoshiaki;. <newline>
	 2 November 1996. </em>

	この章はシステムに合わせたカーネルの再構築の基礎について
	述べたものです.  この章は, システム管理の初心者から
	Unixシステム管理に十分な経験を積んだ人までを対象としています. 

    <sect><heading>なぜカスタムカーネルを作るか?</heading>

	<p>システムに合わせたカーネルの構築はすべての
	Unixシステム管理者が
	避けて通ることのできない最も重要な通過儀礼の1つです. 
	この作業は, 多くの時間を必要としますが, あなたの FreeBSD
	システムに多くの利益をもたらします. GENERICカーネルは, 
	めったに使われることのないハードウェアをサポートするとともに, 
	考えられるすべての SCSIカードやネットワークカードをサポート
	しなければなりませんが, システムに合わせたカーネルは
	<em>あなたの</em> PC のハードウェアのみをサポートします. 
	これは, 次にあげるような利益をもたらします. 

	<itemize>

	  <item>あなたが持っていないハードウェアについては検出をおこなわな
		いので,	ブートにかかる時間が短くなります. 		

	  <item>システムに合わせたカーネルは多くの場合メモリ使用量が
		減ります. カーネルはいつもメモリ上に存在するので, 
		不必要なコードがあると本来プログラムが利用できるはずの
		RAM (実メモリ) を占めてしまいますのでこれは重要なことだ
		といえます. 
		したがって, メモリが少ないシステムでは, 
		カーネルの再構築は大変重要です. 

	  <item>必要に応じていくつかのカーネルオプションは調整すること
		ができ, またサウンドカードのような GENERICカーネルには
		<em>ない</em>デバイスドライバをカーネルに含めることが
		できます. 

	</itemize></p>

    <sect><heading>カスタムカーネルの構築とインストール<label id="kernelconfig:building"></heading>

      <p>まず, カーネル再構築に必要なディレクトリをざっと見てみましょう. 
	ここではディレクトリはすべて <tt>/usr/src/sys</tt>以下の相対位
	置で示します. また, <tt>/sys</tt>からもアクセス可能です. 
	ここには, カーネルの各部分を構成するサブディレクトリが
	いくつもあります. しかし, 私たちの目的では
	最も重要なのは <tt>i386/conf</tt>です. ここで, あなたの
	システムに合わせてカーネル コンフィグレーションを編集します. 
	それから <tt>compile</tt>ディレクトリ, ここはカーネルが作られる
        場所です. サポートされているデバイスやファイルシステムのディレ
        クトリツリーがオプション毎にサブディレクトリに分かれている論理
        的構成に注意してください. また, <tt>i386</tt>のディレクトリは 
        PCのハードウェアのみを扱い, <tt>i386</tt>以外のディレクトリは 
        FreeBSDが他のプラットフォームに移植される際には共有されるコー
	ドです. 

	<quote><em/注:/ もし, あなたのシステムに<tt>/usr/src/sys</tt>
	以下のディレクトリが<em>なければ</em>, カーネルのソースが
	インストールされていません. パッケージのインストール手順にしたがっ
	て, システムにインストールしてください. </quote>

	つぎに, <tt>i386/conf</tt>に移動して, GENERIC
	コンフィグレーションファイルをカーネルに与えたい名前に
	コピーしてください. たとえば：
<tscreen><verb>
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL
</verb></tscreen>
	慣習として, この名前はすべて大文字でつづられます. もし, 
	いくつかの異なるハードウェアの FreeBSDマシンを扱うなら, 
	この名前にホスト名を含めるとよいでしょう. 
	ここでは, 例として MYKERNEL と呼ぶことにします. 
	
	<quote><em/注:/ この作業は root権限でおこなう必要があります. 
	そうでなければ, ``permission denied''というエラーが出ます. 
	</quote>

	では, MYKERNELをあなたの好きなエディタで編集してください. 
	もし, システムをインストールしたばかりならば, 利用できる
	エディタは <tt>vi</tt>だけかもしれません. ここでは使い方
	の説明はしませんが, <ref id="bibliography" 
	name="参考図書">にあるような多くの本で詳しく説明
	されていますので, そちらを参照してください. 
	まずファイルの最初の方のコメント行を編集し, あなたのコンフィグ
	レーションに合せて変更した点などを記述して GENERICと区別がつく
	ようにしておきましょう.

	もし SunOSや他の BSDオペレーティングシステムでカーネルの
	再構築をしたことがあれば, このファイルはとても親しみ
	やすいでしょう. しかし, DOSのようなその他の
	オペレーティングシステムしか知らない人から見れば, 
	GENERICコンフィグレーションファイルはとても
	なじみにくいものかもしれません. そのような場合は, <ref
	id="kernelconfig:config" name="コンフィグレーションファイル">
	の節をゆっくりと注意深く読んでください. 

	<quote><em/注:/ 古いバージョンの FreeBSDからアップグレードを
	おこなう場合, 新しいカーネルソースを得た場所より新しいバージョンの
	<tt>config(8)</tt>を取ってくる必要があるかもしれません.  これは
        <tt>/usr/src/usr. sbin</tt>にあります. したがってこれらのソースをダ
        ウンロードする必要があります. 次のコマンドを実行する前に
        (configを)作りインストールをしておいてください. </quote>

	編集し終ったら, 次のコマンドによってコンパイル, インストール
	を行ってください. 
<tscreen><verb>
# /usr/sbin/config MYKERNEL
# cd ../../compile/MYKERNEL
# make depend
# make
# make install
</verb></tscreen>
	新しいカーネルはルートディレクトリに <tt>/kernel</tt>という
	名前でコピーされ, 今までのカーネルは <tt>/kernel.old</tt>
	という名前へ変更されます. では, システムをシャットダウン, リブー
	トして新しいカーネルを使ってください. うまく行かない場合は, 
	この章の終りの
	<ref id="kernelconfig:trouble" name= "問題が起きた場合には">
	を参照してください. この章の新しい
	<ref id="kernelconfig:noboot" name="カーネルがブートしない">
	場合のリカバリの方法を注意深く読んでおいてください. 

	<quote><em/注:/ (サウンドカードのような)新しいデバイスを
		追加した場合は, 使う前に <tt>/dev</tt>ディレクトリで
		デバイスノードを追加しなければならないかもしれません. 
		詳しくは, <ref id="kernelconfig:nodes" 
		name="デバイスノード">を読んでください. </quote>

    <sect><heading>コンフィグレーション ファイル<label id="kernelconfig:config"></heading>
	<p>コンフィグレーション ファイルの一般的なフォーマット
	はとてもシンプルです. 各行は1つのキーワードと1つ以上の
	引数を含んでいます. 見やすくするために, ほとんどのキーワードは
	引数を1つしか書いてありません.
	<tt>#</tt>に続くものはすべてコメントとして扱われ, 
	無視されます. ここでは, それぞれのキーワードについて
	だいたい GENERICに出てくる順番で説明します. しかし, 
	お互いに関係のあるキーワードは, 実際には GENERICファイル上に
	バラバラに現れていても, (ネットワーキングのように)1つにまとめ
	 てあります. <label id="kernelconfig:options"> おびただしい数の
	オプションの一覧が GENERICと同じディレクトリの LINTコンフィグ
	レーションファイルにあります.  もし, ある行の目的や必要性に疑
	問を持ったら最初に LINTをチェックしてください.

       <p>カーネルは現在, オプションを扱う方法をよりよい機構に移行しよ
       うとしています. 従来は, 各々のオプションは単純にカーネルの
       Makefile中の <tt>CFLAGS</tt>行の <tt>-D</tt>スイッチに変換されて
       いました.  自然とオプションは際限なく増えて行きます. だれも実際に
       はどのオプションがどのファイルで参照されているかは知りません.

       <p>新しい方法では、すべてのオプション依存の <tt> #ifdef</tt>は当該オプショ
        ンを <tt>opt_<em>foo</em>.h</tt> (これらのファイルはconfigによって compileディレ
        クトリに作られます) から読み込むように変わりました.
        <tt>config</tt> の有効なオプションのリストは2つのファイルにお
        かれます. アーキテクチャに依存しないオプションは 
        <tt>/sys/conf/options</tt>に置かれ, アーキテクチャ依存のオプショ
        ンは<tt>/sys/<em>arch</em>/conf/options</tt>に置かれま
        す. <em>arch</em>の部分は例えば <tt>i386</tt>となります.


      <sect1><heading>必須キーワード</heading>

	<p>ここにあるキーワードはカーネルの構築に必要不可欠です. 

	  <descrip>

	    <tag>machine ``i386''</tag>

	    <p>最初のキーワードは <tt>machine</tt>です. 
		FreeBSDは Intelの 386とその互換チップ上でしか
		動かないので, i386を指定します. 

	      <quote><em>注:</em> 数字を含むキーワードはすべて
		クォーテーションマークで囲む必要があります. 
		そうしないと, <tt>config</tt>は混乱し, 
		386を実際の数値として扱ってしまいます. </quote>

	    <tag>cpu ``<em>cpu_type</em>''</tag>
	      
	    <p>次のキーワードは <tt>cpu</tt>です. 
		FreeBSDでサポートしている CPUの中から記述します. 
		<tt><em>cpu_type</em></tt>として指定可能な値は
		次の通りです. 
	      <itemize>
		<item>I386_CPU
		<item>I486_CPU 
		<item>I586_CPU
		<item>I686_CPU
	      </itemize>
		GENERICカーネルのように <tt>cpu</tt>の行の
		<tt><em>cpu_type</em></tt>が異なった値を持つものが
		複数あってもかまいません. カスタムカーネルでは,
		 あなたが持っている cpuを1つだけ指定するのが
		一番です. 例えば, もし Intelの Pentiumを持っていれば, 
		 <tt><em>cpu_type</em></tt>には, <tt>I586_CPU</tt>
		を使ってください. 

	    <tag>ident <em>machine_name</em></tag>

	    <p>次は, カーネルの識別名となる<tt>ident</tt>です. 
		GENERICからあなたがカーネルに与えたい名前に
		変えてください. ここでは, MYKERNELとします. 
		<tt>ident</tt>に与えた名前はカーネルの
		ブート時に表示されるので, 普段のカーネルとは別に
		カーネルに違う名前を与えたいとき(例えば, 
		実験用のカーネルを作りたい時など), 便利でしょう. 
		数字を含む名前にしたい場合は <tt>machine</tt>や
		<tt>cpu</tt>の時と同じようにクォーテーションマークで
		囲む必要があります. 

		Cコンパイラに <tt>-D</tt>スイッチで渡されるので, 
		<tt>DEBUG</tt>のような名前にしたり, <tt>vax</tt>
		といった他のCPUの名前など紛らわしい名前にしないで
		ください. 

	    <tag>maxusers <em>number</em></tag>
	     
	    <p>これは, 重要なシステムテーブルのサイズを決めます. ここ
               で与えられる数字はマシンに同時にログインすると考えられ
               るおよそのユーザ数です. しかし, 通常の使用環境であれば, 
               特に X Window System を立ち上げたり, ソフトウェアを 
               コンパイルするような使用であれば <tt>maxusers</tt>には少
               なくとも4以上を指定したほうがいいでしょう. その理由は,
               <tt>maxusers</tt>で決るテーブルで最も重要なものはプロセス
		の最大数であるからです. プロセス最大数は <bf><tt>20 +
               16 * maxusers</tt></bf>で与えられ, <tt>maxusers</tt>を1
               にすると36プロセスしか同時には持てません. この中にはブー
               ト時にシステムによって起動する18個ぐらいのプロセス, Xを
               起動する時の15程度のプロセスも含みます.
		<tt>man</tt>ページを読むという1つのタスクでさえ, フィ
		ルタやファイル伸長や表示のために9つのプロセスを起動し
		ます. <tt>maxusers</tt>を4にすれば, 同時に84個のプロセ
		スを持つことができるのでどんな人でも十分な数だといえる
		でしょう. 
		それでも他のプログラムを起動した場合に, あるいは, 
		(Walnut Creek CDROMのFTPサイトのように) 同時に多くの
		ユーザを抱えるサーバを走らせた場合に ``proc table
		full''というおぞましいエラーが起きる場合はこの値を増や
		し, カーネルを再構築してください. 

	      <quote><em/注:/ <tt>maxuser</tt>はあなたのマシン
		にログインできるユーザの数を制限するものでは
		<em>ありません</em>. 単に, あなたのシステムに
		ログインするユーザ数の最大値と各々のユーザが
		いくつのプロセスを走らせるかを考慮することに
		よってさまざまなテーブルの値を適切な値に設定
		するだけです. これに対し, <ref 
		id="kernelconfig:ptys" name="pseudo-device pty
		16">の <em>remote logins</em>というキーワードは
		同時にリモートログインできるユーザ数を制限
		<em>します</em>. </quote>

	    <tag>config <em>kernel_name</em> root on <em>root_device</em></tag>

	    <p>これはカーネルの位置と名前を特定します. 
		伝統的にカーネルは <tt>vmunix</tt>と呼ばれますが, 
		FreeBSDでは <tt>kernel</tt>とふさわしい名前になりました. 
		<em>kernel_name</em>にはいつも <tt>kernel</tt>を
		使ってください. 名前を変えると多くのシステム
		ユーティリティが使えなくなります. 2番目の部分は
		ルートファイルシステムとカーネルのあるディスクと
		パーティションを指定してください. 
		SCSIドライブでなければ, <tt>wd0</tt>を,
		SCSIドライブならば <tt>sd0</tt>です. 
	  </descrip>

      <sect1><heading>一般的なオプション</heading>

	<p>以下はカーネルのサポートするさまざまなファイルシステムおよ
	びその他のオプションです. 

	  <descrip>

	      <label id="kernelconfig:mathemu">

	    <tag>options MATH_EMULATE</tag> 

	      <p>これは, 数値演算コプロセッサがない
		コンピュータ (386や486SX) で数値演算コプロセッサ
		のエミュレーションを可能にします. もし, Pentiumや
		486DX, あるいは387や487があれば, コメントアウト
		できます. 

	      <quote><em>注:</em> FreeBSD付属の数値演算
		コプロセッサエミュレータはあまり正確では
		<em>ありません</em>. 非常に正確な計算をおこないたい
		ならば, より優れた GNUのエミュレータである
		<tt>GPL_MATH_EMULATE</tt>に変えることを
		おすすめします. これはライセンスの関係でデフォルトでは
		含まれていません. </quote>

	    <tag>options ``COMPAT_43''</tag> 

	    <p>4.3BSDとの互換性のためのオプションです. 
		そのままにしておいてください. コメントアウトすると, 
		いくつかのプログラムで動作がおかしくなります. 

	    <tag>options BOUNCE_BUFFERS</tag>

	    <p>ISAデバイスやISA互換モードで動作する EISAデバイス
		では DMA (Direct Memory Access) は16MB以下のメモリに対し
		てのみ動作します. このオプションによりメモリが16MB以上
		のシステムでDMAを使うデバイスを動作させることができます. 

	    <tag>options UCONSOLE</tag>

	    <p>ユーザがコンソールを横取り (grab) できるようにします. 
		これは X Window System 上で便利です. 例えば, コ
		ンソール xtermを <tt>xterm -C</tt>とタイプして作ると, 
		そこに `write', `talk'などのメッセージがカーネルからコ
		ンソールへ送られるメッセージと同じように表示されます. 

	    <tag>options SYSVSHM</tag> 

	    <p>このオプションは System V の共有メモリを提供します. 
	        X Window System の XSHM拡張での利用がもっとも一般に見
		られる例で, 多くのグラフィックを多用したプログラム 
		(movie player の Xanimや Linux DOOMなど) ではこれを
		利用することで速度が増加するというメリットがあります.
		X Window System を利用するのであればこれは間違いな
		く含めたくなるでしょう. 

	    <tag>options SYSVSEM</tag> 

	    <p>System V のセマフォをサポートします. 一般的に利用される
		ことは少ないですがカーネルサイズの増加は数百バイトだ
		けです. 
	    <tag>options SYSVMSG</tag> 

	    <p>System V のメッセージをサポートします. これを指定した場
		合もカーネルサイズの増加は数百バイトだけです. 

	      <quote><em/注:/  <tt>ipcs(1)</tt> コマンドは
		これらの System V の機構を利用しているプロセスを表示し
		ます. 
		</quote>
	      <quote><em>訳注: </em>共有メモリ, セマフォ, メッセージ(メッ
		セージキュー)  は System V系 で一般的なプロセス間通信の機
		構です. くわしくは System Vのプロセス間通信に関する文
		献, 「詳解 UNIXプログラミング」 (ソフトバンク) , 「UNIXネッ
		トワークプログラミング」 (トッパン) などを参照してくださ
		い. 
		</quote>

	  </descrip>

      <sect1><heading>ファイルシステムオプション</heading>

	<p>これらのオプションはさまざまなファイルシステムへのサポート
	を追加します. 少なくともブートするためのデバイスのサポートを含
	める必要があります. 標準的にはハードディスクからブートするので
	あれば <tt>FFS</tt> , ディスクレスワークステーションとしてイー
	サネットからブートするのであれば <tt>NFS</tt>です. 
	一般的に利用される他のファイルシステムをカーネルに含め, あまり
	利用しないファイルシステム (多分 MS-DOSファイルシステム?) のサポー
	トをコメントアウトすることができます. これは Loadable Kernel
	Module ディレクトリ <tt>/lkm</tt> から, 最初にそのタイプのファイ
	ルシステムがマウントされる時に動的にドライバがロードされるからです. 

	  <descrip>

	    <tag>options FFS</tag> 

	    <p>基本的なハードドライブ ファイルシステムです. ハードディ
		スクからブートする場合は残しておいてください. 

	    <tag>options NFS</tag> 

	    <p>ネットワーク ファイルシステムです. Ethernet経由で Unixファ
		イルサーバからパーティションをマウントする予定がない場
		合はコメントアウトすることができます. 

	    <tag>options MSDOSFS</tag>

	    <p>MS-DOS ファイルシステムです. ブート時に DOSフォーマット
		のハード ドライブをマウントする予定のない場合はコメン
		トアウトしても安全です. 先に示したように, DOSパーティ
		ションをマウントする時に自動的にロードされます. また 
		 (ports コレクションにある) <tt>mtools</tt> という素晴
		らしいソフトウェアにより mount , unmountなしで DOSフロッ
		ピーにアクセスすることができます (これは MSDOSFSも必要
		ありません). 

	    <tag>options ``CD9660''</tag> 

	    <p> CD-ROMのための ISO 9660 ファイルシステムです. CD-ROMを
		持っていないか, 時々 データ CDをマウントするだけならコ
		メントアウトしましょう (データ CDを最初にマウントする
		時に動的にロードされます). オーディオ CDはこのファイル
		システムは必要ありません. 

	    <tag>options PROCFS</tag>

	    <p>プロセス ファイルシステムです. これは疑似的なファイルシ
               ステムで /procにマウントされ, <tt>ps(1)</tt>などのプロ
               グラムがプロセスに関してより詳しい情報を与えてくれるよ
               うになります.

	    <tag>options MFS</tag> 

	    <p>メモリマップド ファイルシステムです. これは基本的に一時
		ファイルを記憶するための高速な RAMディスクで, 大きな
		swap領域がある場合に有効です.  MFSパーティションをマウ
		ントするに適した場所は多くのプログラムが一時ファイルを
		置く <tt>/tmp</tt>です. MFS RAMディスクを <tt>/tmp</tt>
		にマウントするには以下の内容を <tt>/etc/fstab</tt>に追
		加してリブートするか <tt>mount /tmp</tt>とタイプします. 

<tscreen><verb>
/dev/wd1s2b   /tmp mfs rw 0 0 
</verb></tscreen>

	      <quote><em/注:/ <tt>/dev/wd1s2b</tt>をあなたが使用して
		いるswap パーティションに置き換えてください. これは以
		下のように <tt>/etc/fstab</tt>に書かれているでしょう. 
<tscreen><verb>
/dev/wd1s2b none swap sw 0 0
</verb></tscreen>
	      </quote>

	      <quote><em/注:/ <!-- MFS は現在のところ少しの制限があ
		ります (例えば, 2つのプログラムが同時に <tt>/tmp</tt>デ
		バイスにアクセスすることはできません). そのためいまの
		ところは使わない方が無難です. --> また, <tt>MFS</tt>ファ 
		イルシステムは動的にロードすることは<em>できません
		</em>. したがって使いたい場合はコンパイル時に
		カーネルに<em>含める必要があります</em>. 
		</quote>

	    <tag>options QUOTA</tag> 

	    <p>ディスククォータを有効にします. アクセスが公開されてい
		るシステムで (一人のユーザが) <tt>/home</tt>パーティショ
		ン (全体) をあふれさせることができないようにそれぞれのユーザ
		にディスククォータを発行することができます. 
		ディスククォータについての詳しい内容は<ref id="quotas" 
		name="ディスク クォータ">の章を見てください.
	  </descrip>

      <sect1><heading>基本的なコントローラとデバイス</heading>

	<p>この節では FreeBSDでサポートされているディスク, テー
	プ, CD-ROMコントローラについて示します. 
	 <ref id="kernelconfig:scsi" name="SCSI"> コントローラと <ref
	  id="kernelconfig:network" name="ネットワーク"> カードについ
	ては別の節になっています. 

	  <descrip>

	    <tag>controller isa0</tag> 
	    <p> FreeBSDのサポートするすべての PCで必要です. IBM PS/2 (マイ
		クロチャネルアーキテクチャ) では現時点では FreeBSDは動
		きません. 

	    <tag>controller pci0</tag> 

	    <p>PCIバスを持つマザーボードの場合は含めます. これにより
		PCIカードの自動認識と PCIから ISAバスへのゲートウェイが
		可能になります. 

	    <tag>controller fdc0</tag>

	    <p>フロッピードライブコントローラです. 
	      <tt>fd0</tt> は ``A:'' ドライブで
	      <tt>fd1</tt> は ``B:'' ドライブです.   <tt>ft0</tt> は
	      フロッピーコントローラに接続する QIC-80 テープドライブで
		す. 対応するデバイスがない場合はそれぞれの行をコメント
		アウトしてください. 

	      <quote><em/注:/QIC-80テープのサポートは別に 
		<tt>ft(8)</tt>というフィルタプログラムが必要です. 
		くわしくはマニュアルページを見てください. </quote>

	    <tag>controller wdc0</tag> 

	    <p>プライマリIDEコントローラです. <tt>wd0</tt> と 
               <tt>wd1</tt>はそれぞれマスタ, スレーブドライブで
               す. <tt>wdc1</tt> は セカンダリの IDEコントローラで3台
               目, 4台目のハードディスクまたは IDE CD-ROMのある場合に
               使います. 利用しない行はコメントアウトしてください (例え
               ば, SCSIハードディスクのみを使う場合は6行全部をコメント
               アウトしてもよいかもしれません).

	    <tag>device wcd0<label id="kernelconfig:atapi"></tag>

	      <p>このデバイスは IDE CD-ROMのサポートをします.
	      <tt>wdc0</tt>を有効にしておく必要があり, もし 2つ以上の IDE
	      コントローラがあり, そのうちの 2つ目のカードに CD-ROMを接
	      続する場合 <tt/wdc1/ も必要です.
	      また <tt>options ATAPI</tt>を書いておく必要もあります. 

	    <tag>device npx0 at isa? port ``IO_NPX'' irq 13 vector npxintr</tag>

	    <p><tt>npx0</tt>はFreeBSDハードウェアコプロセッサとソフト
		ウェアエミュレータ両方の浮動小数点演算ユニットへのインタ
		フェースです.  これは <em/不可欠/ です. 

	    <tag>device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr</tag>

	    <p>Wangtek と Archive の
	      QIC-02/QIC-36 テープドライブのサポートです. 

	    <tag>Proprietary CD-ROM support</tag>

	    <p>以下のようなドライブを <em>proprietary</em>(独自の)
		CD-ROMドライブと呼ぶことにします. これらのドライブは専
		用のコントローラを持つか, サウンドブラスタ16などのサウ
		ンドカードに接続します. これらは IDEでも SCSIでも<em>あ
		りません</em>. 多くの標準速や2倍速の古い CD-ROMはこれら
		のインタフェースを持っていますが, より新しい四倍速の
		ものは <ref id="kernelconfig:atapi" name="IDE"> か <ref
	      id="kernelconfig:scsi" name="SCSI">でしょう. 


	      <descrip>

		<tag>device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr</tag>

		<p>ミツミ製 CD-ROM (LU002, 
		  LU005, FX001D)です. 

		<tag>device scd0 at isa? port 0x230 bio</tag>
		
		  <p>ソニー製 CD-ROM (CDU31,CDU33A)です. 

		<tag>controller matcd0 at isa? port ? bio</tag>

		<p>松下/パナソニック製 CD-ROM (サウンドブラスタ用
		クリエィティブ ラボ製として販売されていました) です. 

	      </descrip>

	  </descrip>

      <sect1><heading>SCSI デバイスのサポート<label id="kernelconfig:scsi"></heading>

	<p>この節では FreeBSDのサポートするいろいろな SCSIコント
	ローラとデバイスのサポートについて書きます. 

	  <descrip>

	    <tag>SCSI コントローラ</tag>

	    <p>以下の十数行は異る種類の SCSIコントローラのサポートです. 
		使用しているもの以外の部分はコメントアウトしてください. 

	      <descrip>

		<tag>controller bt0 at isa? port ``IO_BT0'' bio irq ? vector btintr</tag>

	  <p>ほとんどの Buslogic社のコントローラです. 

	<tag>controller uha0 at isa? port ``IO_UHA0'' bio irq ? drq 5 vector uhaintr</tag>

	  <p>UltraStor 14F と 34F です. 

	<tag>controller ahc0</tag>

	  <p>Adaptec 274x/284x/294x です. 

	<tag>controller ahb0    at isa? bio irq ? vector ahbintr</tag>

	  <p>Adaptec 174x です. 

	<tag>controller aha0    at isa? port ``IO_AHA0'' bio irq ? drq 5 vector ahaintr</tag>

	  <p>Adaptec 154x です. 

	<tag>controller aic0    at isa? port 0x340 bio irq 11 vector aicintr
</tag>

	  <p>Adaptec 152x や サウンドカードなどに使われている Adaptec
	AIC-6360 チップです.  (slow!)

	<tag>controller nca0    at isa? port 0x1f88 bio irq 10 vector ncaintr
</tag>

	  <p>NCR 5380を使っている ProAudioSpectrum や Trantor T130 で
	す. 

	<tag>controller sea0    at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr</tag>

	  <p>Seagate ST01/02 8 ビットコントローラです.  (slow!)

	<tag>controller wds0    at isa? port 0x350 bio irq 15 drq 6 vector wdsintr</tag>

	  <p>Western Digital WD7000コントローラです. 

	<tag>controller ncr0</tag>

	<p>NCR 53C810, 53C815, 53C825, 53C860, 53C875 チップを使った 
	PCI SCSI コントローラです.  

	      </descrip>

	    <tag>options ``SCSI_DELAY=15''</tag>

	    <p> このオプションによりカーネルはそれぞれの SCSIデバイスを
		プローブする前に 15秒間待ちます. IDEドライブのみを使用
		している場合は無視して構いません. ブートを速くするため
		にこの数値を 5秒ぐらいまで小さくしたいでしょう. そうし
		た場合, FreeBSDが SCSIデバイスを認識しにくくなるかもし
		れません. その時は、もちろんこのオプションの値は元に戻
		さないといけません.


	    <tag>controller scbus0</tag> 

	      <p>SCSIコントローラがある場合, この行で SCSI全般のサポー
		トを与えます. SCSIのない場合, この行と以下の3つの行をコメ
		ントにすることができます. 

	    <tag>device sd0</tag> 

	    <p>SCSIハードディスクのサポートです. 

	    <tag>device st0</tag> 

	    <p>SCSIテープドライブのサポートです. 

	    <tag>device cd0</tag> 

	    <p>SCSI CD-ROM のサポートです. 

	    <p> 上のエントリについている <bf>0</bf>はいくらか誤解を招き
		やすいかもしれません. これらのデバイスはすべてカーネルが
		見つけた時に割り当てがおこなわれ, SCSIバスに何台つながってい
		るか, ターゲット IDが何番であるかはここの記述とは関係あ
		りません. 

		明示的に「固定的な」ターゲット IDの特定のデバイスへの
		割り当てをおこないたい場合は LINT カーネルコンフィグレーションファイルの
		該当する部分の説明を参照してください.

	  </descrip>

      <sect1><heading>コンソール, バスマウス, Xサーバのサポート</heading>

	<p>2つのタイプのコンソールからどちらか1つを選ぶ必要があります.
	標準ではない方の vt220 コンソールを選んだ場合, X Window System
	を利用するには XSERVER オプションを有効にする必要があります
	(訳注: sc0 には XSERVER オプション相当の機能が始めから入っています).
	またバスマウスとPS/2マウスのオプションもあります. 
	
	  <descrip>

	    <tag>device sc0 at isa? port ``IO_KBD' tty irq 1 vector scintr</tag>

	    <p><tt>sc0</tt> はデフォルトのコンソールドライバで SCOコン
		ソールに似ています. このデバイス, あるいは VT220コンパ
		チブルドライバの <tt>vt0</tt>いずれを使う場合もほとんど
		のフルスクリーンプログラムは <em>termcap</em>などのターミ
		ナルデータベースライブラリを通してアクセスしますので, 
		あまり違いはないでしょう. 
		このコンソールを使う場合でフルスクリーンプログラムでト
		ラブルが起きる場合にはログインした時に TERM変数の値を
		``scoansi''にしてください. 

	    <tag>device vt0 at isa? port ``IO_KBD'' tty irq 1 vector pcrint</tag>

	    <p>これはVT-220コンパチブルコンソールドライバで VT100/102の
		上位互換です. これは <tt>sc0</tt>の使えない種類のラッ
		プトップ機でもうまく動きます. ログイン時に TERM変数の値
		を``vt100'' か ``vt220''にしてください. また, このドラ
		イバはネットワークを介して多くの異るマシンから接続する
		場合も便利です. <tt>sc0</tt>デバイスのための
		<em>termcap</em>や <em>terminfo</em>エントリは必ずしも
		利用できるわけではありませんが -- ``vt100''はいずれの 
		 プラットフォームでも利用可能でしょう. 

	      <descrip>

		<tag>options ``PCVT_FREEBSD=210''</tag> 

		  <p><tt>vt0</tt> コンソールドライバを使う場合に必要で
			す. 

		<tag>options XSERVER</tag> 

		<p> <tt>vt0</tt> コンソールドライバを使う時のみ有効です.
		これは <tt>vt0</tt> コンソールドライバのもとで
		<tt>XFree86</tt> X サーバを動かすのに必要なコードを含めます. 
	   
	      </descrip>

	    <tag>device mse0 at isa? port 0x23c tty irq 5 vector ms</tag>

	    <p> Logitech や ATIのバスマウス入力カードを利用する場合のデ
		バイスです. 

	      <quote><em/注:/ シリアルマウスを使う場合にはこれら2つ
		の行(バスマウスとPS/2マウスに関する行)
		は無視して, 代わりに <ref id="kernelconfig:serial"
		name="シリアル"> ポート(おそらくはCOM1)を有効にしてくだ
		さい. </quote>

	    <tag>device psm0 at isa? port ``IO_KBD'' conflicts tty irq 12 vector psmintr</tag> 

	    <p>このデバイスは PS/2マウスポートにマウスを接続する場合に
		使います. 

	  </descrip>

      <sect1><heading>シリアル, パラレルポート</heading>

	<p>ほとんどすべてのシステムにこれらはあります. プリンタを接続す
	る場合は <ref id="printing" name="プリンタの利用">の章が非常
	に役に立つでしょう. モデムを使う場合は <ref id="dialup"
	  name="ダイヤルアップ アクセス"> に非常に詳しいシリアルポートの設定とデ
	バイスの使い方があります. 

	  <descrip>

	    <tag>device sio0 at isa? port ``IO_COM1'' tty irq 4 vector siointr<label id="kernelconfig:serial"></tag>

	    <p><tt>sio0</tt>から<tt>sio3</tt>は MS-DOSにおける COM1から
		COM4に相当する4本のシリアルポートです. 
		COM4に内蔵モデムがあり COM2を使う場合, FreeBSDからアク
		セスするためにはモデムのIRQを2へ変更する必要があるとい
		うことを注意しておきます (技術的な理由より IRQ 2 = IRQ
		9となります). 
		マルチポートシリアルカードを使う場合にマニュアルページ
		の<tt>sio(4)</tt>にはこのオプションで使う値などのよ
		り多くの情報があります. ビデオカードの中には (特に S3
		チップベースのものには) IOアドレスの <tt>0x*2e8</tt>から
		を利用するものがあり, また多くの安価なシリアルカードは
		IOアドレス空間を16-bitフルデコードしていませんので, こ
		れらのカードは衝突します. この場合 COM4ポートは実質上
		利用できません. 

		それぞれのシリアルポートは (割込みの共有をサポートした
		マルチポートカードを利用していないのであれば) 別々の IRQ
		を割り当てる必要がありますので COM3と COM4のデフォルトの 
		IRQは利用できません. 

	    <tag>device lpt0 at isa? port? tty irq 7 vector lptintr</tag> 

	    <p><tt>lpt0</tt> から <tt>lpt2</tt>は利用可能な3本のプリン
		タポートです. 多くの場合は1本のみですので他の2本はない
		のであればコメントアウトして構いません. 

	  </descrip>

      <sect1><heading>ネットワーク<label id="kernelconfig:network"></heading>

	<p> FreeBSDでは他の一般的な Unixと同様にネットワークが<em>
	非常に</em> 重視されています. イーサネットカードが
	なくても必須のオプションとダイヤルアップ ネットワークのサポー
	トに注意してください. 

    <descrip>

	<tag>options INET</tag>
	ネットワーキングのサポートです. ネットワークに接続する予定がな
	くても残しておいてください. 多くのプログラムは少なくともループ
	バックネットワーキングが必要です(つまり, PCの中でネットワーク
	コネクションをおこないます). したがってこのオプションは本質的
	に不可欠です. 

	    <tag>Ethernet cards</tag>

	    <p>以下にさまざまなイーサネットカードを有効にするオプショ
		ンを示します. ネットワークカードがなければこれらすべてを
		コメントアウトすることができます. そうでなければ利用す
		る特定のイーサネットカードをサポートするオプションを残
		しておきます. 

	      <descrip>

		<tag>device de0</tag>

		<p>DECの DC21040, DC21041, DC21140チップを使った PCIイー
		サネットアダプタです.  


		<tag>device          fxp0

		<p>Intel EtherExpress Pro/100B 高速イーサネットカード
		です.

		<tag>device vx0

		<p>3Com の 3C590, 3C595です (いくらか bugがあります).

		<tag>device cx0 at isa? port 0x240 net irq 15 drq 7 vector cxintr</tag>

		<p>Cronyx/Sigma の マルチポート同期/非同期カードです. 
		  (with Cisco or PPP framing)

		<tag>device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr</tag>

		<p>Western Digital と SMC の 80xx, 8216 Elite Ultra ; 
		ノベル NE1000, NE2000; 3Com の 3C503; HPの PC Lan Plus 
		(HP27247B とHP27252A) です. 

		<tag>device el0 at isa? port 0x300 net irq 9 vector elintr</tag>

		<p>3Com の 3C501 です. (slow!)

		<tag>device eg0 at isa? port 0x310 net irq 5 vector egintr</tag> 

		<p>3Com の 3C505です. 

		<tag>device ep0 at isa? port 0x300 net irq 10 vector epintr</tag>

		<p>3Com の 3C509 です(バグがあります). 

		<tag>device fe0 at isa? port 0x240 net irq ? vector feintr</tag> 

		<p>富士通 MB86960A/MB86965A ベースのイーサネットカード
		です. 

		<tag>device fea0 at isa? net irq ? vector feaintr</tag>

		<p>DEC DEFEA EISA FDDI アダプタです. 

		<tag>device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr</tag>

		<p>AT&amp;T StarLAN 10 と EN100; 3Com の 3C507;
		   NI5210 です. 

		<tag>device ix0 at isa? port 0x300 net irq 10 iomem 0xd0000 iosiz 32768 vector ixintr</tag>

		  <p>Intel の EtherExpress 16です. 

		<tag>device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr</tag> 

		<p>DEC の EtherWorks 2 and EtherWorks
		  3 (DEPCA, DE100, DE101, DE200, DE201, DE202, 
		  DE203, DE204, DE205, DE422)です. 

		<tag>device lnc0 at isa? port 0x300 net irq 10 drq 0 vector lncintr</tag>

		<p>Lance/PCnet カード (Isolan, Novell NE2100, 
		  NE32-VL)です. 

		<tag>device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr</tag>

		<p>IBM/ナショナルセミコンダクタの PCMCIA イーサネット
		コントローラです. 

		<tag>device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr</tag> 

		  <p>3Com の PCMCIA Etherlink III です. 

	      </descrip>

	      <quote><em/注:/ いくつかのカードでは (特に NE2000では) 
		「標準値」がありませんので IOポートやIRQの値を変更す
		る必要がある場合があります. </quote>

	    <tag>pseudo-device loop</tag> 

	    <p><tt>loop</tt> は TCP/IPの一般的なループバックデバイスで
		す.  telnet や FTPを <em>localhost</em> (<tt>127.0.0.1</tt>)
		に対して行なうとこの疑似デバイスを通して帰ってきます. 
		不可欠です. 

	    <tag>pseudo-device ether</tag> 

	    <p><tt>ether</tt>はイーサネットカードがある場合のみ必要で
		一般的なイーサネットプロトコルを含めます. 

	    <tag>pseudo-device sl <em>number</em></tag>

	    <p><tt>sl</tt> は SLIP (Serial Line Internet Protocol) をサポー
		トします. これはほとんど完全に, より簡単に設定ができ, モ
		デム to モデム接続に適した, よりパワフルな PPPに取って代
		わられています. <tt>sl</tt>の後の <em>number</em> は同
		時にいくつの SLIPセッションをサポートするかを示します. 
		SLIPの設定のより詳しい情報はこのハンドブックの
		「PPPとSLIP」の章の 
		<ref id="slipc" name="SLIPクライアントのセットアップ">
	        と <ref id="slips" name="SLIPサーバのセットアップ方法
                ">について書かれた節にあります。

	    <tag>pseudo-device ppp <em>number</em></tag>

	    <p><tt>ppp</tt>はダイヤルアップ インターネット接続のための
		カーネルモード PPP (Point-to-Point Protocol) をサポート
		します. ユーザアプリケーションとして <tt>tun</tt> を
		利用する PPPの実装もあり, こちらはより柔軟性がありデマ
		ンドダイアリング(プログラムが接続要求を出した時に自動
		的にダイヤルをおこなう)などの機能もあります. それでもこ
		の PPPドライバを利用したい場合は <ref id="ppp"
		name="カーネル PPPの設定"> の節を読んでください. 
		<tt>sl</tt>デバイスと同じように <em>number</em>は同時
		に PPP接続できる数を示します. 

	    <tag>pseudo-device tun <em>number</em></tag>

	    <p><tt>tun</tt> はユーザモード PPPソフトウェアが利用しま
		す. このプログラムは設定が簡単で非常に高速です. 
		また自動ダイヤル オン デマンドなどの機能を持ちます. 
		 <tt>tun</tt>の後のnumber は同時におこなうことのできる 
		PPPセッションの数を示します.  <ref id="userppp"
	      name="ユーザ PPP のセットアップ"> の節により多くの情報があ
		ります. 

	    <tag>pseudo-device bpfilter <em>number</em></tag>

	    <p>バークレイ パケットフィルタです. この疑似デバイスはネッ
              トワークインタフェースを無差別 (promiscuous) モードにし
              てネットワーク (例えば単一のイーサネット) にブロードキャス
              トされるすべてのパケットを取り入れることを可能にします. こ
              れらのパケットはディスクに取り入れられたり
              <tt>tcpdump(1)</tt> によって検査されます. この機能の実現
              はネットワーク全体のセキュリティとの微妙な妥協点であるこ
              とに注意してください. 
		bpffilter の後の <em>number</em>は同時に検査することの
		できるインタフェースの数を示します. 
		危険の可能性について十分解っている場合を除いてこのオプ
		ションは奨めません. すべてのネットワークカードでこの機能
		をサポートをしてはいません. 

	  </descrip>

      <sect1><heading>サウンドカード</heading>

	<p>ここは GENERICカーネルに含まれていない最初のセクションです. 
	サウンドカードのサポートをするためには LINTコンフィグレーショ
	ンファイル(これには<em>すべての</em>デバイスが含まれています)か
	ら以下のような適切な行をコピーする必要があります. 

	  <descrip>

	    <tag>controller snd0</tag>

	    <p>サウンドドライバ一般のコードです. 
		 <tt>pca</tt>を除く以下のすべてのサウンドカードで必要で
		す. 

	    <tag>device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr</tag>

	    <p>ProAudioSpectrum のオーディオ と MIDI です. 

	    <tag>device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr</tag>

	    <p>SoundBlaster です. 

	      <quote><em/注:/ SoundBlaster の IRQが標準と異る値, 
		例えば 5になっている場合, <tt>irq 7</tt>を<tt>irq
		5</tt>に書き換え, キーワード <tt>conflicts</tt>を削除し
		てください. さらに <tt>options ``SBC_IRQ=5''</tt>の行を
		加える必要があります. </quote>

	    <tag>device sbxvi0 at isa? drq 5</tag>

	    <p>SoundBlaster 16 の 16-bit オーディオです. 

	      <quote><em/注:/ SB16の DMAチャネルが標準と異っている(
		例えば 6か7)キーワード <tt>drq 5</tt>を適切な値に書き直
		して, (DMA 6の場合) <tt>options "SB16_DMA=6"</tt>を付け
		加えてください. </quote>

	    <tag>device sbmidi0 at isa? port 0x330</tag>

	    <p>SoundBlaster 16 の MIDI インタフェースです. 
		SoundBlaster 16を使う場合必ずこの行を含めてコンパイル
		してください. 

	    <tag>device gus0 at isa? port 0x220 irq 10 drq 1 vector gusintr</tag>

	    <p>Gravis Ultrasound です. 

	    <tag>device mss0 at isa? port 0x530 irq 10 drq 1 vector adintr</tag>

	    <p>Microsoft Sound System です. 

	    <tag>device opl0 at isa? port 0x388 conflicts</tag>

	    <p>AdLib FMシンセサイザオーディオです.   
	      AdLib, SoundBlaster, ProAudioSpectrum を使い 
		<tt>playmidi</tt> (ports にあります) などのプログラムで
		MIDIの演奏をしたい場合にこの行を含めます. 

	    <tag>device mpu0 at isa? port 0x330 irq 6 drq 0</tag>

	    <p>Roland MPU-401 カードです. 

	    <tag>device uart0 at isa? port 0x330 irq 5 vector ``m6850intr''</tag>

	    <p>MIDIインタフェースの 6850 UART です. 

	    <tag>device pca0 at isa? port ``IO_TIMER1'' tty<label id="kernelconfig:pcaudio"></tag>

	    <p>PC のスピーカーを使ったオーディオです. これは非常に品質
		が悪く, CPUの性能, 負荷に強く依存します, と言っておき
		ます (サウンドカードは必要ありませんが). 

	  </descrip>

	  <quote><em/注:/ 追加のドキュメントが 
	    <tt>/usr/src/sys/i386/isa/sound/sound.doc</tt>にあります. 
		また, これらのデバイスを追加する場合は, サウンド<ref
	id="kernelconfig:nodes" name="デバイスノード">を作る必要があり
		ます. </quote>

      <sect1><heading>疑似デバイス</heading>

        <p>疑似デバイスドライバはデバイスドライバと同様に働きますがマ
	シン上に対応する実際のハードウェアがないカーネルの部分です. 
	 <ref id="kernelconfig:network" name="ネットワーク">関連の
	疑似デバイスはそちらのセクションに示しました. ここでは残りにつ
	いて示します. 

	  <descrip>

	    <tag>pseudo-device gzip</tag>

	    <p><tt>gzip</tt>は <tt>gzip</tt>によって圧縮された FreeBSDの
		プログラムを実行できるようにします. /standにあるプログ
		ラムは圧縮されているのでカーネルにこのオプションをつけ
		ておくのはいい考えでしょう.

	    <tag>pseudo-device log</tag>

	    <p><tt>log</tt> はカーネルエラーのログを取るのに使います. 
		不可欠です. 

	    <tag>pseudo-device pty <em>number</em><label id="kernelconfig:ptys"></tag>

	    <p><tt>pty</tt> は「仮想ターミナル」や仮想ログインポート
		です. 外部からの <bf>telnet</bf>や <bf>rlogin</bf>セッ
		ション, xterm, emacsなどのアプリケーションが使います. 
		 <em>number</em>は作ることのできる <tt>pty</tt>の数を示
		します. 
		GENERICのデフォルトは16で, 同時の xtermウィンドウやリモー
		トログインのために増やす場合は最大で 64までです. 

	    <tag>pseudo-device snp <em>number</em></tag>

	    <p>スヌープデバイスです. この疑似デバイスはあるターミナル
		セッションが <tt>watch(8)</tt> commandによって他のター
		ミナルを監視することを可能にします. この機能の実現はセ
		キュリティとプライバシに対して極めて微妙な関係があり
		ます. snpの後の <em>number</em>は同時におこなうことのでき
		るスヌープセッションの総数です. 選択可能です. 

	    <tag>pseudo-device vn</tag>

	    <p>Vノードドライバです. ファイルを <tt>vnconfig(8)</tt>コマ
		ンドによってデバイスとして取り扱うことを可能にします. 
		このドライバによりフロッピーディスクイメージを操作したりファ
		イルをスワップデバイスとして (MS Windowsのスワッ
		プファイルなどを)用いることができます. 選択可能です. 


           <tag>pseudo-device ccd <em>number</em></tag>

	  <p>ccd (concatenated disk)デバイスはいくつかのディスクパーティ
          ションを融合して大きなディスクのように見せることができます.
          ccdの後の <em>number</em>は同時に作ることのできる疑似ディスクの数です.
          (詳しいことは <tt>ccd(4)</tt>と <tt>ccdconfig(8)</tt>のマニュ
	  アルを参照してください.) 選択可能です.

	  </descrip>

      <sect1><heading>ジョイスティック, スピーカー, その他</heading>

	<p>この節は FreeBSDのここまでに示した以外のハードウェア
	デバイスへのサポートについて示します. これらは GENERICカーネル
	には含まれませんのでこのハンドブックや LINT (このファイルには
	<em>すべての</em>デバイスのサポートが含まれます) からコピーする必
	要があります. 

	  <descrip>

	    <tag>device joy0 at isa? port ``IO_GAME''</tag>

	    <p>PC のジョイスティックです. 

	    <tag>pseudo-device speaker</tag>

	    <p> IBM BASIC スタイルの PC内蔵スピーカーのサポートです. 
		シェルスクリプトで簡単な演奏をする
		<tt>/usr/sbin/spkrtest</tt> やキーボードを使って単純なピ
		アノのように演奏することができる
		<tt>/usr/games/piano</tt> (<em>games</em>パッケージをイ
		ンストールした場合にはあります) のようないくつかのプロ
		グラムで使われます. また素晴らしいテキストロールプレイ
		ングゲームである NetHack (ports コレクションにあります)
		はゲーム中の楽器の演奏でこのデバイスを使うように設定を
		することができます (訳注:日本語化されたJNetHackもportsに
		あります). 

	    <p><ref id="kernelconfig:pcaudio" name="pca0"> デバイスの
		項も参照してください. 

	  </descrip>

    <sect><heading>デバイスノードを作る<label id="kernelconfig:nodes"></heading>

      <p>カーネル内のほとんどすべてのデバイスは対応する ``node'' エント
	リが <tt>/dev</tt> ディレクトリにあります. これらのノードは普
	通のファイルのように見えますが, 実際にはプログラムがデバイスに
	アクセスするのに用いるカーネル内への特別なエントリです. 
	シェルスクリプトである <tt>/dev/MAKEDEV</tt>はオペレーティング
	システムを最初にインストールする時に実行され, サポートされてい
	る大部分のデバイスのノードを作ります. 
	しかし, <em>すべての</em>ノードが作られるわけではありませんので
	新しいデバイスのサポートを加える時は対応するエントリがこのディ
	レクトリにあるかどうか確認してもしなければ, 作ってください. 
	以下に例を示します. 

	IDE CD-ROMのサポートをカーネルに加えるとします. 次の行
	を加えます. 

<tscreen><verb>
controller wcd0
</verb></tscreen>

	これにしたがって, <tt>/dev</tt>ディレクトリに <tt>wcd0</tt>で始ま
	るエントリを捜してください. 1文字が後ろにつくかもしれません. 後
	ろについた文字が `c'であるか先に `r'のつくエントリは `raw'デバ
	イスを示します. 
	それらのファイルがないことが明らかになったとします. そこで
	<tt>/dev</tt> ディレクトリに移動して次のようにタイプします. 


<tscreen><verb>
# sh MAKEDEV wcd0
</verb></tscreen>

	スクリプトの実行が終ったら <tt>/dev</tt>に <tt>wcd0c</tt> と 
	<tt>rwcd0c</tt> エントリがあることを確認してください. これによ
	り正しく実行されたことがわかります. 


	サウンドカードの場合のコマンドは次の通りです. 
<tscreen><verb>
# sh MAKEDEV snd0
</verb></tscreen>

	これにより対応するエントリが作られます. 
	注: サウンドカードのようなデバイスのノードを作る場合で, もし他
	の人がマシンにアクセスするようであれば, そのデバイスを 
	<tt>/etc/fbtab</tt>ファイルに追加して外部からのアクセスから
	保護するのが望ましいでしょう. このファイルの詳細については 
	<tt>man fbtab</tt> を参照してください. 

	GENERICに含まれていないデバイスはエントリがありませんから,以上
	の簡単な手順をおこなうことになります.

	<quote><em/注:/ すべての SCSIコントローラは同じ <tt>/dev</tt>の
	エントリを使用しますのでノードを作る必要はありません. またネッ
	トワークカードと SLIP/PPP疑似デバイスは <tt>/dev</tt>にはエント
	リがありませんのでこれらについても作る必要がありません. 
	 </quote>

<sect><heading>問題が起きた場合には<label id="kernelconfig:trouble"></heading>

      <p>カスタムカーネルを作る場合に起きるトラブルは4種類に分けられま
	す. 

	<descrip>

	  <tag>Config コマンドの失敗</tag>

	  <p> カーネルにあなたの設定をおこなった場合で <tt>config</tt>コ
		マンドが失敗したのであれば, 多分どこかで単純な間違いを
		やっているのでしょう. さいわい, <tt>config</tt>はトラ
		ブルの起きた行番号を出力しますので <tt>vi</tt>で素早く
		見つけることができます. 例えばもし次のように出力されれ
		ば, 


<tscreen><verb>
config: line 17: syntax error
</verb></tscreen>

		<tt>vi</tt>のコマンドモードで ``17G''とタイプすればあな
		たは問題のところへ飛ぶことができます. GENERIC カーネル
		のファイルや他のリファレンスと比較して注意深く修正して
		ください. 


	  <tag>Make コマンドの失敗</tag>

	  <p> <tt>make</tt> コマンドが失敗した場合には, カーネル設定で
		<tt>config</tt>がとらえられなかったような間違いをして
		いることが多いようです. ふたたびコン
		フィグレーションを見直してください. それでも問題を解決
		することができなければ &a.questions
		へあなたのカーネルのコンフィグレーションをつけてメー
		ルしてください. 誰かが素早く間違いを見つけてくれるで
		しょう.

	  <tag>カーネルがブートしない<label id="kernelconfig:noboot"></tag>

	  <p>新しいカーネルがブートしなかったり, デバイスの認識をしな
		い場合でもあわてないでください! さいわい, BSDは利用で
		きないカーネルから復帰する優れたメカニズムがあります. 
		FreeBSDの bootプロンプトでリターンキーを押すかわりに
		単にブートさせたいカーネルの名前 (例えば 
		``kernel.old'') をタイプするだけです. カーネルの再設定
		をおこなう場合に現在のカーネルを利用できるように取ってお
		くのはよい考えです. 

		問題のないカーネルでブートした後にあなたのコンフィグレー
		ションファイルを調べ, 再び構築を試みてください. 
		<tt>/var/log/messages</tt> ファイルにはすべての成功した
		ブートのカーネルのメッセージやその他の記録があり, これ
		は助けになる情報の一つでしょう. また, 
		<tt>dmesg(8)</tt>コマンドは現在のブート時のカーネルメッ
		セージを出力します. 

	    <quote><em/注:/ カーネルの構築中にトラブルが起きた時に使
		うために GENERICや他のカーネルを次の構築で消されない
		ように異る名前で保存するようにしてください. 
		<tt>kernel. old</tt>は新しいカーネルをインストールする
		時に, その一つ前にインストールしたうまく動かないかもしれ
		ないカーネルで上書きされてしまいますので当てにできませ
		ん. またできる限り早く動作しているカーネルを本来の 
		``kernel''の位置に移動させてください. そうしないと
		<tt>ps(1)</tt>のようなコマンドが正しく動きません. 
		<tt>make</tt> でインストールされたカーネルのファイルを
		(別のカーネルに戻すために) 「アンロック」するための特別
		のコマンドは
<tscreen><verb>
# chflags noschg /kernel
</verb></tscreen>
		です. また, 新しい置き換えたカーネルあるいは重要ファイ
		ルを動かしたり変更されないように「ロック」するには
		次のようにします. 
<tscreen><verb>
# chflags schg /kernel
</verb></tscreen>
	    </quote>

	  <tag>カーネルは動くが <tt>ps</tt> は動かない!</tag>

	  <p>システムユーティリティと異るバージョンのカーネルをインス
	トールした場合, 例えば 実験的に ``2.2.0''のカーネルを
	2.1.0-RELEASEシステム上にインストールするような場合, 
	<tt>ps(1)</tt>や <tt>vmstat(8)</tt>のような多くのシ
	ステムステータスコマンドは動かなくなります. <tt>libkvm</tt> を
	再コンパイルしてこれらのユーティリティを作りなおす必要がありま
	す. これは, オペレーティングシステムのそれ以外の部分と異るバージョ
	ンのカーネルを使うことが普通はあまりよくない理由の一つです. 

    </descrip>
