diff --git a/ja/handbook/kernelconfig/chapter.sgml b/ja/handbook/kernelconfig/chapter.sgml
index 54c76f3d5d..4176b86128 100644
--- a/ja/handbook/kernelconfig/chapter.sgml
+++ b/ja/handbook/kernelconfig/chapter.sgml
@@ -1,1817 +1,1818 @@
FreeBSDカーネルのコンフィグレーション
原作: &a.jehamby;.
6 October 1995.
訳: &a.jp.tomo;, &a.jp.yoshiaki;.
2 November 1996.
この章はシステムに合わせたカーネルの再構築の基礎について
述べたものです. この章は, システム管理の初心者から Unix
システム管理に十分な経験を積んだ人までを対象としています.
なぜカスタムカーネルを作るか?
システムに合わせたカーネルの構築はすべての
Unixシステム管理者が
避けて通ることのできない最も重要な通過儀礼の1つです.
この作業は, 多くの時間を必要としますが, あなたの FreeBSD
システムに多くの利益をもたらします.
GENERICカーネルは,
めったに使われることのないハードウェアをサポートするとともに,
考えられるすべての SCSIカードやネットワークカードをサポート
しなければなりませんが, システムに合わせたカーネルは
あなたの PC
のハードウェアのみをサポートします. これは,
次にあげるような利益をもたらします.
あなたが持っていない
ハードウェアについては検出をおこなわな いので,
ブートにかかる時間が短くなります.
システムに合わせたカーネルは多くの場合メモリ使用量が
減ります. カーネルはいつもメモリ上に存在するので,
不必要なコードがあると本来プログラムが利用できるはずの RAM
(実メモリ) を占めてしまいますのでこれは重要なことだ
といえます. したがって, メモリが少ないシステムでは,
カーネルの再構築は大変重要です.
必要に応じていくつかのカーネルオプションは調整すること
ができ, またサウンドカードのような GENERICカーネルには
ない
デバイスドライバをカーネルに含めることが できます.
カスタムカーネルの構築とインストール
まず,
カーネル再構築に必要なディレクトリをざっと見てみましょう.
ここではディレクトリはすべて
/usr/src/sys以下の相対位 置で示します.
また, /sysからもアクセス可能です.
ここには, カーネルの各部分を構成するサブディレクトリが
いくつもあります. しかし, 私たちの目的では 最も重要なのは
i386/confです. ここで, あなたの
システムに合わせてカーネル コンフィグレーションを編集します.
それから compileディレクトリ,
ここはカーネルが作られる 場所です.
サポートされているデバイスやファイルシステムのディレ
クトリツリーがオプション毎にサブディレクトリに分かれている論理
的構成に注意してください. また,
i386のディレクトリは
PCのハードウェアのみを扱い,
i386以外のディレクトリは
FreeBSDが他のプラットフォームに移植される際には共有されるコー
ドです.
もし, あなたのシステムに/usr/src/sys
以下のディレクトリがなければ,
カーネルのソースが インストールされていません.
もっとも簡単な方法は (rootで)
/stand/sysinstall
を用いて以下のようにします. 設定(Configure)
を選んでから 配布ファイル(Distribution)
を選択し, src の中の sys
をインストールしてください.
つぎに, i386/confに移動して,
GENERIC
コンフィグレーションファイルをカーネルに与えたい名前に
コピーしてください. たとえば:
&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; cp GENERIC MYKERNEL
慣習として, この名前はすべて大文字でつづられます. もし,
いくつかの異なるハードウェアの FreeBSDマシンを扱うなら,
この名前にホスト名を含めるとよいでしょう. ここでは, 例として
MYKERNEL と呼ぶことにします.
この作業は root権限でおこなう必要があります.
そうでなければ, permission
deniedというエラーが出ます.
では, MYKERNEL
をあなたの好きなエディタで編集してください. もし,
システムをインストールしたばかりならば, 利用できるエディタは
viだけかもしれません. ここでは使い方
の説明はしませんが, 参考図書
にあるような多くの本で詳しく説明 されていますので,
そちらを参照してください. FreeBSD にはより簡単なエディタとして
“ee&rdquo があります. 初心者の方であればこちらをエディタ
に選ぶとよいでしょう.
まずファイルの最初の方のコメント行を編集し, あなたのコンフィグ
レーションに合せて変更した点などを記述して
GENERIC と区別がつく
ようにしておきましょう.
もし SunOSや他の BSDオペレーティングシステムでカーネルの
再構築をしたことがあれば, このファイルはとても親しみ
やすいでしょう. しかし, DOSのようなその他の
オペレーティングシステムしか知らない人から見れば,
GENERIC
コンフィグレーションファイルはとても
なじみにくいものかもしれません. そのような場合は, コンフィグレーションファイル
の節をゆっくりと注意深く読んでください.
古いバージョンの FreeBSD からアップグレードを
おこなう場合,
新しいカーネルソースを得た場所より新しいバージョンの
&man.config.8; を取ってくる必要があるかもしれません. これは
/usr/src/usr.sbinにあります.
したがってこれらのソースをダ ウンロードする必要があります.
次のコマンドを実行する前に
(configを)作りインストールをしておいてください.
編集し終ったら, 次のコマンドによってコンパイル, インストール
を行ってください.
&prompt.root; /usr/sbin/config MYKERNEL
&prompt.root; cd ../../compile/MYKERNEL
&prompt.root; make depend
&prompt.root; make
&prompt.root; make install
新しいカーネルはルートディレクトリに
/kernelという 名前でコピーされ,
今までのカーネルは /kernel.old
という名前へ変更されます. では, システムをシャットダウン, リブー
トして新しいカーネルを使ってください. うまく行かない場合は,
この章の終りの 問題が起きた場合には
を参照してください. この章の新しい カーネルがブートしない
場合のリカバリの方法を注意深く読んでおいてください.
(サウンドカードのような)新しいデバイスを 追加した場合は,
使う前に /devディレクトリで
デバイスノードを追加しなければならないかもしれません.
詳しくは, デバイスノード
を読んでください.
コンフィグレーション ファイル
コンフィグレーション ファイルの一般的なフォーマット
はとてもシンプルです. 各行は1つのキーワードと1つ以上の
引数を含んでいます. 見やすくするために, ほとんどのキーワードは
引数を1つしか書いてありません.
#に続くものはすべてコメントとして扱われ,
無視されます. ここでは, それぞれのキーワードについて だいたい
GENERIC に出てくる順番で説明します. しかし,
お互いに関係のあるキーワードは, 実際には
GENERIC ファイル上に
バラバラに現れていても, (ネットワーキングのように)1つにまとめ
てあります. おびただしい数の
オプションの一覧が
GENERICと同じディレクトリの
LINT コンフィグ
レーションファイルにあります. もし, ある行の目的や必要性に疑
問を持ったら最初に LINT
をチェックしてください.
カーネルは現在, オプションを扱う方法をよりよい機構に移行しよ
うとしています. 従来は, 各々のオプションは単純にカーネルの
Makefile中の CFLAGS行の
スイッチに変換されて いました.
自然とオプションは際限なく増えて行きます. だれも実際に
はどのオプションがどのファイルで参照されているかは知りません.
新しい方法では, すべてのオプション依存の
#ifdefは当該オプショ ンを
opt_foo.h
(これらのファイルはconfigによって
compileディレ クトリに作られます)
から読み込むように変わりました. config
の有効なオプションのリストは2つのファイルにお かれます.
アーキテクチャに依存しないオプションは
/sys/conf/optionsに置かれ,
アーキテクチャ依存のオプションは
/sys/arch/conf/options
に置かれます. arch の部分は例えば
i386となります.
必須キーワード
ここにあるキーワードはカーネルの構築に必要不可欠です.
machine "i386"
最初のキーワードは machineです.
FreeBSDは Intelの 386(とその互換)チップあるいは alpha
プロセッサ上でのみ動作するので
i386 か
alphaを指定します.
数字を含むキーワードはすべて
クォーテーションマークで囲む必要があります.
そうせずに,machine i386 と入力すると
configは混乱して
386を実際の数値として扱ってしまいます.
cpu "cpu_type"
次のキーワードは cpuです.
FreeBSDでサポートしている CPUの中から記述します.
i386 システムではcpu_type
として指定可能な値は次の通りです:
I386_CPU
I486_CPU
I586_CPU
I686_CPU
Alpha システムでは指定可能な
cpu_type は
次の通りです:
EV4
EV5
GENERIC カーネルのように
cpuの行の
cpu_type
が異なった値を持つものが 複数あってもかまいません.
カスタムカーネルでは, あなたが持っている
cpuを1つだけ指定するのが 一番です. 例えば, もし Intelの
Pentiumを持っていれば,
cpu_typeには,
I586_CPU を使ってください.
ident machine_name
次は,
カーネルの識別名となるidentです.
GENERIC
からあなたがカーネルに与えたい名前に 変えてください.
ここでは, MYKERNEL とします.
identに与えた名前はカーネルの
ブート時に表示されるので, 普段のカーネルとは別に
カーネルに違う名前を与えたいとき(例えば,
実験用のカーネルを作りたい時など), 便利でしょう.
数字を含む名前にしたい場合は
machineや cpu
の時と同じようにクォーテーションマークで
囲む必要があります.
C コンパイラに
スイッチで渡されるので,
DEBUGのような名前にしたり,
vax
といった他のCPUの名前など紛らわしい名前にしないで
ください.
maxusers number
これは, 重要なシステムテーブルのサイズを決めます.
ここ
で与えられる数字はマシンに同時にログインすると考えられ
るおよそのユーザ数です. しかし, 通常の使用環境であれば,
特に X Window System を立ち上げたり, ソフトウェアを
コンパイルするような使用であれば
maxusersには少 なくとも
4 以上を指定したほうがいいでしょう.
その理由は, maxusers
で決るテーブルで最も重要なものはプロセス
の最大数であるからです. プロセス最大数は 20 +
16 * maxusersで与えられ,
maxusersを1
にすると36プロセスしか同時には持てません. この中にはブー
ト時にシステムによって起動する18個ぐらいのプロセス, Xを
起動する時の15程度のプロセスも含みます.
manページを読むという1つのタスクでさえ, フィ
ルタやファイル伸長や表示のために9つのプロセスを起動し
ます. maxusersを4
にすれば, 同時に84個のプロセ
スを持つことができるのでどんな人でも十分な数だといえる
でしょう. それでも他のプログラムを起動した場合に,
あるいは, (Walnut Creek CDROMのFTPサイトのように)
同時に多くの ユーザを抱えるサーバを走らせた場合に
proc table full
というおぞましいエラーが起きる場合はこの値を増や し,
カーネルを再構築してください.
maxuserはあなたのマシン
にログインできるユーザの数を制限するものでは
ありません. 単に,
あなたのシステムに
ログインするユーザ数の最大値と各々のユーザが
いくつのプロセスを走らせるかを考慮することに
よってさまざまなテーブルの値を適切な値に設定
するだけです. これに対し, pseudo-device pty
16の remote
loginsというキーワードは
同時にリモートログインできるユーザ数を制限
します.
config kernel_name root on root_device
これはカーネルの位置と名前を特定します.
伝統的にカーネルは
vmunixと呼ばれますが, FreeBSDでは
kernelとふさわしい名前になりました.
kernel_nameにはいつも
kernel を 使ってください.
名前を変えると多くのシステム
ユーティリティが使えなくなります. 2番目の部分は
ルートファイルシステムとカーネルのあるディスクと
パーティションを指定してください.
SCSIドライブでなければ, wd0を,
SCSIドライブならば da0です.
一般的なオプション
以下はカーネルのサポートするさまざまなファイルシステムおよ
びその他のオプションです.
options MATH_EMULATE
これは, 数値演算コプロセッサがない コンピュータ
(386や486SX) で数値演算コプロセッサ
のエミュレーションを可能にします. もし, Pentiumや 486DX,
あるいは387や487があれば, コメントアウト
できます.
FreeBSD付属の数値演算
コプロセッサエミュレータはあまり正確では
ありません.
非常に正確な計算をおこないたい ならば, より優れた
GNUのエミュレータである
GPL_MATH_EMULATEに変えることを
おすすめします. これはライセンスの関係でデフォルトでは
含まれていません.
options "COMPAT_43"
4.3BSDとの互換性のためのオプションです.
そのままにしておいてください. コメントアウトすると,
いくつかのプログラムで動作がおかしくなります.
options BOUNCE_BUFFERS
ISAデバイスやISA互換モードで動作する EISAデバイス
では DMA (Direct Memory Access) は16MB以下のメモリに対し
てのみ動作します. このオプションによりメモリが16MB以上
のシステムで DMA
を使うデバイスを動作させることができます.
options UCONSOLE
ユーザがコンソールを横取り (grab)
できるようにします. これは X Window System
上で便利です. 例えば, コ ンソール xtermを xterm
-Cとタイプして作ると, そこに
write, talk
などのメッセージがカーネルからコ
ンソールへ送られるメッセージと同じように表示されます.
options SYSVSHM
このオプションは System V の共有メモリを提供します.
X Window System の XSHM拡張での利用がもっとも一般に見
られる例で, 多くのグラフィックを多用したプログラム
(movie player の Xanimや Linux DOOMなど) ではこれを
利用することで速度が増加するというメリットがあります. X
Window System を利用するのであればこれは間違いな
く含めたくなるでしょう.
options SYSVSEM
System V のセマフォをサポートします.
一般的に利用される
ことは少ないですがカーネルサイズの増加は数百バイトだ
けです.
options SYSVMSG
System V のメッセージをサポートします.
これを指定した場
合もカーネルサイズの増加は数百バイトだけです.
&man.ipcs.1; コマンドは これらの System V
の機構を利用しているプロセスを表示し ます.
訳注: 共有メモリ, セマフォ,
メッセージ(メッ セージキュー) は System V系
で一般的なプロセス間通信の機 構です. くわしくは System
Vのプロセス間通信に関する文 献, 「詳解
UNIXプログラミング」 (ソフトバンク) , 「UNIXネッ
トワークプログラミング」 (トッパン)
などを参照してくださ い.
ファイルシステムオプション
これらのオプションはさまざまなファイルシステムへのサポート
を追加します. 少なくともブートするためのデバイスのサポートを含
める必要があります. 標準的にはハードディスクからブートするので
あれば FFS ,
ディスクレスワークステーションとしてイー
サネットからブートするのであれば NFSです.
一般的に利用される他のファイルシステムをカーネルに含め, あまり
利用しないファイルシステム (多分 MS-DOSファイルシステム?)
のサポー トをコメントアウトすることができます. これは
Kernel Module ディレクトリ /modules から,
最初にそのタイプのファイ ルシステムがマウントされる時に
動的にドライバがロードされるからです.
options FFS
基本的なハードドライブ ファイルシステムです.
ハードディ
スクからブートする場合は残しておいてください.
options NFS
ネットワーク ファイルシステムです. Ethernet経由で
Unixファ
イルサーバからパーティションをマウントする予定がない場
合はコメントアウトすることができます.
options MSDOSFS
MS-DOS ファイルシステムです. ブート時に
DOSフォーマット のハード
ドライブをマウントする予定のない場合はコメン
トアウトしても安全です. 先に示したように, DOSパーティ
ションをマウントする時に自動的にロードされます. また
(ports コレクションにある)
mtools という素晴
らしいソフトウェアにより mount , unmountなしで DOSフロッ
ピーにアクセスすることができます (これは MSDOSFSも必要
ありません).
options "CD9660"
CD-ROMのための ISO 9660 ファイルシステムです.
CD-ROMを 持っていないか, 時々 データ
CDをマウントするだけならコ メントアウトしましょう
(データ CDを最初にマウントする
時に動的にロードされます). オーディオ CDはこのファイル
システムは必要ありません.
options PROCFS
プロセス ファイルシステムです.
これは疑似的なファイルシ ステムで
/proc にマウントされ,
&man.ps.1; などのプロ
グラムがプロセスに関してより詳しい情報を与えてくれるよ
うになります.
options MFS
メモリマップド ファイルシステムです.
これは基本的に一時 ファイルを記憶するための高速な
RAMディスクで, 大きな swap領域がある場合に有効です.
MFSパーティションをマウ
ントするに適した場所は多くのプログラムが一時ファイルを
置く /tmpです. MFS RAMディスクを
/tmp にマウントするには以下の内容を
/etc/fstabに追 加してリブートするか
mount /tmpとタイプします.
/dev/wd1s2b /tmp mfs rw 0 0
/dev/wd1s2bをあなたが使用して
いるswap パーティションに置き換えてください. これは以
下のように /etc/fstab
に書かれているでしょう.
/dev/wd1s2b none swap sw 0 0
また, MFS ファ
イルシステムは動的にロードすることは
できません .
したがって使いたい場合はコンパイル時に カーネルに
含める必要があります.
options "EXT2FS"
Linux のファイルシステム. ext2fs のサポートにより,
Linux パーティションを読み書きすることができます.
これは, FreeBSD と Linux
のデュアルブートシステムにおいて
両者でデータを共有したい場合に有用です.
options QUOTA
ディスククォータを有効にします.
アクセスが公開されてい るシステムで (一人のユーザが)
/homeパーティショ ン (全体)
をあふれさせることができないようにそれぞれのユーザ
にディスククォータを発行することができます.
ディスククォータについての詳しい内容はディスク
クォータの章を見てください.
基本的なコントローラとデバイス
この節では FreeBSDでサポートされているディスク, テー プ,
CD-ROMコントローラについて示します. SCSI コントローラと ネットワーク
カードについ ては別の節になっています.
controller isa0
FreeBSD のサポートするすべての PCで必要です. IBM
PS/2 (マイ クロチャネルアーキテクチャ) では現時点では
FreeBSDは動 きません.
controller pci0
PCIバスを持つマザーボードの場合は含めます.
これにより PCIカードの自動認識と PCIから
ISAバスへのゲートウェイが 可能になります.
controller fdc0
フロッピードライブコントローラです.
fd0 は A:
ドライブで fd1 は
B: ドライブです.
ft0 は
フロッピーコントローラに接続する QIC-80 テープドライブで
す. 対応するデバイスがない場合はそれぞれの行をコメント
アウトしてください.
QIC-80テープのサポートは別に
&man.ft.8; というフィルタプログラムが必要です.
くわしくはマニュアルページを見てください.
controller wdc0
プライマリIDEコントローラです.
wd0 と
wd1はそれぞれマスタ,
スレーブドライブで す. wdc1 は
セカンダリの IDEコントローラで3台 目,
4台目のハードディスクまたは IDE CD-ROMのある場合に
使います. 利用しない行はコメントアウトしてください (例え
ば, SCSIハードディスクのみを使う場合は6行全部をコメント
アウトしてもよいかもしれません).
device wcd0
このデバイスは IDE CD-ROMのサポートをします.
wdc0を有効にしておく必要があり, もし
2つ以上の IDE コントローラがあり, そのうちの
2つ目のカードに CD-ROMを接 続する場合
wdc1 も必要です. また
options ATAPI
を書いておく必要もあります.
device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
npx0 は FreeBSD
ハードウェアコプロセッサとソフト
ウェアエミュレータ両方の浮動小数点演算ユニットへのインタ
フェースです. これは 不可欠
です.
device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr
Wangtek と Archive の QIC-02/QIC-36
テープドライブのサポートです.
Proprietary CD-ROM support
以下のようなドライブを
proprietary(独自の) CD-ROM
ドライブと呼ぶことにします. これらのドライブは専
用のコントローラを持つか, サウンドブラスタ16などのサウ
ンドカードに接続します. これらは IDEでも
SCSIでもあ りません.
多くの標準速や2倍速の古い CD-ROMはこれら
のインタフェースを持っていますが, より新しい四倍速の
ものは IDE か
SCSI
でしょう.
device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr
ミツミ製 CD-ROM (LU002,
LU005, FX001D)です.
device scd0 at isa? port 0x230 bio
ソニー製 CD-ROM (CDU31,CDU33A)です.
controller matcd0 at isa? port ? bio
松下/パナソニック製 CD-ROM (サウンドブラスタ用
クリエィティブ ラボ製として販売されていました)
です.
SCSI デバイスのサポート
この節では FreeBSDのサポートするいろいろな SCSIコント
ローラとデバイスのサポートについて書きます.
SCSI コントローラ
以下の十数行は異る種類の
SCSIコントローラのサポートです.
使用しているもの以外の部分は
コメントアウトしてください.
controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr
ほとんどの Buslogic社のコントローラです.
controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
UltraStor 14F と 34F です.
controller ahc0
Adaptec 274x/284x/294x です.
controller ahb0 at isa? bio irq ? vector ahbintr
Adaptec 174x です.
controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr
Adaptec 154x です.
controller aic0 at isa? port 0x340 bio irq 11 vector aicintr
Adaptec 152x や
サウンドカードなどに使われている Adaptec AIC-6360
チップです. (slow!)
controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr
NCR 5380を使っている ProAudioSpectrum や
Trantor T130 で す.
controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr
Seagate ST01/02 8 ビットコントローラです.
(slow!)
controller wds0 at isa? port 0x350 bio irq 15 drq 6 vector wdsintr
Western Digital WD7000コントローラです.
controller ncr0
NCR 53C810, 53C815, 53C825, 53C860, 53C875
チップを使った PCI SCSI コントローラです.
これにより Diamond FirePort コントローラも
サポートします.
options "SCSI_DELAY=15000"
このオプションによりカーネルはそれぞれの
SCSIデバイスをプローブする前に 15秒間待ちます.
IDEドライブのみを使用している場合は無視して構いません.
ブートを速くするためにこの数値を
5秒ぐらいまで小さくしたいでしょう. そうした場合,
FreeBSDが SCSIデバイスを認識しにくくなるかもしれません.
その時は, もちろんこのオプションの値は元に戻
さないといけません.
controller scbus0
SCSIコントローラがある場合, この行で
SCSI全般のサポー トを与えます. SCSIのない場合,
この行と以下の3つの行をコメ
ントにすることができます.
device da0
SCSIハードディスクのサポートです.
device st0
SCSIテープドライブのサポートです.
device cd0
SCSI CD-ROM のサポートです.
上のエントリについている
0はいくらか誤解を招き
やすいかもしれません. これらのデバイスはすべてカーネルが
見つけた時に割り当てがおこなわれ,
SCSIバスに何台つながってい るか, ターゲット
IDが何番であるかはここの記述とは関係あ りません.
明示的に “固定的な”ターゲット
IDの特定のデバイスへの 割り当てをおこないたい場合は
LINT
カーネルコンフィグレーションファイルの
該当する部分の説明を参照してください.
コンソール, バスマウス, キーボード, Xサーバのサポート
2 つのタイプのコンソールからどちらか 1
つを選ぶ必要があります. 標準ではない方の vt220
コンソールを選んだ場合, X Window System を利用するには XSERVER
オプションを有効にする必要があります (訳注: sc0 には XSERVER
オプション相当の機能が始めから入っています).
またバスマウスと PS/2 マウスのオプションもあります.
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
sc0
はデフォルトのコンソールドライバで SCOコン
ソールに似ています. このデバイス, あるいは VT220コンパ
チブルドライバの
vt0いずれを使う場合もほとんど
のフルスクリーンプログラムは
termcapなどのターミナルデータベース
ライブラリを通してアクセスしますので,
あまり違いはないでしょう.
このコンソールを使う場合でフルスクリーンプログラムでト
ラブルが起きる場合にはログインした時に
TERM変数の値を
“scoansi”にしてください.
controller atkbdc0 at isa? port IO_KBD
tty
atkbdc はキーボードコントローラで
ATキーボードと PS/2タイプのポインティングデバイスを
サポートします. このコントローラはキーボードドライバの
atkbd と PS/2 ポインティングデバイス
ドライバのpsmが必要とします.
options
"KBD_RESETDELAY=X", options
"KBD_MAXWAIT=Y"
キーボードドライバの atkbd
- と atkbd はブート処理を行なっている
+ とポインティングデバイスドライバの psm
+ はブート処理を行なっている
時にデバイスのリセットを行なうために
atkbdc に要求を出すでしょう.
デバイスがリセットコマンドに対して応答を返すまでに
長い時間がかかる場合があります. これらのオプション
は atkbdc がどれだけの時間待つか
を制御します — ドライバは最大
X *
Y ミリ秒待ちます.
もし, ドライバがデバイスを見つけることが
できないようであれば, これらの値を増やすことが
できます. デフォルト値は
X
が 200m秒で Y は5回です.
options
"KBDIO_DEBUG=N"
デバッグレベルを N
に設定します.
デフォルト値は 0 で, デバッグ出力は全て抑制されます.
atkbdcデバイスはシステム中
設定できるのは一つだけです.
device atkbd0 at isa? tty irq 1
- atkbd ドライバは, together with the
+ atkbd ドライバは,
atkbdc コントローラと一緒に利用され,
ATキーボードコントローラに接続された AT 84 キーボードや
AT拡張キーボード のアクセスを提供します.
device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint
これはVT-220コンパチブルコンソールドライバで
VT100/102の 上位互換です. これは
sc0の使えない種類のラッ
プトップ機でもうまく動きます. ログイン時に
TERM変数の値 を>vt100
か vt220にしてください. また,
このドラ
イバはネットワークを介して多くの異るマシンから接続する
場合も便利です.
sc0デバイスのための
termcapや
terminfoエントリは必ずしも
利用できるわけではありませんが —
vt100はいずれの
プラットフォームでも利用可能でしょう.
options "PCVT_FREEBSD=210"
vt0
コンソールドライバを使う場合に必要で す.
options XSERVER
vt0
コンソールドライバを使う時のみ有効です. これは
vt0 コンソールドライバのもとで
XFree86 X
サーバを動かすのに必要なコードを含めます.
device mse0 at isa? port 0x23c tty irq 5 vector ms
Logitech や
ATIのバスマウス入力カードを利用する場合のデ
バイスです.
シリアルマウスを使う場合にはこれら2つ
の行(バスマウスとPS/2マウスに関する行) は無視して,
代わりに シリアル
ポート(おそらくはCOM1)を有効にしてくだ さい.
device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
このデバイスは
PS/2マウスポートにマウスを接続する場合に
使います.
シリアル, パラレルポート
ほとんどすべてのシステムにこれらはあります.
プリンタを接続す る場合は プリンタの利用の章が非常
に役に立つでしょう. モデムを使う場合は ダイヤルアップ アクセス
に非常に詳しいシリアルポートの設定とデ
バイスの使い方があります.
device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
sio0からsio3は
MS-DOSにおける COM1から
COM4に相当する4本のシリアルポートです.
COM4に内蔵モデムがあり COM2を使う場合, FreeBSDからアク
セスするためにはモデムのIRQを2へ変更する必要があるとい
うことを注意しておきます (技術的な理由より IRQ 2 = IRQ
9となります).
マルチポートシリアルカードを使う場合にマニュアルページ
の &man.sio.4; にはこのオプションで使う値などのよ
り多くの情報があります. ビデオカードの中には (特に S3
チップベースのものには) IOアドレスの
0x*2e8から を利用するものがあり,
また多くの安価なシリアルカードは
IOアドレス空間を16-bitフルデコードしていませんので, こ
れらのカードは衝突します. この場合 COM4ポートは実質上
利用できません.
それぞれのシリアルポートは
(割込みの共有をサポートした
マルチポートカードを利用していないのであれば) 別々の IRQ
を割り当てる必要がありますので COM3と COM4のデフォルトの
IRQは利用できません.
device lpt0 at isa? port? tty irq 7 vector lptintr
lpt0 から
lpt2は利用可能な3本のプリン
タポートです. 多くの場合は1本のみですので他の2本はない
のであればコメントアウトして構いません.
ネットワーク
FreeBSDでは他の一般的な
Unixと同様にネットワークが非常に
重視されています. イーサネットカードが
なくても必須のオプションとダイヤルアップ ネットワークのサポー
トに注意してください.
options INET
ネットワーキングのサポートです.
ネットワークに接続する予定がな
くても残しておいてください.
多くのプログラムは少なくともループ
バックネットワーキングが必要です(つまり,
PCの中でネットワーク コネクションをおこないます).
したがってこのオプションは本質的 に不可欠です.
Ethernet cards
以下にさまざまなイーサネットカードを
有効にするオプショ ンを示します.
ネットワークカードがなければこれらすべてを
コメントアウトすることができます. そうでなければ利用す
る特定のイーサネットカードをサポートするオプションを残
しておきます.
device cs0
IBM Etherjet 及び クリスタル・セミコンダクタ社
の CS89x0ベースのアダプタです.
device de0
DECの DC21040, DC21041, DC21140チップを使った
PCIイーサネットアダプタです.
device fxp0
Intel EtherExpress Pro/100B
高速イーサネットカード です.
device vx0
3Com の 3C590, 3C595です (いくらか
bugがあります).
device cx0 at isa? port 0x240 net irq 15 drq 7 vector cxintr
Cronyx/Sigma の
マルチポート同期/非同期カードです. (with Cisco or
PPP framing)
device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr
Western Digital と SMC の 80xx, 8216 Elite
Ultra ; ノベル NE1000, NE2000; 3Com の 3C503;
HPの PC Lan Plus (HP27247B とHP27252A)
です.
device el0 at isa? port 0x300 net irq 9 vector elintr
3Com の 3C501 です. (slow!)
device eg0 at isa? port 0x310 net irq 5 vector egintr
3Com の 3C505です.
device ep0 at isa? port 0x300 net irq 10 vector epintr
3Com の 3C509 です(バグがあります).
device fe0 at isa? port 0x240 net irq ? vector feintr
富士通 MB86960A/MB86965A
ベースのイーサネットカード です.
device fea0 at isa? net irq ? vector feaintr
DEC DEFEA EISA FDDI アダプタです.
device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr
AT&T StarLAN 10 と EN100; 3Com の 3C507;
NI5210; Intel EtherExpress 16 です.
device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
DEC の EtherWorks 2 and EtherWorks
3 (DEPCA, DE100, DE101, DE200, DE201, DE202,
DE203, DE204, DE205, DE422)です.
device lnc0 at isa? port 0x300 net irq 10 drq 0 vector lncintr
Lance/PCnet カード (Isolan, Novell NE2100,
NE32-VL)です.
device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr
IBM/ナショナルセミコンダクタの PCMCIA
イーサネット コントローラです.
device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr
3Com の PCMCIA Etherlink III です.
いくつかのカードでは (特に NE2000では)
“標準値” がありませんので
IOポートやIRQの値を変更す
る必要がある場合があります.
pseudo-device loop
loop は
TCP/IPの一般的なループバックデバイスで す. telnet や
FTPを localhost (127.0.0.1)
に対して行なうとこの疑似デバイスを通して帰ってきます.
不可欠です.
pseudo-device ether
ether
はイーサネットカードがある場合のみ必要で
一般的なイーサネットプロトコルを含めます.
pseudo-device sl number
sl は SLIP (Serial Line Internet
Protocol) をサポー トします. これはほとんど完全に,
より簡単に設定ができ, モ デム to モデム接続に適した,
よりパワフルな PPPに取って代 わられています.
slの後の
number は同 時にいくつの
SLIPセッションをサポートするかを示します.
SLIPの設定のより詳しい情報はこのハンドブックの
「PPPとSLIP」の章の SLIPクライアントのセットアップ
と SLIP
サーバのセットアップ方法
について書かれた節にあります.
pseudo-device ppp number
pppはダイヤルアップ
インターネット接続のための カーネルモード PPP
(Point-to-Point Protocol) をサポート します.
ユーザアプリケーションとしてtun
を 利用する PPPの実装もあり,
こちらはより柔軟性がありデマ
ンドダイアリング(プログラムが接続要求を出した時に自動
的にダイヤルをおこなう)などの機能もあります. それでもこ
の PPPドライバを利用したい場合は カーネル PPP の設定
の節を読んでください.
slデバイスと同じように
numberは同時 に
PPP接続できる数を示します.
pseudo-device tun number
tun はユーザモード
PPPソフトウェアが利用しま す.
このプログラムは設定が簡単で非常に高速です.
また自動ダイヤル オン デマンドなどの機能を持ちます.
tunの後のnumber
は同時におこなうことのできる
PPPセッションの数を示します. ユーザ PPP のセットアップ
の節により多くの情報があ ります.
pseudo-device bpfilter number
バークレイ パケットフィルタです.
この疑似デバイスはネッ トワークインタフェースを無差別
(promiscuous) モードにし てネットワーク
(例えば単一のイーサネット) にブロードキャス
トされるすべてのパケットを取り入れることを可能にします.
こ れらのパケットはディスクに取り入れられたり
&man.tcpdump.1; によって検査されます. この機能の実現
はネットワーク全体のセキュリティとの微妙な妥協点であるこ
とに注意してください. bpffilter の後の
numberは同時に検査することの
できるインタフェースの数を示します.
危険の可能性について十分解っている場合を除いてこのオプ
ションは奨めません. すべてのネットワークカードでこの機能
をサポートをしてはいません.
サウンドカード
ここは
GENERICカーネルに含まれていない最初のセクションです.
サウンドカードのサポートをするためには LINTコンフィグレーショ
ンファイル(これには すべての
デバイスが含まれています)か
ら以下のような適切な行をコピーする必要があります.
controller snd0
サウンドドライバ一般のコードです.
pca
を除く以下のすべてのサウンドカードで必要で す.
device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr
ProAudioSpectrum のオーディオ と MIDI です.
device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr
SoundBlaster です.
SoundBlaster の IRQが標準と異る値, 例えば
5になっている場合, irq
7をirq 5に書き換え,
キーワード conflictsを
削除してください.
device sbxvi0 at isa? drq 5
SoundBlaster 16 の 16-bit オーディオです.
SB16の DMAチャネルが標準と異っている( 例えば
- 6か7)キーワード drq
- 5を適切な値に書き直してください.
+ 6か7) 場合, キーワード drq 5
+ を適切な値に書き直してください.
device sbmidi0 at isa? port 0x330
SoundBlaster 16 の MIDI インタフェースです.
SoundBlaster 16を使う場合必ずこの行を含めてコンパイル
してください.
device gus0 at isa? port 0x220 irq 10 drq 1 vector gusintr
Gravis Ultrasound です.
device mss0 at isa? port 0x530 irq 10 drq 1 vector adintr
Microsoft Sound System です.
device opl0 at isa? port 0x388 conflicts
AdLib FMシンセサイザオーディオです. AdLib,
SoundBlaster, ProAudioSpectrum を使い
playmidi (ports にあります)
などのプログラムで
MIDIの演奏をしたい場合にこの行を含めます.
device mpu0 at isa? port 0x330 irq 6 drq 0
Roland MPU-401 カードです.
device uart0 at isa? port 0x330 irq 5 vector "m6850intr"
MIDIインタフェースの 6850 UART です.
device pca0 at isa? port "IO_TIMER1" tty
PC のスピーカーを使ったオーディオです.
これは非常に品質 が悪く, CPUの性能,
負荷に強く依存します, と言っておき ます
(サウンドカードは必要ありませんが).
device pcm0 at isa? port ? tty irq 10 drq 1 flags 0x0
pcm ドライバは WSS/MSS, Sound
Blaster Pro , Sound Blaster 16 などのいろいろな種類の
ISA サウンドカードをサポートします.
追加のドキュメントが
/usr/src/sys/i386/isa/sound/
にあります. また, これらのデバイスを追加する場合は,
サウンドデバイスノード
を作る必要があり ます.
疑似デバイス
疑似デバイスドライバはデバイスドライバと同様に働きますがマ
シン上に対応する実際のハードウェアがないカーネルの部分です.
ネットワーク関連の
疑似デバイスはそちらのセクションに示しました. ここでは残りにつ
いて示します.
pseudo-device gzip
gzipは
gzipによって圧縮された FreeBSDの
プログラムを実行できるようにします. /standにあるプログ
ラムは圧縮されているのでカーネルにこのオプションをつけ
ておくのはいい考えでしょう.
gzip は現在 a.out バイナリに
対してのみ動作します.
pseudo-device log
log
はカーネルエラーのログを取るのに使います.
不可欠です.
pseudo-device pty number
pty
は“仮想ターミナル”や仮想ログインポート です.
外部からの telnetや
rloginセッ ション, xterm,
emacsなどのアプリケーションが使います.
numberは作ることのできる
ptyの数を示 します.
GENERICのデフォルトは16で, 同時の
xtermウィンドウやリモー
トログインのために増やす場合は最大で 64までです.
pseudo-device snp number
スヌープデバイスです.
この疑似デバイスはあるターミナル セッションが
&man.watch.8; command によって他のター
ミナルを監視することを可能にします. この機能の実現はセ
キュリティとプライバシに対して極めて微妙な関係があり
ます. snp の後の number
は同時におこなうことのでき
るスヌープセッションの総数です. 選択可能です.
pseudo-device vn
V ノードドライバです. ファイルを &man.vnconfig.8;
コマンドによって
デバイスとして取り扱うことを可能にします.
このドライバによりフロッピーディスクイメージを
操作したりファ イルをスワップデバイスとして (MS
Windowsのスワッ プファイルなどを)用いることができます.
選択可能です.
pseudo-device ccd number
ccd (concatenated
disk)デバイスはいくつかのディスクパーティ
ションを融合して大きなディスクのように
見せることができます. ccdの後の
number
は同時に作ることのできる疑似ディスクの数です.
(詳しいことは &man.ccd.4; と &man.ccdconfig.8; のマニュ
アルを参照してください.) 選択可能です.
ジョイスティック, スピーカー, その他
この節は FreeBSDのここまでに示した以外のハードウェア
デバイスへのサポートについて示します. これらは GENERICカーネル
には含まれませんのでこのハンドブックや LINT (このファイルには
すべてのデバイスのサポートが含まれます)
からコピーする必 要があります.
device joy0 at isa? port "IO_GAME"
PC のジョイスティックです.
pseudo-device speaker
IBM BASIC スタイルの PC内蔵スピーカーのサポートです.
シェルスクリプトで簡単な演奏をする
/usr/sbin/spkrtest
やキーボードを使って単純なピ
アノのように演奏することができる
/usr/games/piano
(gamesパッケージをイ
ンストールした場合にはあります) のようないくつかのプロ
グラムで使われます. また素晴らしいテキストロールプレイ
ングゲームである NetHack
(ports コレクションにあります)
はゲーム中の楽器の演奏でこのデバイスを使うように設定を
することができます (訳注:日本語化されたJNetHackもportsに
あります).
pca0 デバイスの
項も参照してください.
デバイスノードを作る
カーネル内のほとんどすべてのデバイスは対応する
“node” エント リが /dev
ディレクトリにあります. これらのノードは普
通のファイルのように見えますが, 実際にはプログラムがデバイスに
アクセスするのに用いるカーネル内への特別なエントリです.
シェルスクリプトである
/dev/MAKEDEVはオペレーティング
システムを最初にインストールする時に実行され, サポートされてい
る大部分のデバイスのノードを作ります. しかし,
すべての
ノードが作られるわけではありませんので
新しいデバイスのサポートを加える時は対応するエントリがこのディ
レクトリにあるかどうか確認してもしなければ, 作ってください.
以下に例を示します.
IDE CD-ROMのサポートをカーネルに加えるとします. 次の行
を加えます.
controller wcd0
これにしたがって, /devディレクトリに
wcd0で始ま るエントリを捜してください.
1文字が後ろにつくかもしれません. 後 ろについた文字が
cであるか先に
rのつくエントリは “raw”デバ
イスを示します.
それらのファイルがないことが明らかになったとします. そこで
/dev
ディレクトリに移動して次のようにタイプします.
&prompt.root; sh MAKEDEV wcd0
スクリプトの実行が終ったら /devに
wcd0c と rwcd0c
エントリがあることを確認してください. これによ
り正しく実行されたことがわかります.
サウンドカードの場合のコマンドは次の通りです.
&prompt.root; sh MAKEDEV snd0
これにより対応するエントリが作られます.
サウンドカードのようなデバイスのノードを作る場合で, もし他
の人がマシンにアクセスするようであれば, そのデバイスを
/etc/fbtab
ファイルに追加して外部からのアクセスから
保護するのが望ましいでしょう. このファイルの詳細については
man fbtab を参照してください.
GENERIC
に含まれていないデバイスはエントリがありませんから,以上
の簡単な手順をおこなうことになります.
すべての SCSI コントローラは同じ /dev
の エントリを使用しますのでノードを作る必要はありません.
またネッ トワークカードと SLIP/PPP 疑似デバイスは
/dev にはエント
リがありませんのでこれらについても作る必要がありません.
問題が起きた場合には
カスタムカーネルを作る場合に起きるトラブルは 4
種類に分けられま す.
Config コマンドの失敗
カーネルにあなたの設定をおこなった場合で
configコ マンドが失敗したのであれば,
多分どこかで単純な間違いを やっているのでしょう. さいわい,
configはトラ
ブルの起きた行番号を出力しますので
viで素早く 見つけることができます.
例えばもし次のように出力されれ ば, config: line
17: syntax error
viのコマンドモードで
17Gとタイプすればあな
たは問題のところへ飛ぶことができます.
GENERIC カーネル
のファイルや他のリファレンスと比較して注意深く修正して
ください.
Make コマンドの失敗
make コマンドが失敗した場合には,
カーネル設定で config
がとらえられなかったような間違いをして
いることが多いようです. ふたたびコン
フィグレーションを見直してください. それでも問題を解決
することができなければ &a.questions;
へあなたのカーネルのコンフィグレーションをつけてメー
ルしてください. 誰かが素早く間違いを見つけてくれるで
しょう.
カーネルがブートしない
新しいカーネルがブートしなかったり,
デバイスの認識をしな い場合でもあわてないでください!
さいわい, BSDは利用で
きないカーネルから復帰する優れたメカニズムがあります.
FreeBSDの bootプロンプトでリターンキーを押すかわりに
単にブートさせたいカーネルの名前 (例えば
kernel.old) をタイプするだけです.
カーネルの再設定
をおこなう場合に現在のカーネルを利用できるように取ってお
くのはよい考えです.
問題のないカーネルでブートした後に
あなたのコンフィグレー ションファイルを調べ,
再び構築を試みてください.
/var/log/messages
ファイルにはすべての成功した
ブートのカーネルのメッセージやその他の記録があり, これ
は助けになる情報の一つでしょう. また,
&man.dmesg.8; コマンドは現在のブート時のカーネルメッ
セージを出力します.
カーネルの構築中にトラブルが起きた時に使うために
GENERICや他のカーネルを次の構築で消されない
ように異る名前で保存するようにしてください. kernel.old
は新しいカーネルをインストールする 時に,
その一つ前にインストールしたうまく動かないかもしれ
ないカーネルで上書きされてしまいますので当てにできませ
ん. またできる限り早く動作しているカーネルを本来の
kernelの位置に移動させてください.
そうしないと
&man.ps.1; のようなコマンドが正しく動きません.
make
でインストールされたカーネルのファイルを
(別のカーネルに戻すために)
“アンロック” するための特別
のコマンドは
&prompt.root; chflags noschg
/kernel
です. また,
新しい置き換えたカーネルあるいは重要ファイ
ルを動かしたり変更されないように
“ロック” するには 次のようにします.
&prompt.root; chflags schg
/kernel
カーネルは動くが
ps は動かない!
システムユーティリティと異る
バージョンのカーネルをインストールした場合, 例えば
実験的に “4.0” のカーネルを 3.1-RELEASE
システム上にインストールするような場合,
&man.ps.1; や &man.vmstat.8; のような多くの
システムステータスコマンドは動かなくなります.
libkvm を
再コンパイルしてこれらのユーティリティを作りなおす
必要があります. これは,
オペレーティングシステムのそれ以外の部分と異る
バージョンのカーネルを使うことが普通はあまりよくない
理由の一つです.
diff --git a/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml b/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml
index 54c76f3d5d..4176b86128 100644
--- a/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml
+++ b/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml
@@ -1,1817 +1,1818 @@
FreeBSDカーネルのコンフィグレーション
原作: &a.jehamby;.
6 October 1995.
訳: &a.jp.tomo;, &a.jp.yoshiaki;.
2 November 1996.
この章はシステムに合わせたカーネルの再構築の基礎について
述べたものです. この章は, システム管理の初心者から Unix
システム管理に十分な経験を積んだ人までを対象としています.
なぜカスタムカーネルを作るか?
システムに合わせたカーネルの構築はすべての
Unixシステム管理者が
避けて通ることのできない最も重要な通過儀礼の1つです.
この作業は, 多くの時間を必要としますが, あなたの FreeBSD
システムに多くの利益をもたらします.
GENERICカーネルは,
めったに使われることのないハードウェアをサポートするとともに,
考えられるすべての SCSIカードやネットワークカードをサポート
しなければなりませんが, システムに合わせたカーネルは
あなたの PC
のハードウェアのみをサポートします. これは,
次にあげるような利益をもたらします.
あなたが持っていない
ハードウェアについては検出をおこなわな いので,
ブートにかかる時間が短くなります.
システムに合わせたカーネルは多くの場合メモリ使用量が
減ります. カーネルはいつもメモリ上に存在するので,
不必要なコードがあると本来プログラムが利用できるはずの RAM
(実メモリ) を占めてしまいますのでこれは重要なことだ
といえます. したがって, メモリが少ないシステムでは,
カーネルの再構築は大変重要です.
必要に応じていくつかのカーネルオプションは調整すること
ができ, またサウンドカードのような GENERICカーネルには
ない
デバイスドライバをカーネルに含めることが できます.
カスタムカーネルの構築とインストール
まず,
カーネル再構築に必要なディレクトリをざっと見てみましょう.
ここではディレクトリはすべて
/usr/src/sys以下の相対位 置で示します.
また, /sysからもアクセス可能です.
ここには, カーネルの各部分を構成するサブディレクトリが
いくつもあります. しかし, 私たちの目的では 最も重要なのは
i386/confです. ここで, あなたの
システムに合わせてカーネル コンフィグレーションを編集します.
それから compileディレクトリ,
ここはカーネルが作られる 場所です.
サポートされているデバイスやファイルシステムのディレ
クトリツリーがオプション毎にサブディレクトリに分かれている論理
的構成に注意してください. また,
i386のディレクトリは
PCのハードウェアのみを扱い,
i386以外のディレクトリは
FreeBSDが他のプラットフォームに移植される際には共有されるコー
ドです.
もし, あなたのシステムに/usr/src/sys
以下のディレクトリがなければ,
カーネルのソースが インストールされていません.
もっとも簡単な方法は (rootで)
/stand/sysinstall
を用いて以下のようにします. 設定(Configure)
を選んでから 配布ファイル(Distribution)
を選択し, src の中の sys
をインストールしてください.
つぎに, i386/confに移動して,
GENERIC
コンフィグレーションファイルをカーネルに与えたい名前に
コピーしてください. たとえば:
&prompt.root; cd /usr/src/sys/i386/conf
&prompt.root; cp GENERIC MYKERNEL
慣習として, この名前はすべて大文字でつづられます. もし,
いくつかの異なるハードウェアの FreeBSDマシンを扱うなら,
この名前にホスト名を含めるとよいでしょう. ここでは, 例として
MYKERNEL と呼ぶことにします.
この作業は root権限でおこなう必要があります.
そうでなければ, permission
deniedというエラーが出ます.
では, MYKERNEL
をあなたの好きなエディタで編集してください. もし,
システムをインストールしたばかりならば, 利用できるエディタは
viだけかもしれません. ここでは使い方
の説明はしませんが, 参考図書
にあるような多くの本で詳しく説明 されていますので,
そちらを参照してください. FreeBSD にはより簡単なエディタとして
“ee&rdquo があります. 初心者の方であればこちらをエディタ
に選ぶとよいでしょう.
まずファイルの最初の方のコメント行を編集し, あなたのコンフィグ
レーションに合せて変更した点などを記述して
GENERIC と区別がつく
ようにしておきましょう.
もし SunOSや他の BSDオペレーティングシステムでカーネルの
再構築をしたことがあれば, このファイルはとても親しみ
やすいでしょう. しかし, DOSのようなその他の
オペレーティングシステムしか知らない人から見れば,
GENERIC
コンフィグレーションファイルはとても
なじみにくいものかもしれません. そのような場合は, コンフィグレーションファイル
の節をゆっくりと注意深く読んでください.
古いバージョンの FreeBSD からアップグレードを
おこなう場合,
新しいカーネルソースを得た場所より新しいバージョンの
&man.config.8; を取ってくる必要があるかもしれません. これは
/usr/src/usr.sbinにあります.
したがってこれらのソースをダ ウンロードする必要があります.
次のコマンドを実行する前に
(configを)作りインストールをしておいてください.
編集し終ったら, 次のコマンドによってコンパイル, インストール
を行ってください.
&prompt.root; /usr/sbin/config MYKERNEL
&prompt.root; cd ../../compile/MYKERNEL
&prompt.root; make depend
&prompt.root; make
&prompt.root; make install
新しいカーネルはルートディレクトリに
/kernelという 名前でコピーされ,
今までのカーネルは /kernel.old
という名前へ変更されます. では, システムをシャットダウン, リブー
トして新しいカーネルを使ってください. うまく行かない場合は,
この章の終りの 問題が起きた場合には
を参照してください. この章の新しい カーネルがブートしない
場合のリカバリの方法を注意深く読んでおいてください.
(サウンドカードのような)新しいデバイスを 追加した場合は,
使う前に /devディレクトリで
デバイスノードを追加しなければならないかもしれません.
詳しくは, デバイスノード
を読んでください.
コンフィグレーション ファイル
コンフィグレーション ファイルの一般的なフォーマット
はとてもシンプルです. 各行は1つのキーワードと1つ以上の
引数を含んでいます. 見やすくするために, ほとんどのキーワードは
引数を1つしか書いてありません.
#に続くものはすべてコメントとして扱われ,
無視されます. ここでは, それぞれのキーワードについて だいたい
GENERIC に出てくる順番で説明します. しかし,
お互いに関係のあるキーワードは, 実際には
GENERIC ファイル上に
バラバラに現れていても, (ネットワーキングのように)1つにまとめ
てあります. おびただしい数の
オプションの一覧が
GENERICと同じディレクトリの
LINT コンフィグ
レーションファイルにあります. もし, ある行の目的や必要性に疑
問を持ったら最初に LINT
をチェックしてください.
カーネルは現在, オプションを扱う方法をよりよい機構に移行しよ
うとしています. 従来は, 各々のオプションは単純にカーネルの
Makefile中の CFLAGS行の
スイッチに変換されて いました.
自然とオプションは際限なく増えて行きます. だれも実際に
はどのオプションがどのファイルで参照されているかは知りません.
新しい方法では, すべてのオプション依存の
#ifdefは当該オプショ ンを
opt_foo.h
(これらのファイルはconfigによって
compileディレ クトリに作られます)
から読み込むように変わりました. config
の有効なオプションのリストは2つのファイルにお かれます.
アーキテクチャに依存しないオプションは
/sys/conf/optionsに置かれ,
アーキテクチャ依存のオプションは
/sys/arch/conf/options
に置かれます. arch の部分は例えば
i386となります.
必須キーワード
ここにあるキーワードはカーネルの構築に必要不可欠です.
machine "i386"
最初のキーワードは machineです.
FreeBSDは Intelの 386(とその互換)チップあるいは alpha
プロセッサ上でのみ動作するので
i386 か
alphaを指定します.
数字を含むキーワードはすべて
クォーテーションマークで囲む必要があります.
そうせずに,machine i386 と入力すると
configは混乱して
386を実際の数値として扱ってしまいます.
cpu "cpu_type"
次のキーワードは cpuです.
FreeBSDでサポートしている CPUの中から記述します.
i386 システムではcpu_type
として指定可能な値は次の通りです:
I386_CPU
I486_CPU
I586_CPU
I686_CPU
Alpha システムでは指定可能な
cpu_type は
次の通りです:
EV4
EV5
GENERIC カーネルのように
cpuの行の
cpu_type
が異なった値を持つものが 複数あってもかまいません.
カスタムカーネルでは, あなたが持っている
cpuを1つだけ指定するのが 一番です. 例えば, もし Intelの
Pentiumを持っていれば,
cpu_typeには,
I586_CPU を使ってください.
ident machine_name
次は,
カーネルの識別名となるidentです.
GENERIC
からあなたがカーネルに与えたい名前に 変えてください.
ここでは, MYKERNEL とします.
identに与えた名前はカーネルの
ブート時に表示されるので, 普段のカーネルとは別に
カーネルに違う名前を与えたいとき(例えば,
実験用のカーネルを作りたい時など), 便利でしょう.
数字を含む名前にしたい場合は
machineや cpu
の時と同じようにクォーテーションマークで
囲む必要があります.
C コンパイラに
スイッチで渡されるので,
DEBUGのような名前にしたり,
vax
といった他のCPUの名前など紛らわしい名前にしないで
ください.
maxusers number
これは, 重要なシステムテーブルのサイズを決めます.
ここ
で与えられる数字はマシンに同時にログインすると考えられ
るおよそのユーザ数です. しかし, 通常の使用環境であれば,
特に X Window System を立ち上げたり, ソフトウェアを
コンパイルするような使用であれば
maxusersには少 なくとも
4 以上を指定したほうがいいでしょう.
その理由は, maxusers
で決るテーブルで最も重要なものはプロセス
の最大数であるからです. プロセス最大数は 20 +
16 * maxusersで与えられ,
maxusersを1
にすると36プロセスしか同時には持てません. この中にはブー
ト時にシステムによって起動する18個ぐらいのプロセス, Xを
起動する時の15程度のプロセスも含みます.
manページを読むという1つのタスクでさえ, フィ
ルタやファイル伸長や表示のために9つのプロセスを起動し
ます. maxusersを4
にすれば, 同時に84個のプロセ
スを持つことができるのでどんな人でも十分な数だといえる
でしょう. それでも他のプログラムを起動した場合に,
あるいは, (Walnut Creek CDROMのFTPサイトのように)
同時に多くの ユーザを抱えるサーバを走らせた場合に
proc table full
というおぞましいエラーが起きる場合はこの値を増や し,
カーネルを再構築してください.
maxuserはあなたのマシン
にログインできるユーザの数を制限するものでは
ありません. 単に,
あなたのシステムに
ログインするユーザ数の最大値と各々のユーザが
いくつのプロセスを走らせるかを考慮することに
よってさまざまなテーブルの値を適切な値に設定
するだけです. これに対し, pseudo-device pty
16の remote
loginsというキーワードは
同時にリモートログインできるユーザ数を制限
します.
config kernel_name root on root_device
これはカーネルの位置と名前を特定します.
伝統的にカーネルは
vmunixと呼ばれますが, FreeBSDでは
kernelとふさわしい名前になりました.
kernel_nameにはいつも
kernel を 使ってください.
名前を変えると多くのシステム
ユーティリティが使えなくなります. 2番目の部分は
ルートファイルシステムとカーネルのあるディスクと
パーティションを指定してください.
SCSIドライブでなければ, wd0を,
SCSIドライブならば da0です.
一般的なオプション
以下はカーネルのサポートするさまざまなファイルシステムおよ
びその他のオプションです.
options MATH_EMULATE
これは, 数値演算コプロセッサがない コンピュータ
(386や486SX) で数値演算コプロセッサ
のエミュレーションを可能にします. もし, Pentiumや 486DX,
あるいは387や487があれば, コメントアウト
できます.
FreeBSD付属の数値演算
コプロセッサエミュレータはあまり正確では
ありません.
非常に正確な計算をおこないたい ならば, より優れた
GNUのエミュレータである
GPL_MATH_EMULATEに変えることを
おすすめします. これはライセンスの関係でデフォルトでは
含まれていません.
options "COMPAT_43"
4.3BSDとの互換性のためのオプションです.
そのままにしておいてください. コメントアウトすると,
いくつかのプログラムで動作がおかしくなります.
options BOUNCE_BUFFERS
ISAデバイスやISA互換モードで動作する EISAデバイス
では DMA (Direct Memory Access) は16MB以下のメモリに対し
てのみ動作します. このオプションによりメモリが16MB以上
のシステムで DMA
を使うデバイスを動作させることができます.
options UCONSOLE
ユーザがコンソールを横取り (grab)
できるようにします. これは X Window System
上で便利です. 例えば, コ ンソール xtermを xterm
-Cとタイプして作ると, そこに
write, talk
などのメッセージがカーネルからコ
ンソールへ送られるメッセージと同じように表示されます.
options SYSVSHM
このオプションは System V の共有メモリを提供します.
X Window System の XSHM拡張での利用がもっとも一般に見
られる例で, 多くのグラフィックを多用したプログラム
(movie player の Xanimや Linux DOOMなど) ではこれを
利用することで速度が増加するというメリットがあります. X
Window System を利用するのであればこれは間違いな
く含めたくなるでしょう.
options SYSVSEM
System V のセマフォをサポートします.
一般的に利用される
ことは少ないですがカーネルサイズの増加は数百バイトだ
けです.
options SYSVMSG
System V のメッセージをサポートします.
これを指定した場
合もカーネルサイズの増加は数百バイトだけです.
&man.ipcs.1; コマンドは これらの System V
の機構を利用しているプロセスを表示し ます.
訳注: 共有メモリ, セマフォ,
メッセージ(メッ セージキュー) は System V系
で一般的なプロセス間通信の機 構です. くわしくは System
Vのプロセス間通信に関する文 献, 「詳解
UNIXプログラミング」 (ソフトバンク) , 「UNIXネッ
トワークプログラミング」 (トッパン)
などを参照してくださ い.
ファイルシステムオプション
これらのオプションはさまざまなファイルシステムへのサポート
を追加します. 少なくともブートするためのデバイスのサポートを含
める必要があります. 標準的にはハードディスクからブートするので
あれば FFS ,
ディスクレスワークステーションとしてイー
サネットからブートするのであれば NFSです.
一般的に利用される他のファイルシステムをカーネルに含め, あまり
利用しないファイルシステム (多分 MS-DOSファイルシステム?)
のサポー トをコメントアウトすることができます. これは
Kernel Module ディレクトリ /modules から,
最初にそのタイプのファイ ルシステムがマウントされる時に
動的にドライバがロードされるからです.
options FFS
基本的なハードドライブ ファイルシステムです.
ハードディ
スクからブートする場合は残しておいてください.
options NFS
ネットワーク ファイルシステムです. Ethernet経由で
Unixファ
イルサーバからパーティションをマウントする予定がない場
合はコメントアウトすることができます.
options MSDOSFS
MS-DOS ファイルシステムです. ブート時に
DOSフォーマット のハード
ドライブをマウントする予定のない場合はコメン
トアウトしても安全です. 先に示したように, DOSパーティ
ションをマウントする時に自動的にロードされます. また
(ports コレクションにある)
mtools という素晴
らしいソフトウェアにより mount , unmountなしで DOSフロッ
ピーにアクセスすることができます (これは MSDOSFSも必要
ありません).
options "CD9660"
CD-ROMのための ISO 9660 ファイルシステムです.
CD-ROMを 持っていないか, 時々 データ
CDをマウントするだけならコ メントアウトしましょう
(データ CDを最初にマウントする
時に動的にロードされます). オーディオ CDはこのファイル
システムは必要ありません.
options PROCFS
プロセス ファイルシステムです.
これは疑似的なファイルシ ステムで
/proc にマウントされ,
&man.ps.1; などのプロ
グラムがプロセスに関してより詳しい情報を与えてくれるよ
うになります.
options MFS
メモリマップド ファイルシステムです.
これは基本的に一時 ファイルを記憶するための高速な
RAMディスクで, 大きな swap領域がある場合に有効です.
MFSパーティションをマウ
ントするに適した場所は多くのプログラムが一時ファイルを
置く /tmpです. MFS RAMディスクを
/tmp にマウントするには以下の内容を
/etc/fstabに追 加してリブートするか
mount /tmpとタイプします.
/dev/wd1s2b /tmp mfs rw 0 0
/dev/wd1s2bをあなたが使用して
いるswap パーティションに置き換えてください. これは以
下のように /etc/fstab
に書かれているでしょう.
/dev/wd1s2b none swap sw 0 0
また, MFS ファ
イルシステムは動的にロードすることは
できません .
したがって使いたい場合はコンパイル時に カーネルに
含める必要があります.
options "EXT2FS"
Linux のファイルシステム. ext2fs のサポートにより,
Linux パーティションを読み書きすることができます.
これは, FreeBSD と Linux
のデュアルブートシステムにおいて
両者でデータを共有したい場合に有用です.
options QUOTA
ディスククォータを有効にします.
アクセスが公開されてい るシステムで (一人のユーザが)
/homeパーティショ ン (全体)
をあふれさせることができないようにそれぞれのユーザ
にディスククォータを発行することができます.
ディスククォータについての詳しい内容はディスク
クォータの章を見てください.
基本的なコントローラとデバイス
この節では FreeBSDでサポートされているディスク, テー プ,
CD-ROMコントローラについて示します. SCSI コントローラと ネットワーク
カードについ ては別の節になっています.
controller isa0
FreeBSD のサポートするすべての PCで必要です. IBM
PS/2 (マイ クロチャネルアーキテクチャ) では現時点では
FreeBSDは動 きません.
controller pci0
PCIバスを持つマザーボードの場合は含めます.
これにより PCIカードの自動認識と PCIから
ISAバスへのゲートウェイが 可能になります.
controller fdc0
フロッピードライブコントローラです.
fd0 は A:
ドライブで fd1 は
B: ドライブです.
ft0 は
フロッピーコントローラに接続する QIC-80 テープドライブで
す. 対応するデバイスがない場合はそれぞれの行をコメント
アウトしてください.
QIC-80テープのサポートは別に
&man.ft.8; というフィルタプログラムが必要です.
くわしくはマニュアルページを見てください.
controller wdc0
プライマリIDEコントローラです.
wd0 と
wd1はそれぞれマスタ,
スレーブドライブで す. wdc1 は
セカンダリの IDEコントローラで3台 目,
4台目のハードディスクまたは IDE CD-ROMのある場合に
使います. 利用しない行はコメントアウトしてください (例え
ば, SCSIハードディスクのみを使う場合は6行全部をコメント
アウトしてもよいかもしれません).
device wcd0
このデバイスは IDE CD-ROMのサポートをします.
wdc0を有効にしておく必要があり, もし
2つ以上の IDE コントローラがあり, そのうちの
2つ目のカードに CD-ROMを接 続する場合
wdc1 も必要です. また
options ATAPI
を書いておく必要もあります.
device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
npx0 は FreeBSD
ハードウェアコプロセッサとソフト
ウェアエミュレータ両方の浮動小数点演算ユニットへのインタ
フェースです. これは 不可欠
です.
device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr
Wangtek と Archive の QIC-02/QIC-36
テープドライブのサポートです.
Proprietary CD-ROM support
以下のようなドライブを
proprietary(独自の) CD-ROM
ドライブと呼ぶことにします. これらのドライブは専
用のコントローラを持つか, サウンドブラスタ16などのサウ
ンドカードに接続します. これらは IDEでも
SCSIでもあ りません.
多くの標準速や2倍速の古い CD-ROMはこれら
のインタフェースを持っていますが, より新しい四倍速の
ものは IDE か
SCSI
でしょう.
device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr
ミツミ製 CD-ROM (LU002,
LU005, FX001D)です.
device scd0 at isa? port 0x230 bio
ソニー製 CD-ROM (CDU31,CDU33A)です.
controller matcd0 at isa? port ? bio
松下/パナソニック製 CD-ROM (サウンドブラスタ用
クリエィティブ ラボ製として販売されていました)
です.
SCSI デバイスのサポート
この節では FreeBSDのサポートするいろいろな SCSIコント
ローラとデバイスのサポートについて書きます.
SCSI コントローラ
以下の十数行は異る種類の
SCSIコントローラのサポートです.
使用しているもの以外の部分は
コメントアウトしてください.
controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr
ほとんどの Buslogic社のコントローラです.
controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
UltraStor 14F と 34F です.
controller ahc0
Adaptec 274x/284x/294x です.
controller ahb0 at isa? bio irq ? vector ahbintr
Adaptec 174x です.
controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr
Adaptec 154x です.
controller aic0 at isa? port 0x340 bio irq 11 vector aicintr
Adaptec 152x や
サウンドカードなどに使われている Adaptec AIC-6360
チップです. (slow!)
controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr
NCR 5380を使っている ProAudioSpectrum や
Trantor T130 で す.
controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr
Seagate ST01/02 8 ビットコントローラです.
(slow!)
controller wds0 at isa? port 0x350 bio irq 15 drq 6 vector wdsintr
Western Digital WD7000コントローラです.
controller ncr0
NCR 53C810, 53C815, 53C825, 53C860, 53C875
チップを使った PCI SCSI コントローラです.
これにより Diamond FirePort コントローラも
サポートします.
options "SCSI_DELAY=15000"
このオプションによりカーネルはそれぞれの
SCSIデバイスをプローブする前に 15秒間待ちます.
IDEドライブのみを使用している場合は無視して構いません.
ブートを速くするためにこの数値を
5秒ぐらいまで小さくしたいでしょう. そうした場合,
FreeBSDが SCSIデバイスを認識しにくくなるかもしれません.
その時は, もちろんこのオプションの値は元に戻
さないといけません.
controller scbus0
SCSIコントローラがある場合, この行で
SCSI全般のサポー トを与えます. SCSIのない場合,
この行と以下の3つの行をコメ
ントにすることができます.
device da0
SCSIハードディスクのサポートです.
device st0
SCSIテープドライブのサポートです.
device cd0
SCSI CD-ROM のサポートです.
上のエントリについている
0はいくらか誤解を招き
やすいかもしれません. これらのデバイスはすべてカーネルが
見つけた時に割り当てがおこなわれ,
SCSIバスに何台つながってい るか, ターゲット
IDが何番であるかはここの記述とは関係あ りません.
明示的に “固定的な”ターゲット
IDの特定のデバイスへの 割り当てをおこないたい場合は
LINT
カーネルコンフィグレーションファイルの
該当する部分の説明を参照してください.
コンソール, バスマウス, キーボード, Xサーバのサポート
2 つのタイプのコンソールからどちらか 1
つを選ぶ必要があります. 標準ではない方の vt220
コンソールを選んだ場合, X Window System を利用するには XSERVER
オプションを有効にする必要があります (訳注: sc0 には XSERVER
オプション相当の機能が始めから入っています).
またバスマウスと PS/2 マウスのオプションもあります.
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
sc0
はデフォルトのコンソールドライバで SCOコン
ソールに似ています. このデバイス, あるいは VT220コンパ
チブルドライバの
vt0いずれを使う場合もほとんど
のフルスクリーンプログラムは
termcapなどのターミナルデータベース
ライブラリを通してアクセスしますので,
あまり違いはないでしょう.
このコンソールを使う場合でフルスクリーンプログラムでト
ラブルが起きる場合にはログインした時に
TERM変数の値を
“scoansi”にしてください.
controller atkbdc0 at isa? port IO_KBD
tty
atkbdc はキーボードコントローラで
ATキーボードと PS/2タイプのポインティングデバイスを
サポートします. このコントローラはキーボードドライバの
atkbd と PS/2 ポインティングデバイス
ドライバのpsmが必要とします.
options
"KBD_RESETDELAY=X", options
"KBD_MAXWAIT=Y"
キーボードドライバの atkbd
- と atkbd はブート処理を行なっている
+ とポインティングデバイスドライバの psm
+ はブート処理を行なっている
時にデバイスのリセットを行なうために
atkbdc に要求を出すでしょう.
デバイスがリセットコマンドに対して応答を返すまでに
長い時間がかかる場合があります. これらのオプション
は atkbdc がどれだけの時間待つか
を制御します — ドライバは最大
X *
Y ミリ秒待ちます.
もし, ドライバがデバイスを見つけることが
できないようであれば, これらの値を増やすことが
できます. デフォルト値は
X
が 200m秒で Y は5回です.
options
"KBDIO_DEBUG=N"
デバッグレベルを N
に設定します.
デフォルト値は 0 で, デバッグ出力は全て抑制されます.
atkbdcデバイスはシステム中
設定できるのは一つだけです.
device atkbd0 at isa? tty irq 1
- atkbd ドライバは, together with the
+ atkbd ドライバは,
atkbdc コントローラと一緒に利用され,
ATキーボードコントローラに接続された AT 84 キーボードや
AT拡張キーボード のアクセスを提供します.
device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint
これはVT-220コンパチブルコンソールドライバで
VT100/102の 上位互換です. これは
sc0の使えない種類のラッ
プトップ機でもうまく動きます. ログイン時に
TERM変数の値 を>vt100
か vt220にしてください. また,
このドラ
イバはネットワークを介して多くの異るマシンから接続する
場合も便利です.
sc0デバイスのための
termcapや
terminfoエントリは必ずしも
利用できるわけではありませんが —
vt100はいずれの
プラットフォームでも利用可能でしょう.
options "PCVT_FREEBSD=210"
vt0
コンソールドライバを使う場合に必要で す.
options XSERVER
vt0
コンソールドライバを使う時のみ有効です. これは
vt0 コンソールドライバのもとで
XFree86 X
サーバを動かすのに必要なコードを含めます.
device mse0 at isa? port 0x23c tty irq 5 vector ms
Logitech や
ATIのバスマウス入力カードを利用する場合のデ
バイスです.
シリアルマウスを使う場合にはこれら2つ
の行(バスマウスとPS/2マウスに関する行) は無視して,
代わりに シリアル
ポート(おそらくはCOM1)を有効にしてくだ さい.
device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
このデバイスは
PS/2マウスポートにマウスを接続する場合に
使います.
シリアル, パラレルポート
ほとんどすべてのシステムにこれらはあります.
プリンタを接続す る場合は プリンタの利用の章が非常
に役に立つでしょう. モデムを使う場合は ダイヤルアップ アクセス
に非常に詳しいシリアルポートの設定とデ
バイスの使い方があります.
device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
sio0からsio3は
MS-DOSにおける COM1から
COM4に相当する4本のシリアルポートです.
COM4に内蔵モデムがあり COM2を使う場合, FreeBSDからアク
セスするためにはモデムのIRQを2へ変更する必要があるとい
うことを注意しておきます (技術的な理由より IRQ 2 = IRQ
9となります).
マルチポートシリアルカードを使う場合にマニュアルページ
の &man.sio.4; にはこのオプションで使う値などのよ
り多くの情報があります. ビデオカードの中には (特に S3
チップベースのものには) IOアドレスの
0x*2e8から を利用するものがあり,
また多くの安価なシリアルカードは
IOアドレス空間を16-bitフルデコードしていませんので, こ
れらのカードは衝突します. この場合 COM4ポートは実質上
利用できません.
それぞれのシリアルポートは
(割込みの共有をサポートした
マルチポートカードを利用していないのであれば) 別々の IRQ
を割り当てる必要がありますので COM3と COM4のデフォルトの
IRQは利用できません.
device lpt0 at isa? port? tty irq 7 vector lptintr
lpt0 から
lpt2は利用可能な3本のプリン
タポートです. 多くの場合は1本のみですので他の2本はない
のであればコメントアウトして構いません.
ネットワーク
FreeBSDでは他の一般的な
Unixと同様にネットワークが非常に
重視されています. イーサネットカードが
なくても必須のオプションとダイヤルアップ ネットワークのサポー
トに注意してください.
options INET
ネットワーキングのサポートです.
ネットワークに接続する予定がな
くても残しておいてください.
多くのプログラムは少なくともループ
バックネットワーキングが必要です(つまり,
PCの中でネットワーク コネクションをおこないます).
したがってこのオプションは本質的 に不可欠です.
Ethernet cards
以下にさまざまなイーサネットカードを
有効にするオプショ ンを示します.
ネットワークカードがなければこれらすべてを
コメントアウトすることができます. そうでなければ利用す
る特定のイーサネットカードをサポートするオプションを残
しておきます.
device cs0
IBM Etherjet 及び クリスタル・セミコンダクタ社
の CS89x0ベースのアダプタです.
device de0
DECの DC21040, DC21041, DC21140チップを使った
PCIイーサネットアダプタです.
device fxp0
Intel EtherExpress Pro/100B
高速イーサネットカード です.
device vx0
3Com の 3C590, 3C595です (いくらか
bugがあります).
device cx0 at isa? port 0x240 net irq 15 drq 7 vector cxintr
Cronyx/Sigma の
マルチポート同期/非同期カードです. (with Cisco or
PPP framing)
device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr
Western Digital と SMC の 80xx, 8216 Elite
Ultra ; ノベル NE1000, NE2000; 3Com の 3C503;
HPの PC Lan Plus (HP27247B とHP27252A)
です.
device el0 at isa? port 0x300 net irq 9 vector elintr
3Com の 3C501 です. (slow!)
device eg0 at isa? port 0x310 net irq 5 vector egintr
3Com の 3C505です.
device ep0 at isa? port 0x300 net irq 10 vector epintr
3Com の 3C509 です(バグがあります).
device fe0 at isa? port 0x240 net irq ? vector feintr
富士通 MB86960A/MB86965A
ベースのイーサネットカード です.
device fea0 at isa? net irq ? vector feaintr
DEC DEFEA EISA FDDI アダプタです.
device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr
AT&T StarLAN 10 と EN100; 3Com の 3C507;
NI5210; Intel EtherExpress 16 です.
device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
DEC の EtherWorks 2 and EtherWorks
3 (DEPCA, DE100, DE101, DE200, DE201, DE202,
DE203, DE204, DE205, DE422)です.
device lnc0 at isa? port 0x300 net irq 10 drq 0 vector lncintr
Lance/PCnet カード (Isolan, Novell NE2100,
NE32-VL)です.
device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr
IBM/ナショナルセミコンダクタの PCMCIA
イーサネット コントローラです.
device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr
3Com の PCMCIA Etherlink III です.
いくつかのカードでは (特に NE2000では)
“標準値” がありませんので
IOポートやIRQの値を変更す
る必要がある場合があります.
pseudo-device loop
loop は
TCP/IPの一般的なループバックデバイスで す. telnet や
FTPを localhost (127.0.0.1)
に対して行なうとこの疑似デバイスを通して帰ってきます.
不可欠です.
pseudo-device ether
ether
はイーサネットカードがある場合のみ必要で
一般的なイーサネットプロトコルを含めます.
pseudo-device sl number
sl は SLIP (Serial Line Internet
Protocol) をサポー トします. これはほとんど完全に,
より簡単に設定ができ, モ デム to モデム接続に適した,
よりパワフルな PPPに取って代 わられています.
slの後の
number は同 時にいくつの
SLIPセッションをサポートするかを示します.
SLIPの設定のより詳しい情報はこのハンドブックの
「PPPとSLIP」の章の SLIPクライアントのセットアップ
と SLIP
サーバのセットアップ方法
について書かれた節にあります.
pseudo-device ppp number
pppはダイヤルアップ
インターネット接続のための カーネルモード PPP
(Point-to-Point Protocol) をサポート します.
ユーザアプリケーションとしてtun
を 利用する PPPの実装もあり,
こちらはより柔軟性がありデマ
ンドダイアリング(プログラムが接続要求を出した時に自動
的にダイヤルをおこなう)などの機能もあります. それでもこ
の PPPドライバを利用したい場合は カーネル PPP の設定
の節を読んでください.
slデバイスと同じように
numberは同時 に
PPP接続できる数を示します.
pseudo-device tun number
tun はユーザモード
PPPソフトウェアが利用しま す.
このプログラムは設定が簡単で非常に高速です.
また自動ダイヤル オン デマンドなどの機能を持ちます.
tunの後のnumber
は同時におこなうことのできる
PPPセッションの数を示します. ユーザ PPP のセットアップ
の節により多くの情報があ ります.
pseudo-device bpfilter number
バークレイ パケットフィルタです.
この疑似デバイスはネッ トワークインタフェースを無差別
(promiscuous) モードにし てネットワーク
(例えば単一のイーサネット) にブロードキャス
トされるすべてのパケットを取り入れることを可能にします.
こ れらのパケットはディスクに取り入れられたり
&man.tcpdump.1; によって検査されます. この機能の実現
はネットワーク全体のセキュリティとの微妙な妥協点であるこ
とに注意してください. bpffilter の後の
numberは同時に検査することの
できるインタフェースの数を示します.
危険の可能性について十分解っている場合を除いてこのオプ
ションは奨めません. すべてのネットワークカードでこの機能
をサポートをしてはいません.
サウンドカード
ここは
GENERICカーネルに含まれていない最初のセクションです.
サウンドカードのサポートをするためには LINTコンフィグレーショ
ンファイル(これには すべての
デバイスが含まれています)か
ら以下のような適切な行をコピーする必要があります.
controller snd0
サウンドドライバ一般のコードです.
pca
を除く以下のすべてのサウンドカードで必要で す.
device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr
ProAudioSpectrum のオーディオ と MIDI です.
device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr
SoundBlaster です.
SoundBlaster の IRQが標準と異る値, 例えば
5になっている場合, irq
7をirq 5に書き換え,
キーワード conflictsを
削除してください.
device sbxvi0 at isa? drq 5
SoundBlaster 16 の 16-bit オーディオです.
SB16の DMAチャネルが標準と異っている( 例えば
- 6か7)キーワード drq
- 5を適切な値に書き直してください.
+ 6か7) 場合, キーワード drq 5
+ を適切な値に書き直してください.
device sbmidi0 at isa? port 0x330
SoundBlaster 16 の MIDI インタフェースです.
SoundBlaster 16を使う場合必ずこの行を含めてコンパイル
してください.
device gus0 at isa? port 0x220 irq 10 drq 1 vector gusintr
Gravis Ultrasound です.
device mss0 at isa? port 0x530 irq 10 drq 1 vector adintr
Microsoft Sound System です.
device opl0 at isa? port 0x388 conflicts
AdLib FMシンセサイザオーディオです. AdLib,
SoundBlaster, ProAudioSpectrum を使い
playmidi (ports にあります)
などのプログラムで
MIDIの演奏をしたい場合にこの行を含めます.
device mpu0 at isa? port 0x330 irq 6 drq 0
Roland MPU-401 カードです.
device uart0 at isa? port 0x330 irq 5 vector "m6850intr"
MIDIインタフェースの 6850 UART です.
device pca0 at isa? port "IO_TIMER1" tty
PC のスピーカーを使ったオーディオです.
これは非常に品質 が悪く, CPUの性能,
負荷に強く依存します, と言っておき ます
(サウンドカードは必要ありませんが).
device pcm0 at isa? port ? tty irq 10 drq 1 flags 0x0
pcm ドライバは WSS/MSS, Sound
Blaster Pro , Sound Blaster 16 などのいろいろな種類の
ISA サウンドカードをサポートします.
追加のドキュメントが
/usr/src/sys/i386/isa/sound/
にあります. また, これらのデバイスを追加する場合は,
サウンドデバイスノード
を作る必要があり ます.
疑似デバイス
疑似デバイスドライバはデバイスドライバと同様に働きますがマ
シン上に対応する実際のハードウェアがないカーネルの部分です.
ネットワーク関連の
疑似デバイスはそちらのセクションに示しました. ここでは残りにつ
いて示します.
pseudo-device gzip
gzipは
gzipによって圧縮された FreeBSDの
プログラムを実行できるようにします. /standにあるプログ
ラムは圧縮されているのでカーネルにこのオプションをつけ
ておくのはいい考えでしょう.
gzip は現在 a.out バイナリに
対してのみ動作します.
pseudo-device log
log
はカーネルエラーのログを取るのに使います.
不可欠です.
pseudo-device pty number
pty
は“仮想ターミナル”や仮想ログインポート です.
外部からの telnetや
rloginセッ ション, xterm,
emacsなどのアプリケーションが使います.
numberは作ることのできる
ptyの数を示 します.
GENERICのデフォルトは16で, 同時の
xtermウィンドウやリモー
トログインのために増やす場合は最大で 64までです.
pseudo-device snp number
スヌープデバイスです.
この疑似デバイスはあるターミナル セッションが
&man.watch.8; command によって他のター
ミナルを監視することを可能にします. この機能の実現はセ
キュリティとプライバシに対して極めて微妙な関係があり
ます. snp の後の number
は同時におこなうことのでき
るスヌープセッションの総数です. 選択可能です.
pseudo-device vn
V ノードドライバです. ファイルを &man.vnconfig.8;
コマンドによって
デバイスとして取り扱うことを可能にします.
このドライバによりフロッピーディスクイメージを
操作したりファ イルをスワップデバイスとして (MS
Windowsのスワッ プファイルなどを)用いることができます.
選択可能です.
pseudo-device ccd number
ccd (concatenated
disk)デバイスはいくつかのディスクパーティ
ションを融合して大きなディスクのように
見せることができます. ccdの後の
number
は同時に作ることのできる疑似ディスクの数です.
(詳しいことは &man.ccd.4; と &man.ccdconfig.8; のマニュ
アルを参照してください.) 選択可能です.
ジョイスティック, スピーカー, その他
この節は FreeBSDのここまでに示した以外のハードウェア
デバイスへのサポートについて示します. これらは GENERICカーネル
には含まれませんのでこのハンドブックや LINT (このファイルには
すべてのデバイスのサポートが含まれます)
からコピーする必 要があります.
device joy0 at isa? port "IO_GAME"
PC のジョイスティックです.
pseudo-device speaker
IBM BASIC スタイルの PC内蔵スピーカーのサポートです.
シェルスクリプトで簡単な演奏をする
/usr/sbin/spkrtest
やキーボードを使って単純なピ
アノのように演奏することができる
/usr/games/piano
(gamesパッケージをイ
ンストールした場合にはあります) のようないくつかのプロ
グラムで使われます. また素晴らしいテキストロールプレイ
ングゲームである NetHack
(ports コレクションにあります)
はゲーム中の楽器の演奏でこのデバイスを使うように設定を
することができます (訳注:日本語化されたJNetHackもportsに
あります).
pca0 デバイスの
項も参照してください.
デバイスノードを作る
カーネル内のほとんどすべてのデバイスは対応する
“node” エント リが /dev
ディレクトリにあります. これらのノードは普
通のファイルのように見えますが, 実際にはプログラムがデバイスに
アクセスするのに用いるカーネル内への特別なエントリです.
シェルスクリプトである
/dev/MAKEDEVはオペレーティング
システムを最初にインストールする時に実行され, サポートされてい
る大部分のデバイスのノードを作ります. しかし,
すべての
ノードが作られるわけではありませんので
新しいデバイスのサポートを加える時は対応するエントリがこのディ
レクトリにあるかどうか確認してもしなければ, 作ってください.
以下に例を示します.
IDE CD-ROMのサポートをカーネルに加えるとします. 次の行
を加えます.
controller wcd0
これにしたがって, /devディレクトリに
wcd0で始ま るエントリを捜してください.
1文字が後ろにつくかもしれません. 後 ろについた文字が
cであるか先に
rのつくエントリは “raw”デバ
イスを示します.
それらのファイルがないことが明らかになったとします. そこで
/dev
ディレクトリに移動して次のようにタイプします.
&prompt.root; sh MAKEDEV wcd0
スクリプトの実行が終ったら /devに
wcd0c と rwcd0c
エントリがあることを確認してください. これによ
り正しく実行されたことがわかります.
サウンドカードの場合のコマンドは次の通りです.
&prompt.root; sh MAKEDEV snd0
これにより対応するエントリが作られます.
サウンドカードのようなデバイスのノードを作る場合で, もし他
の人がマシンにアクセスするようであれば, そのデバイスを
/etc/fbtab
ファイルに追加して外部からのアクセスから
保護するのが望ましいでしょう. このファイルの詳細については
man fbtab を参照してください.
GENERIC
に含まれていないデバイスはエントリがありませんから,以上
の簡単な手順をおこなうことになります.
すべての SCSI コントローラは同じ /dev
の エントリを使用しますのでノードを作る必要はありません.
またネッ トワークカードと SLIP/PPP 疑似デバイスは
/dev にはエント
リがありませんのでこれらについても作る必要がありません.
問題が起きた場合には
カスタムカーネルを作る場合に起きるトラブルは 4
種類に分けられま す.
Config コマンドの失敗
カーネルにあなたの設定をおこなった場合で
configコ マンドが失敗したのであれば,
多分どこかで単純な間違いを やっているのでしょう. さいわい,
configはトラ
ブルの起きた行番号を出力しますので
viで素早く 見つけることができます.
例えばもし次のように出力されれ ば, config: line
17: syntax error
viのコマンドモードで
17Gとタイプすればあな
たは問題のところへ飛ぶことができます.
GENERIC カーネル
のファイルや他のリファレンスと比較して注意深く修正して
ください.
Make コマンドの失敗
make コマンドが失敗した場合には,
カーネル設定で config
がとらえられなかったような間違いをして
いることが多いようです. ふたたびコン
フィグレーションを見直してください. それでも問題を解決
することができなければ &a.questions;
へあなたのカーネルのコンフィグレーションをつけてメー
ルしてください. 誰かが素早く間違いを見つけてくれるで
しょう.
カーネルがブートしない
新しいカーネルがブートしなかったり,
デバイスの認識をしな い場合でもあわてないでください!
さいわい, BSDは利用で
きないカーネルから復帰する優れたメカニズムがあります.
FreeBSDの bootプロンプトでリターンキーを押すかわりに
単にブートさせたいカーネルの名前 (例えば
kernel.old) をタイプするだけです.
カーネルの再設定
をおこなう場合に現在のカーネルを利用できるように取ってお
くのはよい考えです.
問題のないカーネルでブートした後に
あなたのコンフィグレー ションファイルを調べ,
再び構築を試みてください.
/var/log/messages
ファイルにはすべての成功した
ブートのカーネルのメッセージやその他の記録があり, これ
は助けになる情報の一つでしょう. また,
&man.dmesg.8; コマンドは現在のブート時のカーネルメッ
セージを出力します.
カーネルの構築中にトラブルが起きた時に使うために
GENERICや他のカーネルを次の構築で消されない
ように異る名前で保存するようにしてください. kernel.old
は新しいカーネルをインストールする 時に,
その一つ前にインストールしたうまく動かないかもしれ
ないカーネルで上書きされてしまいますので当てにできませ
ん. またできる限り早く動作しているカーネルを本来の
kernelの位置に移動させてください.
そうしないと
&man.ps.1; のようなコマンドが正しく動きません.
make
でインストールされたカーネルのファイルを
(別のカーネルに戻すために)
“アンロック” するための特別
のコマンドは
&prompt.root; chflags noschg
/kernel
です. また,
新しい置き換えたカーネルあるいは重要ファイ
ルを動かしたり変更されないように
“ロック” するには 次のようにします.
&prompt.root; chflags schg
/kernel
カーネルは動くが
ps は動かない!
システムユーティリティと異る
バージョンのカーネルをインストールした場合, 例えば
実験的に “4.0” のカーネルを 3.1-RELEASE
システム上にインストールするような場合,
&man.ps.1; や &man.vmstat.8; のような多くの
システムステータスコマンドは動かなくなります.
libkvm を
再コンパイルしてこれらのユーティリティを作りなおす
必要があります. これは,
オペレーティングシステムのそれ以外の部分と異る
バージョンのカーネルを使うことが普通はあまりよくない
理由の一つです.