Merge the following from the English version:

1.182 -> 1.199	doc/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml

Reference:	[doc-jp-work 2209]
This commit is contained in:
Ryusuke SUZUKI 2011-09-23 10:06:08 +00:00
parent b518d2f48e
commit 19ef86e1ce
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=37730

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.182
Original revision: 1.199
$FreeBSD$
-->
@ -99,7 +99,7 @@
びついているため、動的に組み込むことができません。ほかには、
単に誰もその機能に対する組み込み可能なカーネルモジュールを書く時間をとっていないだけということもあります。</para>
<para>システムに合わせたカーネルの構築はほとんどすべての
<para>システムに合わせたカーネルの構築は、高度な知識を持つ
BSD ユーザが避けて通ることのできない最も重要な通過儀礼の 1 つです。
この作業は、多くの時間を必要としますが、あなたの &os;
システムに多くの利益をもたらします。
@ -121,10 +121,12 @@
<listitem>
<para>メモリの消費量を減らすことができます。
システムに合わせたカーネルは、大抵
<filename>GENERIC</filename>
システムに合わせたカーネルは、
使用しない機能やデバイスドライバを含まないので、
大抵 <filename>GENERIC</filename>
カーネルより少ないメモリしか消費しません。
カーネルは常に実メモリ上に存在しなければならないので、
カーネルコードは常に物理メモリ上に存在し、
アプリケーションはその容量分のメモリを使用できないので、
これは重要なことです。
したがって、RAM が少ないシステムでは、
カーネルの再構築は大変重要です。</para>
@ -222,6 +224,57 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
カスタムカーネルを構築する過程でたじろがずにすむでしょう。</para>
</sect1>
<sect1 id="kernelconfig-modules">
<title>カーネルドライバ、サブシステムとモジュール</title>
<indexterm>
<primary>カーネル</primary>
<secondary>ドライバ / モジュール / サブシステム</secondary>
</indexterm>
<para>カスタムカーネルを構築する前に、再構築する理由を考えてください。
ある特定のハードウェアに対応することが目的であれば、
そのハードウェアに対応するためのモジュールがすでに用意されている場合には、
再構築の必要はありません。</para>
<para>カーネルモジュールは、
<filename class="directory">/boot/kernel</filename>
ディレクトリにあります。&man.kldload.8; によって、
すでに実行中のカーネルに動的に読み込まれているモジュールもあるかもしれません。
すべてというわけではありませんが、ほとんどのカーネルドライバには、
モジュールやマニュアルページが用意されています。
たとえば、前の章で例として出た <devicename>ath</devicename>
ワイヤレスイーサネットドライバのマニュアルページには以下の記述があります。</para>
<programlisting>Alternatively, to load the driver as a module at boot time, place the
following line in &man.loader.conf.5;:
if_ath_load="YES"</programlisting>
<para>ここで示された手順通り、
<filename>/boot/loader.conf</filename> ファイルに
<literal>if_ath_load="YES"</literal> 行を追加すると、
起動時にモジュールが読み込まれるようになります。</para>
<para>ただし、特定のサブシステムであったり、
とても重要なドライバのような場合には、
対応するモジュールが存在しないこともあります。
たとえば、Fast File System (<acronym>FFS</acronym>) は、
カーネルでのみ設定可能なオプションです。
ネットワークサポート (INET) も同様です。
残念ながら、ドライバが必要かどうかを知るには、
モジュールそのものを調べる方法しかありません。</para>
<warning>
<para>カーネルを壊すことは簡単で、
デバイスやオプションのサポートをビルドから削除するだけで壊れてしまうことがあります。
たとえば、&man.ata.4; ドライバをカーネルコンフィグレーションファイルから除くと、
<acronym>ATA</acronym> ディスクドライバを用いるシステムは、
<filename>loader.conf</filename> に記述がないかぎり起動しません。
もし、確信がないのであれば、モジュールを確認し、
カーネルにサポートを残したままにしてください。</para>
</warning>
</sect1>
<sect1 id="kernelconfig-building">
<title>カスタムカーネルの構築とインストール</title>
<indexterm>
@ -229,6 +282,10 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
<secondary>構築 / インストール</secondary>
</indexterm>
<note>
<para>カーネルを構築するには、&os; のすべてのソースファイルが必要です。</para>
</note>
<para>まず、
カーネル再構築に必要なディレクトリをざっと見てみましょう。
ここではディレクトリはすべて
@ -242,7 +299,6 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
それから <filename>compile</filename>ディレクトリ、
ここはカーネルが作られる 場所です。
<replaceable>arch</replaceable> は、<filename>i386</filename>,
<filename>alpha</filename>,
<filename>amd64</filename>, <filename>ia64</filename>,
<filename>powerpc</filename>, <filename>sparc64</filename>
または <filename>pc98</filename>
@ -255,37 +311,32 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
それぞれ各々のサブディレクトリに分かれている、
という論理的な構成に注意してください。</para>
<para>この章で示されるコマンドの例は、i386 アーキテクチャを使用していることを仮定しています。
<para>この章で示されるコマンドの例は、
i386 アーキテクチャを使用していることを仮定しています。
他のアーキテクチャを使用しているのであれば、
パス名を使用しているアーキテクチャに適したものに変更してください。</para>
<note>
<para>もし、あなたのシステムに<filename>/usr/src/sys</filename>
以下のディレクトリが<emphasis>なければ</emphasis>
<para>もし、あなたのシステムに <filename>/usr/src/</filename>
ディレクトリが存在しない (または、空である) のであれば
カーネルのソースが インストールされていません。
もっとも簡単な方法は (<username>root</username>で)
<command>sysinstall</command> を用いて以下のようにすることです。
すべてのソースツリーをインストールするもっとも簡単な方法は、
<username>root</username> 権限で
<command>sysinstall</command> を実行し、次のようにすることです。
<guimenuitem>設定 (Configure)</guimenuitem>
を選んでから
<guimenuitem>配布ファイル (Distribution)</guimenuitem>
を選択し、その後、<guimenuitem>src</guimenuitem>
を選択し、<guimenuitem>base</guimenuitem> の中の
<guimenuitem>sys</guimenuitem>
をインストールしてください。
<application>sysinstall</application>
が嫌いで、<quote>公式</quote> &os; CDROM を利用できるなら、
コマンドラインからソースコードをインストールすることもできます。
</para>
を選択し、その後 <guimenuitem>src</guimenuitem>
を選択し、最後に <guimenuitem>All</guimenuitem> を選んでください。
もし、<filename>/sys/</filename> が存在していないようであれば、以下のように
<filename>/usr/src/sys/</filename>
へのシンボリックリンクも作成してください。</para>
<screen>&prompt.root; <userinput>mount /cdrom</userinput>
&prompt.root; <userinput>mkdir -p /usr/src/sys</userinput>
&prompt.root; <userinput>ln -s /usr/src/sys /sys</userinput>
&prompt.root; <userinput>cat /cdrom/src/ssys.[a-d]* | tar -xzvf -</userinput>
&prompt.root; <userinput>cat /cdrom/src/sbase.[a-d]* | tar -xzvf -</userinput></screen>
<screen>&prompt.root; <userinput>ln -s /usr/src/sys/ /sys/</userinput></screen>
</note>
<para>つぎに、
<filename><replaceable>arch</replaceable>/conf</filename>に移動して、
<filename><replaceable>arch</replaceable>/conf</filename> に移動して、
<filename>GENERIC</filename>
コンフィグレーションファイルをカーネルに与えたい名前に
コピーしてください。たとえば次のようにします。</para>
@ -307,7 +358,7 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
その後で、あなたがカスタマイズしたカーネルコンフィグレーションファイルを消してしまったことに気づくのに時間はかからないでしょう。
また、<filename>GENERIC</filename> ファイルを直接編集しないでください。
なぜなら、編集後に
<link linkend="cutting-edge">ソースツリーをアップデート</link>
<link linkend="cutting-edge"><!-- link linkend="cutting-edge" -->ソースツリーをアップデート</link>
すると、ファイルが上書きされ、変更点が失われてしまいます。</para>
<para>カーネルコンフィグレーションファイルは他の場所において、
@ -350,7 +401,7 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
<note>
<para>&os; Project の最新のソースファイルと、<link
linkend="cutting-edge">あなたのソースツリーを同期させている</link>
linkend="cutting-edge"><!-- link linkend="cutting-edge" -->あなたのソースツリーを同期させている</link>
場合、アップデートを行う際には、必ず
<filename>/usr/src/UPDATING</filename>
ファイルをチェックしてください。
@ -366,9 +417,13 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
<procedure>
<title>カーネルの構築</title>
<note>
<para>カーネルを構築するには、&os; のすべてのソースファイルが必要です。</para>
</note>
<step>
<para><filename
role="directory">/usr/src</filename> ディレクトリに移動します。</para>
class="directory">/usr/src</filename> ディレクトリに移動します。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput></screen>
</step>
@ -386,10 +441,6 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
</step>
</procedure>
<note>
<para>カーネルを構築するには、&os; のすべてのソースファイルが必要です。</para>
</note>
<tip>
<para>デフォルトでは、カスタムカーネルを構築すると
<emphasis>すべて</emphasis> のカーネルモジュールが同時に構築されます。
@ -398,9 +449,9 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
カーネルの構築を開始する前に、以下のように <filename>/etc/make.conf</filename>
を編集してください。</para>
<programlisting>MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs</programlisting>
<programlisting>MODULES_OVERRIDE = linux acpi sound ntfs</programlisting>
<para>この変数は、すべてのモジュールのかわりに構築するモジュール一覧を設定します。</para>
<para>この変数は、すべてのモジュールのかわりに構築するトップレベルのモジュール一覧を設定します。</para>
<programlisting>WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfs</programlisting>
@ -442,7 +493,7 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
<author>
<firstname>Joel</firstname>
<surname>Dahl</surname>
<contrib>&os; 6.X に対応: </contrib>
<contrib>改訂: </contrib>
</author>
</authorgroup>
</sect1info>
@ -470,6 +521,36 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
アーキテクチャに依存しないオプションについては、
<filename>/usr/src/sys/conf/NOTES</filename> ファイルをご覧ください。</para>
<para>コンフィグレーションファイルで <literal>include</literal>
ディレクティブが利用可能になりました。
現在のコンフィグレーションファイルに他のファイルを取り込むことができるので、
すでに存在するファイルに対する小さな変更の維持が簡単になります。
たとえば、オプションやドライバを少しだけ追加した
<filename>GENERIC</filename> カーネルを必要としているのであれば、
<literal>include</literal> を用いて、以下のように GENERIC
からの差分だけの記述でコンフィグレーションファイルを作成できます。</para>
<programlisting>include GENERIC
ident MYKERNEL
options IPFIREWALL
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPDIVERT
</programlisting>
<para>多くの管理者は、
コンフィグレーションファイルを個別に管理していたこれまでの手法にくらべ、
このモデルが大変有益だと考えるでしょう。
ローカルのコンフィグレーションファイルには、<filename>GENERIC</filename>
とローカルとの差分のみが記述されており、
<filename>GENERIC</filename> がアップグレードされ、
新しい機能が追加されると、
(<literal>nooptions</literal> や <literal>nodevice</literal>
によって外されない限り) ローカルのカーネルにも反映されます。
この章のここから先は、典型的なコンフィグレーションファイルの中身と、
さまざまなオプションやデバイスの役割について説明します。</para>
<note>
<para>利用可能なすべてのオプションを含むファイルを
(通常はテスト目的で) 構築するには、
@ -497,7 +578,7 @@ ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting>
<programlisting>machine i386</programlisting>
<para>マシンのアーキテクチャです。これは
<literal>alpha</literal>, <literal>amd64</literal>,
<literal>amd64</literal>,
<literal>i386</literal>, <literal>ia64</literal>,
<literal>pc98</literal>, <literal>powerpc</literal> または
<literal>sparc64</literal>
@ -559,9 +640,9 @@ cpu I686_CPU</programlisting>
オプションとともにカーネルを構築すると、デバッグ情報を含みます。
このオプションは &man.gcc.1; がデバッグ情報を生成するようにします。</para>
<programlisting>options SCHED_4BSD # 4BSD scheduler</programlisting>
<programlisting>options SCHED_ULE # ULE scheduler</programlisting>
<para>伝統的な &os; のデフォルトのスケジューラです。
<para>&os; のデフォルトのスケジューラです。
このオプションはこのままにしてください。</para>
<programlisting>options PREEMPTION # Enable kernel thread preemption</programlisting>
@ -679,10 +760,10 @@ options NFS_ROOT # NFS usable as /, requires NFSCLIENT</progra
<programlisting>options PSEUDOFS # Pseudo-filesystem framework</programlisting>
<para>6.X-CURRENT のカーネルで <literal>PROCFS</literal> を使う場合には、
<para>カーネルで <literal>PROCFS</literal> を使う場合には、
<literal>PSEUDOFS</literal> のサポートが必要です。</para>
<programlisting>options GEOM_GPT # GUID Partition Tables.</programlisting>
<programlisting>options GEOM_PART_GPT # GUID Partition Tables.</programlisting>
<para>このオプションは、
ひとつのディスクに数多くのパーティションを作成可能にします。</para>
@ -696,19 +777,31 @@ options NFS_ROOT # NFS usable as /, requires NFSCLIENT</progra
<programlisting>options COMPAT_FREEBSD4 # Compatible with &os;4</programlisting>
<para>このオプションは、&os;&nbsp;5.X &i386; および alpha システムにおいて、
<para>このオプションは、
古いバージョンの &os; でコンパイルされた古いシステムコールインターフェースを用いるアプリケーションを利用する場合に必要とされます。
古いアプリケーションを実行するすべての
&i386; および alpha システムで、このオプションの利用を推奨します。
&i386; システムで、このオプションの利用を推奨します。
5.X でのみサポートされている ia64 や &sparc64; といったプラットフォームでは、
このオプションは必要ありません。</para>
<programlisting>options COMPAT_FREEBSD5 # Compatible with &os;5</programlisting>
<para>このオプションは、&os;&nbsp;6.X 以上のシステムにおいて、
<para>このオプションは、
&os;&nbsp;5.X でコンパイルされた &os;&nbsp;5.X
のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。</para>
<programlisting>options COMPAT_FREEBSD6 # Compatible with &os;6</programlisting>
<para>このオプションは、
&os;&nbsp;6.X でコンパイルされた &os;&nbsp;6.X
のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。</para>
<programlisting>options COMPAT_FREEBSD7 # Compatible with &os;7</programlisting>
<para>このオプションは、&os;&nbsp;8 以降において
&os;&nbsp;7.X でコンパイルされた &os;&nbsp;7.X
のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。</para>
<programlisting>options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI</programlisting>
<para>この行は、カーネルがそれぞれの SCSI 機器を検出する前に
@ -775,7 +868,7 @@ options NFS_ROOT # NFS usable as /, requires NFSCLIENT</progra
もし、よくわからないのであれば、そのままにしておいてください。</para>
<note>
<para>&os; 8.0-CURRENT 以降では、
<para>&os; 8.0-RELEASE 以降では
(<literal>NO_ADAPTIVE_MUTEXES</literal>
オプションでコンパイルを行って非適合型にするのでなければ)
すべての mutex はデフォルトで適合型になりました。
@ -914,7 +1007,7 @@ device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device rr232x # Highpoint RocketRAID 232x
device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
@ -1017,7 +1110,7 @@ device sc</programlisting>
#device apm</programlisting>
<para>先進的な電源管理機能 (APM) のサポート。
&os; 5.X 以降の <filename>GENERIC</filename>
<filename>GENERIC</filename>
ではデフォルトで無効にされていますが、
ラップトップでは役に立つでしょう。</para>
@ -1360,13 +1453,6 @@ device fwe # Ethernet over FireWire (non-standard!)</programl
<para>プロセスは、4 ギガバイト以上の VM 空間にアクセスできません。</para>
</listitem>
<listitem>
<para>
モジュールとカーネルを構築するフレームワークが異なるため、
<acronym>PAE</acronym> が有効なカーネルに
<acronym>KLD</acronym> モジュールをロードできません。</para>
</listitem>
<listitem>
<para>&man.bus.dma.9; インタフェースを用いないデバイスドライバは、
<acronym>PAE</acronym> が有効なカーネルにおいてデータの破損を引き起こす可能性があるため、
@ -1456,8 +1542,8 @@ device fwe # Ethernet over FireWire (non-standard!)</programl
システムの起動メニューが表示されている時に、この機能を使えます。
6 番目の
<quote>Escape to a loader prompt</quote> オプションを選択してください。
プロンプトで <command>unload kernel</command> と入力してから、
<command>boot /boot/<replaceable>kernel.old</replaceable>/kernel</command>
プロンプトで
<command>boot <replaceable>kernel.old</replaceable></command>
か他の正常に起動するカーネルを入力してください。
カーネルの再設定をおこなう場合にはいつも、
確実に動くことが分かっているカーネルを用意しておくようにすると良いでしょう。