8668df5d70
This translation is based on FAQ.sgml 1.94 and revision 1.1 of other files. Submitted by: the FreeBSD Japanese Documentation Project
163 lines
6.9 KiB
Text
163 lines
6.9 KiB
Text
<!-- $Id: kernelconfig.sgml,v 1.1.1.1 1997-11-17 15:48:59 max Exp $ -->
|
|
<!-- The FreeBSD Japanese Documentation Project -->
|
|
<!-- Original revision: 1.1 -->
|
|
|
|
<sect>
|
|
<heading>カーネルコンフィグレーション<label id="kernelconfig"></heading>
|
|
<p><em>訳: &a.kiroh;.<newline>10 November 1997.</em>
|
|
|
|
<sect1>
|
|
<heading>
|
|
カーネルをカスタマイズしたいんですが, 難しいですか?
|
|
<label id="make-kernel">
|
|
</heading>
|
|
|
|
<p>全然難しくありません. 最低 <tt/kerndist/ がシステムに
|
|
インストールされていることが必要です. もちろん完全な
|
|
<tt/srcdist/ をインストールしてあっても構いません. <tt/kerndist/
|
|
がインストールしてあれば, カーネルを構築するのに必要なソースは
|
|
すべて揃っています. 多くの商用 UNIX ベンダとは違い,
|
|
バイナリオブジェクトでのカーネルは提供して<bf/いません/.
|
|
|
|
<p>ソースコードで提供すると多少ディスクスペースを多く消費します.
|
|
しかし, 何か問題があった場合や, 動作を確認したい場合など,
|
|
<bf/実際に/カーネルのソースを参照できます.
|
|
|
|
<p><tt/kerndist/ または <tt/srcdist/ がインストールされたら,
|
|
root で以下の操作をおこなってください.
|
|
|
|
<enum>
|
|
<item> <tt>cd /usr/src/sys/i386/conf</tt>
|
|
<item> <tt/cp GENERIC MYKERNEL/
|
|
<item> <tt/vi MYKERNEL/
|
|
<item> <tt/config MYKERNEL/
|
|
<item> <tt>cd ../../compile/MYKERNEL</tt>
|
|
<item> <tt/make depend/
|
|
<item> <tt/make all/
|
|
<item> <tt/make install/
|
|
<item> <tt/reboot/
|
|
</enum>
|
|
|
|
<p>以前のリリース (FreeBSD 2.X) でのカーネルコンフィグファイルが
|
|
既にある場合は, ステップ 2 は必要ないかもしれません.
|
|
以前のファイルをコピーして, 書式が変更されてたり,
|
|
廃止されたドライバがないか, 注意深く確認してください.
|
|
|
|
<p>カーネルコンフィグファイル <tt/LINT/ には,
|
|
すべての利用可能なカーネルオプションが適切な説明とともに
|
|
含まれており, 大変参考になります.
|
|
|
|
<p><tt/GENERIC/ カーネルコンフィグファイル は, 最も一般的と
|
|
思われる構成が含まれいます. (アップグレードを行っていない限り)
|
|
あなたが最初に使ったカーネルは, おそらくこのファイルにより
|
|
構築されたものです. カーネルコンフィグファイルを書く場合,
|
|
このファイルを出発点にするとよいでしょう.
|
|
|
|
<p><tt/GENERIC/ に変更する必要がない場合は, ステップ 3
|
|
も省略できます. このステップでは, カーネルを必要な構成に
|
|
カスタマイズします. ステップ 8 は, ステップ 6 と 7 が
|
|
うまく完了してから実行してください. ステップ 8 では,
|
|
新しいカーネルイメージが <tt>/kernel</tt> にコピーされ,
|
|
古い <tt>/kernel</tt> は, <tt>/kernel.old</tt> に
|
|
<bf/バックアップ/されます! 新しいカーネルがうまく動作しなかった
|
|
場合, ブートプロンプトから指定して<tt>/kernel.old</tt> から
|
|
ブートすることも可能ですので, 必ず覚えておいてください.
|
|
リブートすると, デフォルトでは新しいカーネルでブートします.
|
|
|
|
<p>何らかの理由でステップ 7 のコンパイルが失敗したら, ステップ 4
|
|
にもどって, <tt/MYKERNEL/ の代わりに <tt/GENERIC/ で試してみて
|
|
ください. <tt/GENERIC/ でうまくカーネルが生成できた場合は,
|
|
コンフィグファイルがどこか間違っているのでしょう (バグ発見!
|
|
の可能性もありますが). <tt/GENERIC/ カーネルの生成にも失敗した
|
|
場合は, おそらくソースコードが壊れています.
|
|
|
|
<p>最後になりますが, 新しいカーネルが使用しているハードウェアに
|
|
うまく適合しているかどうか調べるために元のブートメッセージを
|
|
調べる必要がある場合は, <htmlurl
|
|
url="http://www.freebsd.org/cgi/man.cgi?dmesg" name="dmesg">
|
|
コマンドを使ってみてください. このコマンドは, 古いカーネルの
|
|
ブート時のメッセージをすべて表示します. メッセージの中には,
|
|
新しいカーネルを設定するのに, 非常に有用な情報が含まれます.
|
|
|
|
<p><bf/注:/ うまく動作するカーネルができたら, 日付入りのカーネル
|
|
のスナップショットを <tt/kernel.YYMMDD/ のように作成することを
|
|
おすすめします. こうしておけば, 次にカーネルの構築をやってうまく
|
|
いかなくなってしまっても, <tt/kernel.GENERIC/ にわざわざ戻る
|
|
必要がなくなります. これは, GENERIC kernel でサポートされない
|
|
デバイスからブートしている場合は, 特に重要です
|
|
(経験者は語るってやつです).
|
|
|
|
<sect1>
|
|
<heading>
|
|
<tt/_hw_float/ が無いので, カーネルのコンパイルがうまくいきません.
|
|
</heading>
|
|
|
|
<p>推測ですけど, 数値演算コプロセッサを持ってないからと思って,
|
|
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?npx(4)"
|
|
name="npx0"> をカーネルコンフィグファイルから削除しちゃったんじゃ
|
|
ないですか? <tt/npx0/ は<bf/必須/です. コプロセッサがなくても,
|
|
<tt/npx0/ デバイスは削除してはいけません.
|
|
|
|
<sect1>
|
|
<heading>マルチポートシリアル関連のコードでの, 割り込みの競合</heading>
|
|
|
|
<p><bf/Q./ マルチポートシリアルをサポートするコードを含んだ
|
|
カーネルをコンパイルしようとすると, 最初のポートだけ検出され,
|
|
残りのポートは割り込みの競合のためスキップされたと言われます.
|
|
どうやったらいいでしょうか?
|
|
|
|
<p><bf/A./ ここでの問題は, FreeBSD にはハードウェアまたは
|
|
ソフトウェアの競合によってカーネルがクラッシュするのを防ぐ
|
|
コードが含まれているという点です. 解決するには, 最初のポート
|
|
にだけ IRQ の設定を書き, 残りは IRQ の設定を削除します.
|
|
以下に例を示します.
|
|
|
|
<verb>
|
|
#
|
|
# Multiport high-speed serial line - 16550 UARTS
|
|
#
|
|
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
|
|
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
|
|
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
|
|
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr
|
|
</verb>
|
|
|
|
<sect1>
|
|
<heading>QIC-40/80 ドライブのサポートを有効にするには? </heading>
|
|
|
|
<p><tt/GENERIC/ コンフィグファイルの以下の行のコメントを外して
|
|
ください (もしくは使用するコンフィグファイルに追加してください).
|
|
そして <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fdc(4)"
|
|
name="fdc"> の行に, ``<tt/flags 0x1/'' を追加してください.
|
|
|
|
<verb>
|
|
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 flags 0x1 vector fdintr
|
|
disk fd0 at fdc0 drive 0 ^^^^^^^^^
|
|
disk fd1 at fdc0 drive 1
|
|
#tape ft0 at fdc0 drive 2
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
</verb>
|
|
|
|
<p>次に, <tt>/dev/ft0</tt> デバイスを作成します. <tt>/dev/</tt>
|
|
に移動して, 以下のコマンドを実行します.
|
|
|
|
<verb>
|
|
sh ./MAKEDEV ft0
|
|
</verb>
|
|
|
|
<p>これは, 1 番目のドライブの例です. 2 番目には <tt/ft1/ を使い,
|
|
以降は同様にしてください.
|
|
|
|
<p><tt>/dev/ft0</tt> デバイスは, ``<tt/ft/'' と呼ばれる特別な
|
|
コマンドを使用して書き込みをおこなえます. 詳細については
|
|
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?ft" name="ft">
|
|
のマニュアルページを参照してください.
|
|
|
|
<p><tt/-current/ 以前のバージョンの <tt/ft/ には,
|
|
不良テープメディアの扱いに問題があります. <tt/ft/
|
|
がテープの同じ部分を行ったり来たりしているようであれば,
|
|
<tt/-current/ の <tt>/usr/src/sbin/ft</tt> から最新の <tt/ft/
|
|
を取得して試してみてください.
|
|
|
|
</sect>
|
|
|