<?xml version="1.0" encoding="euc-jp"?> <!-- The FreeBSD Documentation Project The FreeBSD Japanese Documentation Project Original revision: r46043 $FreeBSD$ --> <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="kernelconfig"> <!--<chapterinfo> <authorgroup> <author> <firstname>Jim</firstname> <surname>Mock</surname> <contrib>改訂および再構成 (2000 年 3 月): </contrib> </author> </authorgroup> <authorgroup> <author> <firstname>Jake</firstname> <surname>Hamby</surname> <contrib>原作 (1995 年 10 月 6 日): </contrib> </author> </authorgroup> </chapterinfo> --> <title>FreeBSD カーネルのコンフィグレーション</title> <sect1 xml:id="kernelconfig-synopsis"> <title>この章では</title> <!-- <para><emphasis>訳: &a.jp.tomo;、&a.jp.yoshiaki; 1996 年 11 月 2 日</emphasis></para> --> <indexterm> <primary>カーネル</primary> <secondary>カスタムカーネルの構築</secondary> </indexterm> <para>カーネルは &os; オペレーティングシステムの中核をなすものです。 カーネルは、メモリ管理、セキュリティ制御の強制、ネットワーク、 ディスクアクセスなどを担っています。 &os; の大部分は動的に構成することができるようになっていますが、 まだ、時にはカスタムカーネルを設定してコンパイルする必要があります。</para> <para>この章では、以下のことを扱っています。</para> <itemizedlist> <listitem> <para>いつカスタムカーネルの構築が必要になるか。</para> </listitem> <listitem> <para>ハードウェア一覧の作成方法。</para> </listitem> <listitem> <para>カーネルコンフィグレーションファイルのカスタマイズの方法。</para> </listitem> <listitem> <para>カーネルコンフィグレーションファイルから新しいカーネルを構築する方法。</para> </listitem> <listitem> <para>新しいカーネルのインストール方法。</para> </listitem> <listitem> <para>うまく行かないときの問題解決法。</para> </listitem> </itemizedlist> <para>この章で表示されているすべてのコマンドは、<systemitem class="username">root</systemitem> 権限で実行する必要があります。</para> </sect1> <sect1 xml:id="kernelconfig-custom-kernel"> <title>なぜカスタムカーネルを作るか?</title> <para>伝統的に、&os; はモノリシック (monolithic) カーネルを使っていました。 このカーネルは、単一の巨大なプログラムで、 扱えるデバイスは固定されていて、 カーネルの振る舞いを変えたければ構築してコンピュータを再起動し、 新しいカーネルを動かさなれければなりませんでした。</para> <para>今日では、&os; カーネルのかなりの機能はモジュールに含まれるようになり、 必要に応じて動的にカーネルに組み込んだり外したりできるようになりました。 この移行により、 動作しているカーネルが新しいハードウェアに迅速に対応したり、 カーネルに新たな機能を取り入れられるようになります。 このようなカーネルは、モジュラ (modular) カーネルと呼ばれます。</para> <para>しかしながら、 いまだにいくらかは静的にカーネルを構成する必要があります。 機能がカーネルとあまりに密接に結びついているため、 動的に組み込むことができない場合があるためです。 環境によっては、セキュリティの観点から、 カーネルモジュールを読み込んだり外すことができず、 必要となる機能を静的にカーネルにコンパイルしなければならない場合もあります。</para> <para>システムに合わせたカーネルを構築することは、多くの場合、 高度な知識を持つ BSD ユーザが避けて通ることのできない通過儀礼です。 この作業は多くの時間を必要としますが、&os; システムに利益をもたらします。 広範囲のハードウェアをサポートしなければならない <filename>GENERIC</filename> カーネルとは異なり、カスタムカーネルは、 使用しているコンピュータのハードウェアのみをサポートするように、 必要のない機能を省くことができます。これは、 次にあげるような利益をもたらします。</para> <itemizedlist> <listitem> <para>素早く起動します。 カーネルはシステム上にあるハードウェアしか検出しないので、 システムの起動にかかる時間を短くできます。 </para> </listitem> <listitem> <para>メモリの消費量を減らすことができます。 システムに合わせたカーネルは、 使用しない機能やデバイスドライバを含まないので、 大抵 <filename>GENERIC</filename> カーネルより少ないメモリしか消費しません。 カーネルコードは常に物理メモリ上に存在し、 アプリケーションはその容量分のメモリを使用できないので、 これは重要なことです。 したがって、メモリが少ないシステムでは、 カーネルの再構築は重要です。</para> </listitem> <listitem> <para>追加のハードウェアをサポートします。 カスタムカーネルは、<filename>GENERIC</filename> カーネルに存在しないデバイスのサポートを追加することができます。</para> </listitem> </itemizedlist> <para>カスタムカーネルを構築する前に、再構築する理由を考えてください。 ある特定のハードウェアに対応する必要がある場合に、 そのハードウェアに対応するためのモジュールがすでに用意されていることがあります。</para> <para>カーネルモジュールは <filename>/boot/kernel</filename> にあります。モジュールによっては &man.kldload.8; により、 すでに実行中のカーネルに動的に読み込まれています。 ほとんどのカーネルドライバには、 読み込み可能なモジュールやマニュアルページが用意されています。 たとえば、&man.ath.4; ワイヤレスイーサネットドライバのマニュアルページには以下のような記述があります。</para> <screen>Alternatively, to load the driver as a module at boot time, place the following line in &man.loader.conf.5;: if_ath_load="YES"</screen> <para><filename>/boot/loader.conf</filename> に <literal>if_ath_load="YES"</literal> を追加すると、 起動時にモジュールが読み込まれるようになります。</para> <para>対応するモジュールが <filename>/boot/kernel</filename> に存在しないこともあります。 特定のサブシステムでは、ほとんど多くの場合存在しません。</para> </sect1> <sect1 xml:id="kernelconfig-devices"> <!-- <sect1info> <authorgroup> <author> <firstname>Tom</firstname> <surname>Rhodes</surname> <contrib>寄稿: </contrib> </author> </authorgroup> </sect1info> --> <title>システムのハードウェアについて知る</title> <para>カーネルコンフィグレーションファイルの編集を始める前に、 コンピュータのハードウェア一覧を作成すると良いでしょう。 デュアルブートシステムでは、 現在インストールされている別のオペレーティングシステムの設定を調べることで、 一覧を作成できます。 たとえば、µsoft; の <application>デバイスマネージャ</application> は、インストールされているデバイスに関する情報を持っています。</para> <note> <para>µsoft.windows; のバージョンによっては、 <application>システム</application> アイコンを使って、 <application>デバイスマネージャ</application> にアクセスできます。</para> </note> <para>インストールされているオペレーティングシステムが &os; だけであれば、&man.dmesg.8; を使い、 起動時に検出されたハードウェアの一覧を調べてください。 &os; のほとんどのデバイスドライバにはマニュアルページが用意され、 対応しているハードウェアの一覧を提供しています。 たとえば、以下の行は、&man.psm.4; ドライバがマウスを検出したことを示しています。</para> <screen>psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: [ITHREAD] psm0: model Generic PS/2 mouse, device ID 0</screen> <para>このハードウェアはシステムに存在するので、 カスタムカーネルコンフィグレーションファイルからこのドライバを外さないでください。</para> <para><command>dmesg</command> が起動時の検出結果を表示しない場合には、 かわりに <filename>/var/run/dmesg.boot</filename> で出力を確認してください。</para> <para>ハードウェアを見つけるためのもうひとつのツールは、 より冗長な出力を行う &man.pciconf.8; です。 たとえば、以下のようになります。</para> <screen>&prompt.user; <userinput>pciconf -lv</userinput> ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00 vendor = 'Atheros Communications Inc.' device = 'AR5212 Atheros AR5212 802.11abg wireless' class = network subclass = ethernet</screen> <para>この出力は、<filename>ath</filename> ドライバがワイヤレスイーサネットデバイスにあることを示しています。</para> <para>&man.man.1; を <option>-k</option> フラグで実行すると、 有用な情報を得ることができます。たとえば、 ある特定の単語を含むマニュアルページの一覧を表示するには、 以下のようになります。</para> <screen>&prompt.root; <userinput>man -k <replaceable>Atheros</replaceable></userinput></screen> <programlisting>ath(4) - Atheros IEEE 802.11 wireless network driver ath_hal(4) - Atheros Hardware Access Layer (HAL)</programlisting> <para>ハードウェアの一覧を作成したら、 この一覧を利用して、 カスタムカーネルのコンフィグレーションファイルを編集している時に、 インストールされているハードウェアのドライバが削除されていないことを確認してください。</para> </sect1> <sect1 xml:id="kernelconfig-config"> <!-- <sect1info> <authorgroup> <author> <firstname>Joel</firstname> <surname>Dahl</surname> <contrib>改訂: </contrib> </author> </authorgroup> </sect1info> --> <title>コンフィグレーションファイル</title> <para>カスタムカーネルのコンフィグレーションファイルを作成し、 カスタムカーネルを構築するには、 &os; の全ソースツリーがまずインストールされている必要があります。</para> <para>もし <filename>/usr/src/</filename> が存在していなかったり、空であれば、 カーネルのソースはインストールされていません。 <xref linkend="svn"/> で説明した <application>Subversion</application> を使ってソースをインストールしてください。</para> <para>ソースをインストールしたら、 <filename>/usr/src/sys</filename> を確認して下さい。 このディレクトリには、いくつものサブディレクトリがあります。 その中には、サポートされている各アーキテクチャ <filename>amd64</filename>, <filename>i386</filename>, <filename>ia64</filename>, <filename>pc98</filename>, <filename>powerpc</filename> および <filename>sparc64</filename> のサブディレクトリがあります。 各アーキテクチャのディレクトリ内部にあるファイルはすべてそのアーキテクチャでのみ使用されます。 残りのコードは、アーキテクチャに依存しない、 すべてのプラットフォームで共有されるコードです。 サポートされている各アーキテクチャには、 <filename>conf</filename> サブディレクトリがあり、 そのアーキテクチャ用の <filename>GENERIC</filename> カーネルコンフィグレーションファイルが用意されています。</para> <para>この <filename>GENERIC</filename> は編集しないでください。 かわりに、このファイルを別名でコピーし、コピーを編集してください。 慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの &os; マシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として <filename>MYKERNEL</filename> という名前の <literal>amd64</literal> アーキテクチャ用の <filename>GENERIC</filename> コンフィグレーションファイルのコピーを作成します。</para> <screen>&prompt.root; <userinput>cd /usr/src/sys/<replaceable>amd64</replaceable>/conf</userinput> &prompt.root; <userinput>cp GENERIC <replaceable>MYKERNEL</replaceable></userinput></screen> <para>これで、<filename><replaceable>MYKERNEL</replaceable></filename> を <acronym>ASCII</acronym> テキストエディタで編集できます。 初心者に対してより簡単なエディタである <application>ee</application> も &os; とともにインストールされていますが、 デフォルトのエディタは <application>vi</application> です。</para> <indexterm> <primary>カーネル</primary> <secondary>NOTES</secondary> </indexterm> <indexterm><primary>NOTES</primary></indexterm> <indexterm> <primary>カーネル</primary> <secondary>コンフィグレーションファイル</secondary> </indexterm> <para>コンフィグレーションファイルのフォーマットはシンプルです。 各行はデバイスやサブシステム、引数、または簡単な説明を含んでいます。 <literal>#</literal> に続くテキストはすべてコメントとして扱われ、 無視されます。 カーネルからデバイスもしくはサブシステムのサポートを外すには、 対応する行の最初に <literal>#</literal> を入れてください。 理解していない行に対しては、<literal>#</literal> を追加したり削除しないでください。</para> <warning> <para>デバイスやオプションのサポートを外すことは簡単で、 その結果、カーネルを壊すことがあります。 たとえば &man.ata.4; ドライバをカーネルコンフィグレーションファイルから除くと、 <acronym>ATA</acronym> ディスクドライバを用いているシステムは起動しません。 確信が持てないものについては、 カーネルにサポートを残したままにしてください。</para> </warning> <para>このファイルで与えられる説明の他に、 そのアーキテクチャの <filename>GENERIC</filename> と同じディレクトリにある <filename>NOTES</filename> にも説明があります。 アーキテクチャに依存しないオプションについては、 <filename>/usr/src/sys/conf/NOTES</filename> をご覧ください。</para> <tip> <para>カーネルコンフィグレーションファイルの編集を終えたら、 ファイルのバックアップを <filename>/usr/src</filename> 以外の場所に保存してください。</para> <para>または、カーネルコンフィグレーションファイルは他の場所において、 シンボリックリンクを張る方法もあります。</para> <screen>&prompt.root; <userinput>cd /usr/src/sys/amd64/conf</userinput> &prompt.root; <userinput>mkdir /root/kernels</userinput> &prompt.root; <userinput>cp GENERIC /root/kernels/MYKERNEL</userinput> &prompt.root; <userinput>ln -s /root/kernels/MYKERNEL</userinput></screen> </tip> <para>コンフィグレーションファイルでは <literal>include</literal> ディレクティブを利用できます。 コンフィグレーションファイルに他のファイルを取り込むことができるので、 すでに存在するファイルに対する小さな変更の管理が簡単にできます。 オプションやドライバの追加が少しだけの場合には、 以下の例のように <filename>GENERIC</filename> からの差分による管理が可能になります。</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> によって外されない限り) ローカルのカーネルにも反映されます。 コンフィグレーションの構成要素に関する包括的な一覧と説明は &man.config.5; にあります。</para> <note> <para>利用可能なすべてのオプションを含むファイルを構築するには、 以下のコマンドを <systemitem class="username">root</systemitem> 権限で実行してください。</para> <screen>&prompt.root; <userinput>cd /usr/src/sys/<replaceable>arch</replaceable>/conf && make LINT</userinput></screen> </note> <!-- <indexterm> <primary>カーネルオプション</primary> <secondary>ident</secondary> </indexterm> This is outdated and specific to one architecture. <programlisting>ident GENERIC</programlisting> <para>これはカーネルの識別名です。 たとえば、<literal><replaceable>MYKERNEL</replaceable></literal> のように、新しいカーネルに付けたい名前に書き換えて下さい。 <literal>ident</literal> に書いた値はカーネルを起動する時に表示されます。</para> <programlisting>makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols</programlisting> <para>このオプションは &man.gcc.1; がデバッグ情報を生成するようにします。</para> <programlisting>options SCHED_ULE # ULE scheduler</programlisting> <para>&os; のデフォルトのスケジューラです。 このオプションはこのままにしてください。</para> <programlisting>options INET # InterNETworking</programlisting> <para>ネットワークのサポート。 ほとんどのプログラムは少なくともループバックネットワークを必要とするので、 基本的にこの行は必須です。</para> <programlisting>options INET6 # IPv6 communications protocols</programlisting> <para>このオプションは IPv6 通信プロトコルを利用可能にします。</para> <programlisting>options FFS # Berkeley Fast Filesystem</programlisting> <para>これは標準のハードドライブファイルシステムです。 システムがハードディスクから起動する場合は残して下さい。</para> <programlisting>options SOFTUPDATES # Enable FFS Soft Updates support</programlisting> <para>このオプションは、カーネル内の Soft Updates 機能を有効にし、 ディスクへの高速な書き込みを支援します。 カーネルがこの機能を提供していても、 特定のディスクに対してはこのオプションを有効にする必要があります。 &man.mount.8; の出力を見て、 Soft Updates が有効になっているかどうかを確認してください。 <literal>soft-updates</literal> オプションが見当たらなければ、 現在使用しているファイルシステムには &man.tunefs.8;、 新規のファイルシステムには &man.newfs.8; コマンドで有効にできます。</para> <programlisting>options UFS_ACL # Support for access control lists</programlisting> <para>このオプションは、カーネルのアクセス制御リスト (<acronym>ACL</acronym>) のサポートを有効にします。 この機能は拡張属性および <acronym>UFS2</acronym> が有効になっていることに依存し、 <xref linkend="fs-acl"/> で機能の説明が行われています。 <acronym>ACL</acronym> はデフォルトで有効にされています。 もし、これまでにファイルシステムで有効にしていたのであれば、 カーネルの中で無効にすべきではありません。 なぜなら、無効にすると ACL が削除され、 ファイルの保護が予想できない方法で行われるためです。</para> <programlisting>options UFS_DIRHASH # Improve performance on big directories</programlisting> <para>このオプションは、メモリを多少余分に食うものの、 大きなディレクトリに対するディスク操作を高速化する機能を有効にします。 大規模なサーバや対話的なワークステーションではこのオプションを残しておいて、 ファイアウォールのように、 メモリが貴重でディスクアクセス速度がそれほど重要でない小規模なシステムでは削除するとよいでしょう。</para> <programlisting>options MD_ROOT # MD is a potential root device</programlisting> <para>このオプションは、メモリディスクによる root デバイスのサポートを有効にします。</para> <indexterm> <primary>カーネルオプション</primary> <secondary>NFS</secondary> </indexterm> <indexterm> <primary>カーネルオプション</primary> <secondary>NFS_ROOT</secondary> </indexterm> <programlisting>options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFS_ROOT # NFS usable as /, requires NFSCLIENT</programlisting> <para>ネットワークファイルシステム (<acronym>NFS</acronym>)。 <acronym>NFS</acronym> ファイルサーバから TCP/IP を介してパーティションをマウントするのでない限り、 これらの行をコメントアウトできます。</para> <indexterm> <primary>カーネルオプション</primary> <secondary>MSDOSFS</secondary> </indexterm> <programlisting>options MSDOSFS # MSDOS Filesystem</programlisting> <para>&ms-dos; ファイルシステム。 起動時に DOS でフォーマットされたハードドライブのパーティションをマウントするのでなければ、 この行はコメントアウトできます。 この機能は最初に DOS パーティションをマウントする時に自動的にロードされます。 <package>emulators/mtools</package> package を使うと、マウント、アンマウントすることなしに DOS フロッピーにアクセスすることができ、 <literal>MSDOSFS</literal> を必要としません。</para> <programlisting>options CD9660 # ISO 9660 Filesystem</programlisting> <para>CD-ROM 用の ISO 9660 ファイルシステム。 もしシステムが CD-ROM ドライブを持っていないか、 ときどきデータ CD をマウントするだけなら、 データ CD を最初にマウントする時に自動的にロードされるので、 この行をコメントアウトしてください。 音楽 CD はこのファイルシステムを必要としません。</para> <programlisting>options PROCFS # Process filesystem (requires PSEUDOFS)</programlisting> <para>プロセスファイルシステム。 これは <filename>/proc</filename> にマウントされるもので、他のプログラムに、 どんなプロセスが走っているかについて、 より多くの情報を提供する事ができます。 ほとんどのデバッグおよびモニタリングツールが <literal>PROCFS</literal> なしで起動するので、 ほとんどの環境では <literal>PROCFS</literal> を必要としません。 デフォルトのインストールではこのファイルシステムをマウントしません。</para> <programlisting>options PSEUDOFS # Pseudo-filesystem framework</programlisting> <para>カーネルで <literal>PROCFS</literal> を使う場合には、 <literal>PSEUDOFS</literal> のサポートが必要です。</para> <programlisting>options GEOM_PART_GPT # GUID Partition Tables.</programlisting> <para><link xlink:href="http://en.wikipedia.org/wiki/GUID_Partition_Table">GUID パーティションテーブル</link> (<acronym>GPT</acronym>) に対応します。 GPT では、1 つのディスクに数多くのパーティション (標準の構成では最大 128) を作成可能です。</para> <programlisting>options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]</programlisting> <para>4.3BSD との互換機能です。 有効なままにして下さい。 この行をコメントアウトするとおかしな動きをするプログラムがあります。 </para> <programlisting>options COMPAT_FREEBSD4 # Compatible with &os;4</programlisting> <para>このオプションは、 古いバージョンの &os; でコンパイルされた古いシステムコールインターフェースを用いるアプリケーションを利用する場合に必要とされます。 古いアプリケーションを実行するすべての &i386; システムで、このオプションの利用を推奨します。 &os; 4.X より後にサポートされた ia64 や &sparc64; といったプラットフォームでは、このオプションは必要ありません。</para> <programlisting>options COMPAT_FREEBSD5 # Compatible with &os;5</programlisting> <para>このオプションは、 &os; 5.X でコンパイルされた &os; 5.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。</para> <programlisting>options COMPAT_FREEBSD6 # Compatible with &os;6</programlisting> <para>このオプションは、 &os; 6.X でコンパイルされた &os; 6.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。</para> <programlisting>options COMPAT_FREEBSD7 # Compatible with &os;7</programlisting> <para>このオプションは、&os; 8 以降において、 &os; 7.X でコンパイルされた &os; 7.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。</para> <programlisting>options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI</programlisting> <para>この行は、カーネルがそれぞれの <acronym>SCSI</acronym> 機器を検出する前に 5 秒間待つようにします。 もし、<acronym>SCSI</acronym> 機器が認識されなければ、 この数字を増やしてください。 システムが <acronym>SCSI</acronym> ドライブを持っていなければ、 無視するか、この数字を小さく変更して起動時間を短くできます。 </para> <programlisting>options KTRACE # ktrace(1) support</programlisting> <para>この行はデバッグに役立つカーネルプロセスのトレースを可能にします。</para> <programlisting>options SYSVSHM # SYSV-style shared memory</programlisting> <para>このオプションは System V 共有メモリを提供します。 この機能の最も一般的な使用方法は X における XSHM 拡張です。 多くのグラフィックス重視のプログラムではこの機能を自動的に描画のスピードアップに利用します。 <application>Xorg</application> がインストールされているなら、 これを含めてください。</para> <programlisting>options SYSVMSG # SYSV-style message queues</programlisting> <para>System V のメッセージのサポート。 このオプションはカーネルサイズを数百バイト大きくするだけです。 </para> <programlisting>options SYSVSEM # SYSV-style semaphores</programlisting> <para>System V セマフォのサポート。 あまり使われませんが、カーネルサイズは数百バイト大きくなるだけです。</para> <note> <para>&man.ipcs.1; を <option>-p</option> で実行すると、これらの System V 機能を使っているプロセスのリストを表示します。</para> </note> <programlisting>options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions</programlisting> <para>リアルタイム拡張が 1993 &posix; に追加されました。 Ports Collection の内のいくつかのアプリケーションはこれを使っています。</para> <programlisting>options KBD_INSTALL_CDEV # install a CDEV entry in /dev</programlisting> <para>キーボードデバイスノードを <filename>/dev</filename> に作成するにはこのオプションが必要です。</para> <indexterm> <primary>カーネルオプション</primary> <secondary>SMP</secondary> </indexterm> <programlisting>device apic # I/O APIC</programlisting> <para>このデバイスは、I/O APIC の割り込みを有効にします。 ユニプロセッサおよび SMP カーネル両方で使用できますが、 SMP カーネルでは必須です。 マルチプロセッサに対応するには <literal>options SMP</literal> を追加してください。</para> <note> <para>このデバイスは &i386; アーキテクチャにのみ存在します。 他のアーキテクチャでは、この行を含まないでください。</para> </note> <programlisting>device eisa</programlisting> <para>システムが EISA マザーボードを持っている場合、 この行を含めて下さい。これは EISA バスに接続されているすべてのデバイスの自動検出と設定を可能にします。</para> <programlisting>device pci</programlisting> <para>システムが PCI マザーボードを持っている場合、この行を含めて下さい。 これは PCI カードの自動検出と PCI から ISA バスへのゲートウエイを可能にします。</para> <programlisting># Floppy drives device fdc</programlisting> <para>これはフロッピーディスクコントローラです。</para> <programlisting># ATA and ATAPI devices device ata</programlisting> <para>このドライバはすべての ATA と ATAPI デバイスをサポートします。 最近のマシンでは <literal>device ata</literal> 行を 1 行書くだけですべての PCI ATA/ATAPI デバイスを検出することができます。</para> <programlisting>device atadisk # ATA disk drives</programlisting> <para>ATA ディスクドライブには <literal>device ata</literal> と共にこの行が必要です。</para> <programlisting>device ataraid # ATA RAID drives</programlisting> <para>ATA RAID ドライブには <literal>device ata</literal> と共にこのデバイスが必要です。</para> <programlisting><anchor xml:id="kernelconfig-atapi"/>device atapicd # ATAPI CDROM drives</programlisting> <para>ATAPI CDROM ドライブには <literal>device ata</literal> と共にこの行が必要です。</para> <programlisting>device atapifd # ATAPI floppy drives</programlisting> <para>ATAPI フロッピードライブには <literal>device ata</literal> と共にこの行が必要です。</para> <programlisting>device atapist # ATAPI tape drives</programlisting> <para>ATAPI テープドライブには <literal>device ata</literal> と共にこの行が必要です。</para> <programlisting>options ATA_STATIC_ID # Static device numbering</programlisting> <para>この行はコントローラ番号を静的に割り当てます。 このオプションがない場合、デバイス番号は動的に割り当てられます。</para> <programlisting># SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. device amd # AMD 53C974 (Teckram DC-390(T)) device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module device mpt # LSI-Logic MPT-Fusion #device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') device trm # Tekram DC395U/UW/F DC315U adapters device adv # Advansys SCSI adapters device adw # Advansys wide SCSI adapters device aha # Adaptec 154x SCSI adapters device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. device bt # Buslogic/Mylex MultiMaster SCSI adapters device ncv # NCR 53C500 device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50</programlisting> <para>このセクションでは、 システムにない SCSI コントローラはコメントアウトして下さい。 もし IDE しかないシステムならこれらすべてを削除できます。 <literal>*_REG_PRETTY_PRINT</literal> 行は、 対応するドライバに対するデバッグオプションです。</para> <programlisting># SCSI peripherals device scbus # SCSI bus (required for SCSI) device ch # SCSI media changers device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) device ses # SCSI Environmental Services (and SAF-TE)</programlisting> <para>システムにない SCSI 周辺機器はコメントアウトしてください。 もし IDE しか持っていないならこれらを完全に削除できます。</para> <note> <para>USB &man.umass.4; ドライバ、およびその他のいくつかのドライバは、 本当の SCSI デバイスではないにもかかわらず、 SCSI サブシステムを利用します。 そのようなドライバがカーネルコンフィグレーションに含まれている場合には、 SCSI サポートを削除しないでください。</para> </note> <programlisting># RAID controllers interfaced to the SCSI subsystem device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID 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 hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID</programlisting> <para>サポートされる RAID コントローラです。 システムがこれらのどれも持っていない場合には、 すべてをコメントアウトもしくは削除してください。</para> <programlisting># atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller</programlisting> <para><literal>atkbdc</literal> キーボードコントローラは AT キーボードおよび PS/2 スタイルポインティングデバイスの I/O サービスを提供します。 &man.atkbd.4; および &man.psm.4; はこのコントローラを必要とします。</para> <programlisting>device atkbd # AT keyboard</programlisting> <para>&man.atkbd.4; ドライバ。 &man.atkbdc.4; コントローラと協調して動作し、 AT キーボードコントローラに接続された AT 84 キーボードや AT 拡張キーボードへのアクセスを提供します。</para> <programlisting>device psm # PS/2 mouse</programlisting> <para>マウスが PS/2 マウスポートに接続するタイプならこのデバイスを使って下さい。</para> <programlisting>device kbdmux # keyboard multiplexer</programlisting> <para>標準のキーボードマルチプレクサのサポート。 システムが 2 つ以上のキーボードを用いなければ、 この行を削除してもかまいません。</para> <programlisting>device vga # VGA video card driver</programlisting> <para>&man.vga.4; ビデオカードドライバです。</para> <programlisting>device splash # Splash screen and screen saver support</programlisting> <para>起動時のスプラッシュスクリーンおよびスクリーンセーバが必要とします。</para> <programlisting># syscons is the default console driver, resembling a SCO console device sc</programlisting> <para>&man.sc.4; は SCO に類似したデフォルトのコンソールドライバです。 殆どのフルスクリーンのプログラムは <filename>termcap</filename> のようなターミナルデータベールライブラリにアクセスするので、 <literal>sc</literal> を使うか <literal>VT220</literal> 互換のコンソールドライバである <literal>vt</literal> を使うかは重要ではありません。 ログイン時、このコンソールでフルスクリーンプログラムが動かないときは <envar>TERM</envar> 変数を <literal>scoansi</literal> に設定して下さい。</para> <programlisting># Enable this for the pcvt (VT220 compatible) console driver #device vt #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor</programlisting> <para>これは VT220 互換のコンソールドライバで、 VT100/102 と後方互換性があります。 <literal>sc</literal> とハード的に互換性がないラップトップでも問題なく動きます。 ログイン後、<envar>TERM</envar> を <literal>vt100</literal> 又は <literal>vt220</literal> と設定して下さい。 <literal>vt100</literal> は仮想的にすべてのプラットフォームで有効であるため、 <literal>sc</literal> デバイス用の <filename>termcap</filename> や <filename>terminfo</filename> のエントリが無い、ネットワーク上の多くの異なったマシンに接続する際に、 このドライバは有用です。</para> <programlisting>device agp</programlisting> <para>システムが AGP カードを搭載している場合には、 この行を含めてください。 AGP および (ボードが機能を持っている場合には) AGP GART に対応します。</para> <programlisting># Add suspend/resume support for the i8254. device pmtimer</programlisting> <para>APM および ACPI といった電源管理イベントのためのタイマデバイスドライバです。</para> <programlisting># PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus</programlisting> <para>PCMCIA サポート。ラップトップを使っているなら必要でしょう。</para> <programlisting># Serial (COM) ports device sio # 8250, 16[45]50 based serial ports</programlisting> <para>これらは &windows; では <filename>COM</filename> と呼ばれているシリアルポートです。</para> <note> <para>もしシステムが内蔵モデムを <filename>COM4</filename> に、 シリアルポートを <filename>COM2</filename> に設定している場合、モデムの IRQ を 2 に変更してください。 もしマルチポートシリアルカードを持っていて、 <filename>/boot/device.hints</filename> に追加する正しい数値に関する情報がほしい場合は、 マニュアルページ &man.sio.4; を参照して下さい。 ビデオカードのいくつかは、特に S3 チップベースのものは、IO アドレスを <literal>0x*2e8</literal> と言う形式で表現します。 多くの安価なシリアルカードは 16 ビットの IO アドレス空間を完全にデコードしないので、 これらのカードを使った場合衝突が起こり、 事実上 <filename>COM4</filename> ポートを使用不可能にします。</para> <para>各々のシリアルポートは固有の IRQ を必要とします。 <filename>COM3</filename> と <filename>COM4</filename> 用のデフォルト IRQ は利用できません。 例外は、共有割り込み番号をサポートするマルチポートカードを使っている場合です。</para> </note> <programlisting># Parallel port device ppc</programlisting> <para>ISA バスパラレルポートインタフェースです。</para> <programlisting>device ppbus # Parallel port bus (required)</programlisting> <para>パラレルポートバスのサポートを提供します。</para> <programlisting>device lpt # Printer</programlisting> <para>パラレルポートプリンタのサポートを追加します。</para> <note> <para>上の 3 つはすべてパラレルプリンタを利用可能にするために必要です。</para> </note> <programlisting>device ppi # Parallel port interface device</programlisting> <para>汎用I/O (<quote>geek port</quote>) + IEEE1284 I/O です。</para> <programlisting>#device vpo # Requires scbus and da</programlisting> <indexterm><primary>zip ドライブ</primary></indexterm> <para>Iomega の Zip ドライブ用です。<literal>scbus</literal> と <literal>da</literal> サポートが必要です。 EPP 1.9モードを使うと最高の性能が得られます。</para> <programlisting>#device puc</programlisting> <para>&man.puc.4; glue ドライバがサポートしている <quote>dumb</quote> シリアル、 またはパラレル PCI カードをシステムが持っているのであれば、 このデバイスを有効にしてください。</para> <programlisting># PCI Ethernet NICs. device de # DEC/Intel DC21x4x (<quote>Tulip</quote>) device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (<quote>Typhoon</quote>) device vx # 3Com 3c590, 3c595 (<quote>Vortex</quote>)</programlisting> <para>PCI ネットワークカードのドライバです。 システムにないものはコメントアウトするか削除して下さい。</para> <programlisting># PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support</programlisting> <para>MII バスサポートはいくつかの PCI 10/100 イーサネット NIC、 すなわち MII に従うトランシーバや MII のようなトランシーバ制御インタフェースを実装するもの、に必要となります。 カーネルコンフィギュレーションに <literal>device miibus</literal> を追加することで、汎用 miibus API のサポートと、 特定のドライバを必要としない場合に利用される汎用のものを含むすべての PHY ドライバが導入されます。</para> <programlisting>device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device lge # Level 1 LXT1001 gigabit ethernet device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device nge # NatSemi DP83820 gigabit ethernet device nve # nVidia nForce MCP on-board Ethernet Networking device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc') device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (<quote>Starfire</quote>) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device stge # Sundance/Tamarack TC9021 gigabit Ethernet device ti # Alteon Networks Tigon I/II gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 <quote>EPIC</quote>) device vge # VIA VT612x gigabit ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (<quote>Boomerang</quote>, <quote>Cyclone</quote>)</programlisting> <para>MII バスコントローラコードを利用するドライバです。</para> <programlisting># ISA Ethernet NICs. pccard NICs included. device cs # Crystal Semiconductor CS89x0 NIC # 'device ed' requires 'device miibus' device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards device ex # Intel EtherExpress Pro/10 and Pro/10+ device ep # Etherlink III based cards device fe # Fujitsu MB8696x based cards device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc. device lnc # NE2100, NE32-VL Lance Ethernet cards device sn # SMC's 9000 series of Ethernet chips device xe # Xircom pccard Ethernet # ISA devices that use the old ISA shims #device le</programlisting> <para>ISA イーサネットドライバです。 どのカードがどのドライバによりサポートされているかの詳細は、 <filename>/usr/src/sys/<replaceable>arch</replaceable>/conf/NOTES</filename> を参照して下さい。</para> <programlisting># Wireless NIC cards device wlan # 802.11 support</programlisting> <para>標準の 802.11 サポート。ワイヤレスネットワークではこの行が必要です。</para> <programlisting>device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support</programlisting> <para>802.11 デバイスの暗号化サポート。 暗号化および 802.11i セキュリティプロトコルを使うシステムでは、 これらの行が必要です。</para> <programlisting>device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC's device ath_hal # Atheros HAL (Hardware Access Layer) device ath_rate_sample # SampleRate tx rate control for ath device awi # BayStack 660 and others device ral # Ralink Technology RT2500 wireless NICs. device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. #device wl # Older non 802.11 Wavelan wireless NIC.</programlisting> <para>ワイヤレスカードのサポートです。</para> <programlisting># Pseudo devices device loop # Network loopback</programlisting> <para>TCP/IP の汎用ループバックデバイスです。 これは<emphasis>必須</emphasis>です。</para> <programlisting>device random # Entropy device</programlisting> <para>暗号化されたセキュア乱数ジェネレータです。</para> <programlisting>device ether # Ethernet support</programlisting> <para><literal>ether</literal> はイーサネットカードを持っているシステムでのみ必要です。 汎用イーサネットプロトコルコードを含みます。</para> <programlisting>device sl # Kernel SLIP</programlisting> <para><literal>sl</literal> は SLIP サポートを提供します。 SLIP は設定のより簡単な、モデム-モデム間の接続にはより適していてより高機能な PPP に殆ど取って代わられています。</para> <programlisting>device ppp # Kernel PPP</programlisting> <para>これはダイアルアップ接続用のカーネル PPP サポートです。 他にも <literal>tun</literal> を利用し、 デマンドダイアリングのような柔軟性と機能を提供するユーザーランドのアプリケーションとして実装された PPP が存在します。</para> <programlisting>device tun # Packet tunnel.</programlisting> <para>これはユーザーランド PPP ソフトウエアにより利用されます。 詳細はこのハンドブックの <link linkend="userppp">PPP</link> 章を参照して下さい。</para> <programlisting><anchor xml:id="kernelconfig-ptys"/> device pty # Pseudo-ttys (telnet etc)</programlisting> <para>これは <quote>疑似ターミナル</quote> 或いはシミュレートされたログインポートです。 これは入ってくる <command>telnet</command> と <command>rlogin</command> セッション、 <application>xterm</application> やその他の <application>Emacs</application> のようなアプリケーションにより利用されます。</para> <programlisting>device md # Memory <quote>disks</quote></programlisting> <para>メモリディスク疑似デバイス。</para> <programlisting>device gif # IPv6 and IPv4 tunneling</programlisting> <para>この行は IPv6 over IPv4 トンネル、IPv4 over IPv6 トンネル、 IPv4 over IPv4 トンネル、IPv6 over IPv6 トンネルを提供します。 <literal>gif</literal> デバイスは <quote>auto-cloning (自動複製)</quote> し、 必要に応じてデバイスノードを作成します。</para> <programlisting>device faith # IPv6-to-IPv4 relaying (translation)</programlisting> <para>この疑似デバイスは自分宛に送られたパケットを受け取り、 IPv4/IPv6 変換デーモンに渡します。</para> <programlisting># The `bpf' device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter</programlisting> <para>このバークレーパケットフィルタ疑似デバイスは、 ネットワークインタフェースを、 イーサネットのようなブロードキャストネットワーク上ですべてのパケットを拾うことのできる promiscuous モードに設定できるようにします。 これらのパケットはディスクに取り込むこともできますし、 &man.tcpdump.1; を使ってチェックをすることもできます。</para> <note> <para>&man.dhclient.8; も &man.bpf.4; デバイスを使います。 DHCP を使っているなら、これはコメントアウトしないでください。</para> </note> <programlisting># USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device ugen # Generic device uhid # <quote>Human Interface Devices</quote> device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device ural # Ralink Technology RT2500USB wireless NICs device urio # Diamond Rio 500 MP3 player device uscanner # Scanners # USB Ethernet, requires mii device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet</programlisting> <para>さまざまな USB デバイスのサポートです。</para> <programlisting># FireWire support device firewire # FireWire bus code device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!)</programlisting> <para>Firewire デバイスのサポートです。</para> <para>より詳細な情報と、&os; によりサポートされる他のデバイスについては <filename>/usr/src/sys/<replaceable>arch</replaceable>/conf/NOTES</filename> を参照して下さい。</para> --> <!-- This section refers to ancient hardware. <sect2> <title>大容量メモリ構成 (<acronym>PAE</acronym>)</title> <indexterm> <primary>Physical Address Extensions (<acronym>PAE</acronym>)</primary> <secondary>large memory</secondary> </indexterm> <para>大容量のメモリを搭載したコンピュータは、 ユーザ+カーネル仮想アドレス (<acronym>KVA</acronym>) 空間における 4 ギガバイトの制限を越えてメモリにアクセスする必要があります。 Intel は &pentium; Pro およびそれ以降の CPU において、 36-bit 物理アドレス空間に対応しました。</para> <para>&intel; &pentium; Pro およびそれ以降の CPU では、 Physical Address Extensions (<acronym>PAE</acronym>) を用いて 64 ギガバイトまでのメモリの構成を可能にします。 &os; は、<option>PAE</option> カーネルコンフィグレーションオプションを用いることで PAE に対応します。 現在すべてのバージョンの &os; で利用できます。 Intel のメモリアーキテクチャの制限により、 4 ギガバイト以上または以下の区別をしません。 4 ギガバイト以上に割り当てられたメモリは、 利用可能なメモリのプールに単純に追加されます。</para> <para><acronym>PAE</acronym> サポートをカーネルで有効にするには、 以下の行をカーネルコンフィグレーションファイルに追加してください。</para> <programlisting>options PAE</programlisting> <note> <para>&os; の <acronym>PAE</acronym> のサポートは、 &intel; IA-32 プロセッサでのみ利用できます。 また、&os; における <acronym>PAE</acronym> サポートは広くテストが行われているわけではないので、 &os; の他の機能と比較するとベータ品質に位置づけられます。</para> </note> <para>&os; における <acronym>PAE</acronym> サポートには、 以下のような制限があります。</para> <itemizedlist> <listitem> <para>プロセスは、4 ギガバイト以上の仮想メモリ空間にアクセスできません。</para> </listitem> <listitem> <para>&man.bus.dma.9; インタフェースを用いないデバイスドライバは、 <acronym>PAE</acronym> が有効なカーネルにおいてデータの破損を引き起こす可能性があるため、 利用することは推奨されません。 そのため &os; で提供される <filename>PAE</filename> カーネルコンフィグレーションファイルでは、<acronym>PAE</acronym> が有効なカーネルで動作することが知られていないすべてのドライバが外されています。</para> </listitem> <listitem> <para>いくつかの調整可能なシステムパラメータは、 利用可能な物理メモリによるメモリリソースを調整します。 <acronym>PAE</acronym> を必要とするような大きなメモリのシステムでは、 そのような調整可能なリソースが不必要に割り当てられることがあります。 そのような例のひとつが <option>kern.maxvnodes</option> sysctl です。この sysctl は、カーネルで許される vnode の最大数を調節します。 この sysctl や同様に変更可能なパラメータを適切な値に調整することをお奨めします。</para> </listitem> <listitem> <para>カーネルバーチャルアドレス (<acronym>KVA</acronym>) の枯渇を避けるため、<acronym>KVA</acronym> 空間を大きくとる、または、 激しく消費される特定のカーネルリソースの量を減らす必要があるでしょう。 <option>KVA_PAGES</option> カーネルオプションを用いて <acronym>KVA</acronym> 空間を増やすことができます。</para> </listitem> </itemizedlist> <para>パフォーマンスや安定性については、 &man.tuning.7; を調べることをお奨めします。 &man.pae.4; は、&os; の <acronym>PAE</acronym> サポートに関する最新の情報を含んでいます。</para> </sect2> --> </sect1> <sect1 xml:id="kernelconfig-building"> <title>カスタムカーネルの構築とインストール</title> <para>カスタムコンフィグレーションファイルを編集して保存したら、 カーネルのソースコードを以下の手順でコンパイルしてください。</para> <procedure> <title>カーネルの構築</title> <indexterm> <primary>カーネル</primary> <secondary>構築 / インストール</secondary> </indexterm> <step> <para>以下のディレクトリに移動してください。</para> <screen>&prompt.root; <userinput>cd /usr/src</userinput></screen> </step> <step> <para>カスタムコンフィグレーションファイルの名前を指定して新しいカーネルをコンパイルします。</para> <screen>&prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput></screen> </step> <step> <para>指定したカーネルコンフィグレーションファイルでコンパイルされた新しいカーネルをインストールします。 以下のコマンドは、新しいカーネルを <filename>/boot/kernel/kernel</filename> に、 今までのカーネルを <filename>/boot/kernel.old/kernel</filename> という名前で保存します。</para> <screen>&prompt.root; <userinput>make installkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput></screen> </step> <step> <para>新しいカーネルを使うために、 システムをシャットダウンして再起動してください。 うまく行かない場合は、<xref linkend="kernelconfig-noboot"/> を参照してください。</para> </step> </procedure> <para>デフォルトでは、カスタムカーネルを構築すると、 すべてのカーネルモジュールが再構築されます。 カーネルのアップデートをより早く行いたい、または、 カスタムモジュールのみを構築したいといった場合は、 カーネルの構築を開始する前に、以下のように <filename>/etc/make.conf</filename> を編集してください。</para> <para>例として、以下の変数は、 デフォルトのすべてのモジュールを構築する設定を変更し、 構築するモジュール一覧を指定します。</para> <programlisting>MODULES_OVERRIDE = linux acpi</programlisting> <para>また、以下の変数は、構築を行わないモジュールを指定します。</para> <programlisting>WITHOUT_MODULES = linux acpi sound</programlisting> <para>他の変数については、&man.make.conf.5; を参照してください。</para> <indexterm> <primary><filename>/boot/kernel.old</filename></primary> </indexterm> </sect1> <sect1 xml:id="kernelconfig-trouble"> <title>問題が起きた場合には</title> <para>カスタムカーネルを作る際に起こりうるトラブルは、 次の 4 種類に分けられます。</para> <variablelist> <varlistentry> <term><command>config</command> コマンドの失敗</term> <listitem> <para><command>config</command> で失敗した時には、 トラブルの起きた行番号が出力されます。 たとえば、次のように出力された場合には、 17 行目が正しく入力されているかどうか、 <filename>GENERIC</filename> や <filename>NOTES</filename> と比較して修正してください。</para> <screen>config: line 17: syntax error</screen> </listitem> </varlistentry> <varlistentry> <term><command>make</command> コマンドの失敗</term> <listitem> <para><command>make</command> が失敗した場合には、 通常、カーネルコンフィグレーションファイルにおいて、 <command>config</command> がとらえられなかったような間違いをしています。 コンフィグレーションファイルを見直してください。 それでも問題を解決することができなければ、 &a.questions; へカーネルコンフィグレーションファイルを添付して送ってください。</para> </listitem> </varlistentry> <varlistentry xml:id="kernelconfig-noboot"> <term>カーネルが起動しない</term> <listitem> <para>新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、&os; には利用できないカーネルから復帰する洗練されたメカニズムがあります。 &os; のブートローダで起動したいカーネルを選択してください。 システムの起動メニューが表示されている時に、 <quote>Escape to a loader prompt</quote> オプションを選択するとアクセスできます。 プロンプトで <command>boot <replaceable>kernel.old</replaceable></command> か他の正常に起動するカーネルを入力してください。</para> <para>問題のないカーネルで起動した後、 コンフィグレー ションファイルを調べ、 再び構築を試みてください。 <filename>/var/log/messages</filename> にはすべての成功した起動時のカーネルメッセージの記録があり、 これは問題を解決するための助けになる情報の一つでしょう。また、 &man.dmesg.8; は現在の起動時のカーネルメッセージを出力します。</para> <note> <para>カーネルの構築中にトラブルが起きた時には、 次回の構築で消されないように、 <filename>GENERIC</filename> のコピーや他の正常に起動するカーネルを別の名前で保存するようにしてください。 <emphasis remap="tt">kernel.old</emphasis> は新しいカーネルをインストールする時に、 その一つ前にインストールした、 うまく動かないかもしれないカーネルで上書きされてしまうため、 起動するカーネルを保存しておくことは重要です。 できる限り早く以下のようにして、 正しく起動するカーネルを含むディレクトリ名に変更してください。</para> <screen>&prompt.root; <userinput>mv /boot/kernel <replaceable>/boot/kernel.bad</replaceable></userinput> &prompt.root; <userinput>mv /boot/<replaceable>kernel.good</replaceable> /boot/kernel</userinput></screen> </note> </listitem> </varlistentry> <varlistentry> <term>カーネルは動きますが &man.ps.1; は動きません!</term> <listitem> <para>システムユーティリティの構築されたバージョンと異るバージョンのカーネルをインストールした場合、 たとえば -CURRENT のソースから構築したカーネルを -RELEASE システム上にインストールするような場合には、 &man.ps.1; や &man.vmstat.8; のような多くのシステムステータスコマンドは動かなくなります。 修正するには、カーネルと同じバージョンのソースツリーで <link linkend="makeworld">world を再構築し、インストール</link> してください。 カーネルとそれ以外で異なるバージョンを組み合わせてオペレーティングシステムを使用することは推奨されていません。</para> </listitem> </varlistentry> </variablelist> </sect1> </chapter>