diff --git a/ja_JP.eucJP/books/handbook/kernelconfig/chapter.xml b/ja_JP.eucJP/books/handbook/kernelconfig/chapter.xml index 9d86d2f719..653435e493 100644 --- a/ja_JP.eucJP/books/handbook/kernelconfig/chapter.xml +++ b/ja_JP.eucJP/books/handbook/kernelconfig/chapter.xml @@ -1,1406 +1,1410 @@ - - + +--> FreeBSD カーネルのコンフィグレーション この章では カーネル カスタムカーネルの構築 カーネルは &os; オペレーティングシステムの中核をなすものです。 カーネルは、メモリ管理、セキュリティ制御の強制、ネットワーク、 ディスクアクセスなどを担っています。 &os; は動的に構成することができるようになっていますが、 まだ、時にはカスタムカーネルを設定してコンパイルする必要があります。 この章では、以下のことを扱っています。 いつカスタムカーネルの構築が必要になるか。 ハードウェア一覧の作成方法。 カーネルコンフィグレーションファイルのカスタマイズの方法。 カーネルコンフィグレーションファイルから新しいカーネルを構築する方法。 新しいカーネルのインストール方法。 うまく行かないときの問題解決法。 この章で表示されているすべてのコマンドは、 root 権限で実行する必要があります。 なぜカスタムカーネルを作るか? 伝統的に、&os; はモノリシック (monolithic) カーネルを使っていました。 このカーネルは、単一の巨大なプログラムで、 扱えるデバイスは固定されていて、 カーネルの振る舞いを変えたければ構築してコンピュータを再起動し、 新しいカーネルを動かさなれければなりませんでした。 今日では、&os; カーネルのかなりの機能はモジュールに含まれるようになり、 必要に応じて動的にカーネルに組み込んだり外したりできるようになりました。 この移行により、動いているカーネルが新しいハードウェアに迅速に対応したり、 カーネルに新たな機能を取り入れられるようになります。 このようなカーネルは、モジュラ (modular) カーネルと呼ばれます。 しかしながら、いまだにいくらかは静的にカーネルを構成する必要があります。 機能がカーネルとあまりに密接に結びついているため、 動的に組み込むことができない場合があるためです。 セキュリティ的に、カーネルモジュールを読み込んだり外すことができず、 必要となる機能を静的にカーネルにコンパイルしなければならない場合もあります。 システムに合わせたカーネルを構築することは、多くの場合、 高度な知識を持つ BSD ユーザが避けて通ることのできない通過儀礼です。 この作業は多くの時間を必要としますが、&os; システムに利益をもたらします。 広範囲のハードウェアをサポートしなければならない GENERIC カーネルとは異なり、カスタムカーネルは、 使用しているコンピュータのハードウェアのみをポートするように、 必要のない機能を省くことができます。これは、 次にあげるような利益をもたらします。 素早く起動します。 カーネルはシステム上にあるハードウェアしか検出しないので、 システムの起動にかかる時間を短くできます。 メモリの消費量を減らすことができます。 システムに合わせたカーネルは、 使用しない機能やデバイスドライバを含まないので、 大抵 GENERIC カーネルより少ないメモリしか消費しません。 カーネルコードは常に物理メモリ上に存在し、 アプリケーションはその容量分のメモリを使用できないので、 これは重要なことです。 したがって、メモリが少ないシステムでは、 カーネルの再構築は重要です。 追加のハードウェアをサポートします。 カスタムカーネルは、GENERIC カーネルに存在しないデバイスのサポートを追加することができます。 カスタムカーネルを構築する前に、再構築する理由を考えてください。 ある特定のハードウェアに対応する必要がある場合に、 そのハードウェアに対応するためのモジュールがすでに用意されていることがあります。 カーネルモジュールは /boot/kernel にあります。モジュールによっては &man.kldload.8; により、 すでに実行中のカーネルに動的に読み込まれています。 ほとんどのカーネルドライバには、 読み込み可能なモジュールやマニュアルページが用意されています。 たとえば、&man.ath.4; ワイヤレスイーサネットドライバのマニュアルページには以下のような記述があります。 Alternatively, to load the driver as a module at boot time, place the following line in &man.loader.conf.5;: if_ath_load="YES" /boot/loader.confif_ath_load="YES" を追加すると、 起動時にモジュールが読み込まれるようになります。 対応するモジュールが /boot/kernel に存在しないこともあります。 特定のサブシステムでは、ほとんど多くの場合存在しません。 + + +--> システムのハードウェアについて知る カーネルコンフィグレーションファイルの編集を始める前に、 コンピュータのハードウェア一覧を作成すると良いでしょう。 デュアルブートシステムでは、 現在インストールされている別のオペレーティングシステムの設定を調べることで、 一覧を作成できます。 たとえば、µsoft; の デバイスマネージャ は、インストールされているデバイスに関する情報を持っています。 µsoft.windows; のバージョンによっては、 システム アイコンを使って、 デバイスマネージャ にアクセスできます。 インストールされているオペレーティングシステムが &os; だけであれば、&man.dmesg.8; を使い、 起動時に検出されたハードウェアの一覧を調べてください。 &os; のほとんどのデバイスドライバにはマニュアルページが用意され、 対応しているハードウェアの一覧を提供しています。 たとえば、以下の行は、&man.psm.4; ドライバがマウスを検出したことを示しています。 psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: [ITHREAD] psm0: model Generic PS/2 mouse, device ID 0 このハードウェアはシステムに存在するので、 カスタムカーネルコンフィグレーションファイルからこのドライバを外さないでください。 dmesg が起動時の検出結果を表示しない場合には、 かわりに /var/run/dmesg.boot で出力を確認してください。 ハードウェアを見つけるためのもうひとつのツールは、 より冗長な出力を行う &man.pciconf.8; です。 たとえば、以下のようになります。 pciconf 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 この出力は、ath ドライバがワイヤレスイーサネットデバイスにあることを示しています。 &man.man.1; を フラグで実行すると、 有用な情報を得ることができます。たとえば、 ある特定の単語を含むマニュアルページの一覧を表示するには、 以下のようになります。 &prompt.root; man -k Atheros ath(4) - Atheros IEEE 802.11 wireless network driver ath_hal(4) - Atheros Hardware Access Layer (HAL) ハードウェアの一覧を作成したら、 カスタムカーネルのコンフィグレーションファイルを編集している時に、 この一覧を利用して、 インストールされているハードウェアが削除されていないことを確認してください。 + + - +--> コンフィグレーションファイル カスタムカーネルのコンフィグレーションファイルを作成し、 カスタムカーネルを構築するのであれば、 &os; の全ソースツリーがまずインストールされている必要があります。 もし、/usr/src/ が存在していなかったり、空であれば、 カーネルのソースはインストールされていません。 で説明した svn を使ってソースをインストールできます。 また、&man.sysinstall.8; を使って、 src ディストリビューションからインストールすることもできます。 このディストリビューションは、&man.sysinstall.8; で Configuration を選択し、 Distributions メニューから選択できます。 ソースをインストールしたら、/usr/src/sys を確認して下さい。 このディレクトリには、サブディレクトリがいくつもあります。 その中には、サポートされている各アーキテクチャである、amd64, i386, ia64, pc98, powerpc および sparc64 のサブディレクトリがあります。 各アーキテクチャのディレクトリ内部にあるファイルはすべてそのアーキテクチャでのみ使用されます。 残りのコードは、アーキテクチャに依存しない、 すべてのプラットフォームで共有されるコードです。 サポートされている各アーキテクチャには、conf サブディレクトリがあり、 そのアーキテクチャ用の GENERIC カーネルコンフィグレーションファイルが用意されています。 この GENERIC は編集しないでください。 このファイルを別名でコピーし、コピーを編集してください。 慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの &os; マシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として amd64 アーキテクチャのカスタムコンフィグレーションファイルを作成します。 &prompt.root; cd /usr/src/sys/amd64/conf &prompt.root; cp GENERIC MYKERNEL カーネルコンフィグレーションファイルの編集を終えたら、 ファイルのバックアップを /usr/src 以外の場所に保存してください。 もしくは、カーネルコンフィグレーションファイルは他の場所において、 シンボリックリンクを張る方法もあります。 &prompt.root; cd /usr/src/sys/amd64/conf &prompt.root; mkdir /root/kernels &prompt.root; cp GENERIC /root/kernels/MYKERNEL &prompt.root; ln -s /root/kernels/MYKERNEL これで、コンフィグレーションファイル MYKERNEL を ASCII テキストエディタで編集できます。 初心者に対してより簡単なエディタである ee も &os; とともにインストールされていますが、 デフォルトのエディタは vi です。 カーネル NOTES NOTES カーネル コンフィグレーションファイル コンフィグレーションファイルのフォーマットはシンプルです。 各行はデバイスやサブシステム、引数、または簡単な説明を含んでいます。 # に続くテキストはすべてコメントとして扱われ、 無視されます。 カーネルからデバイスもしくはサブシステムのサポートを外すには、 対応する行の最初に # を入れてください。 理解していない行に対しては、# を追加したり削除しないでください。 このファイルで与えられる説明の他に、 そのアーキテクチャの GENERIC と同じディレクトリにある NOTES にも説明があります。 アーキテクチャに依存しないオプションについては、 /usr/src/sys/conf/NOTES をご覧ください。 コンフィグレーションファイルでは include ディレクティブを利用できます。 コンフィグレーションファイルに他のファイルを取り込むことができるので、 すでに存在するファイルに対する小さな変更を簡単に維持できます。 たとえば、オプションやドライバの追加が少しだけの場合には、 以下のように GENERIC からの差分だけの管理が可能になります。 include GENERIC ident MYKERNEL options IPFIREWALL options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVERT この方法では、ローカルのコンフィグレーションファイルには、 ローカルにある GENERIC カーネルとの差分が記述されています。 アップグレードが行われると、 GENERIC に追加された新しい機能は、 (nooptionsnodevice によって外されない限り) ローカルのカーネルにも反映されます。 コンフィグレーションの構成要素に関する包括的な一覧と説明は &man.config.5; にあります。 利用可能なすべてのオプションを含むファイルを構築するには、 以下のコマンドを root 権限で実行してください。 &prompt.root; cd /usr/src/sys/i386/conf && make LINT カーネルオプション ident ident GENERIC これはカーネルの識別名です。 たとえば、MYKERNEL のように、新しいカーネルに付けたい名前に書き換えて下さい。 ident に書いた値はカーネルを起動する時に表示されます。 makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols このオプションは &man.gcc.1; がデバッグ情報を生成するようにします。 options SCHED_ULE # ULE scheduler &os; のデフォルトのスケジューラです。 このオプションはこのままにしてください。 options INET # InterNETworking ネットワークのサポート。 ほとんどのプログラムは少なくともループバックネットワークを必要とするので、 基本的にこの行は必須です。 options INET6 # IPv6 communications protocols このオプションは IPv6 通信プロトコルを利用可能にします。 options FFS # Berkeley Fast Filesystem これは標準のハードドライブファイルシステムです。 システムがハードディスクから起動する場合は残して下さい。 options SOFTUPDATES # Enable FFS Soft Updates support このオプションは、カーネル内の Soft Updates 機能を有効にし、 ディスクへの高速な書き込みを支援します。 カーネルがこの機能を提供していても、 特定のディスクに対してはこのオプションを有効にする必要があります。 &man.mount.8; の出力を見て、 Soft Updates が有効になっているかどうかを確認してください。 soft-updates オプションが見当たらなければ、 現在使用しているファイルシステムには &man.tunefs.8;、 新規のファイルシステムには &man.newfs.8; コマンドで有効にできます。 options UFS_ACL # Support for access control lists このオプションは、カーネルのアクセス制御リスト (ACL) のサポートを有効にします。 この機能は拡張属性および UFS2 が有効になっていることに依存し、 で機能の説明が行われています。 ACL はデフォルトで有効にされています。 もし、これまでにファイルシステムで有効にしていたのであれば、 カーネルの中で無効にすべきではありません。 なぜなら、無効にすると ACL が削除され、 ファイルの保護が予想できない方法で行われるためです。 options UFS_DIRHASH # Improve performance on big directories このオプションは、メモリを多少余分に食うものの、 大きなディレクトリに対するディスク操作を高速化する機能を有効にします。 大規模なサーバや対話的なワークステーションではこのオプションを残しておいて、 ファイアウォールのように、 メモリが貴重でディスクアクセス速度がそれほど重要でない小規模なシステムでは削除するとよいでしょう。 options MD_ROOT # MD is a potential root device このオプションは、メモリディスクによる root デバイスのサポートを有効にします。 カーネルオプション NFS カーネルオプション NFS_ROOT options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFS_ROOT # NFS usable as /, requires NFSCLIENT ネットワークファイルシステム (NFS)。 NFS ファイルサーバから TCP/IP を介してパーティションをマウントするのでない限り、 これらの行をコメントアウトできます。 カーネルオプション MSDOSFS options MSDOSFS # MSDOS Filesystem &ms-dos; ファイルシステム。 起動時に DOS でフォーマットされたハードドライブのパーティションをマウントするのでなければ、 この行はコメントアウトできます。 この機能は最初に DOS パーティションをマウントする時に自動的にロードされます。 emulators/mtools package を使うと、マウント、アンマウントすることなしに DOS フロッピーにアクセスすることができ、 MSDOSFS を必要としません。 options CD9660 # ISO 9660 Filesystem CD-ROM 用の ISO 9660 ファイルシステム。 もしシステムが CD-ROM ドライブを持っていないか、 ときどきデータ CD をマウントするだけなら、 データ CD を最初にマウントする時に自動的にロードされるので、 この行をコメントアウトしてください。 音楽 CD はこのファイルシステムを必要としません。 options PROCFS # Process filesystem (requires PSEUDOFS) プロセスファイルシステム。 これは /proc にマウントされるもので、他のプログラムに、 どんなプロセスが走っているかについて、 より多くの情報を提供する事ができます。 ほとんどのデバッグおよびモニタリングツールが PROCFS なしで起動するので、 ほとんどの環境では PROCFS を必要としません。 デフォルトのインストールではこのファイルシステムをマウントしません。 options PSEUDOFS # Pseudo-filesystem framework カーネルで PROCFS を使う場合には、 PSEUDOFS のサポートが必要です。 options GEOM_PART_GPT # GUID Partition Tables. GUID パーティションテーブル (GPT) に対応します。 GPT では、1 つのディスクに数多くのパーティション (標準の構成では最大 128) を作成可能です。 options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!] 4.3BSD との互換機能です。 有効なままにして下さい。 この行をコメントアウトするとおかしな動きをするプログラムがあります。 options COMPAT_FREEBSD4 # Compatible with &os;4 このオプションは、 古いバージョンの &os; でコンパイルされた古いシステムコールインターフェースを用いるアプリケーションを利用する場合に必要とされます。 古いアプリケーションを実行するすべての &i386; システムで、このオプションの利用を推奨します。 &os; 4.X より後にサポートされた ia64 や &sparc64; といったプラットフォームでは、このオプションは必要ありません。 options COMPAT_FREEBSD5 # Compatible with &os;5 このオプションは、 &os; 5.X でコンパイルされた &os; 5.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。 options COMPAT_FREEBSD6 # Compatible with &os;6 このオプションは、 &os; 6.X でコンパイルされた &os; 6.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。 options COMPAT_FREEBSD7 # Compatible with &os;7 このオプションは、&os; 8 以降において、 &os; 7.X でコンパイルされた &os; 7.X のシステムコールインタフェースを用いるアプリケーションを利用する場合に必要とされます。 options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI この行は、カーネルがそれぞれの SCSI 機器を検出する前に 5 秒間待つようにします。 システムが IDE ドライブしか持たないなら無視するか、 起動時間を短くするために、この数字を小さく変更できます。 もし、&os; が SCSI 機器を認識しなくなってしまったら、もう一度数字を増やしてください。 options KTRACE # ktrace(1) support この行はデバッグに役立つカーネルプロセスのトレースを可能にします。 options SYSVSHM # SYSV-style shared memory このオプションは System V 共有メモリを提供します。 この機能の最も一般的な使用方法は X における XSHM 拡張です。 多くのグラフィックス重視のプログラムではこの機能を自動的に描画のスピードアップに利用します。 Xorg がインストールされているなら、 これを含めてください。 options SYSVMSG # SYSV-style message queues System V のメッセージのサポート。 このオプションはカーネルサイズを数百バイト大きくするだけです。 options SYSVSEM # SYSV-style semaphores System V セマフォのサポート。 あまり使われませんが、カーネルサイズは数百バイト大きくなるだけです。 &man.ipcs.1; を で実行すると、これらの System V 機能を使っているプロセスのリストを表示します。 options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions リアルタイム拡張が 1993 &posix; に追加されました。 Ports Collection の内のいくつかのアプリケーションはこれを使っています。 options KBD_INSTALL_CDEV # install a CDEV entry in /dev キーボードデバイスノードを /dev に作成するにはこのオプションが必要です。 カーネルオプション SMP device apic # I/O APIC このデバイスは、I/O APIC の割り込みを有効にします。 ユニプロセッサおよび SMP カーネル両方で使用できますが、 SMP カーネルでは必須です。 マルチプロセッサに対応するには options SMP を追加してください。 このデバイスは i386 アーキテクチャにのみ存在します。 他のアーキテクチャでは、この行を含まないでください。 device eisa システムが EISA マザーボードを持っている場合、 この行を含めて下さい。これは EISA バスに接続されているすべてのデバイスの自動検出と設定を可能にします。 device pci システムが PCI マザーボードを持っている場合、この行を含めて下さい。 これは PCI カードの自動検出と PCI から ISA バスへのゲートウエイを可能にします。 # Floppy drives device fdc これはフロッピーディスクコントローラです。 # ATA and ATAPI devices device ata このドライバはすべての ATA と ATAPI デバイスをサポートします。 最近のマシンでは device ata 行を 1 行書くだけですべての PCI ATA/ATAPI デバイスを検出することができます。 device atadisk # ATA disk drives ATA ディスクドライブには device ata と共にこの行が必要です。 device ataraid # ATA RAID drives ATA RAID ドライブには device ata と共にこのデバイスが必要です。 device atapicd # ATAPI CDROM drives ATAPI CDROM ドライブには device ata と共にこの行が必要です。 device atapifd # ATAPI floppy drives ATAPI フロッピードライブには device ata と共にこの行が必要です。 device atapist # ATAPI tape drives ATAPI テープドライブには device ata と共にこの行が必要です。 options ATA_STATIC_ID # Static device numbering この行はコントローラ番号を静的に割り当てます。 このオプションがない場合、デバイス番号は動的に割り当てられます。 # 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 このセクションでは、 システムにない SCSI コントローラはコメントアウトして下さい。 もし IDE しかないシステムならこれらすべてを削除できます。 *_REG_PRETTY_PRINT 行は、 対応するドライバに対するデバッグオプションです。 # 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) システムにない SCSI 周辺機器はコメントアウトしてください。 もし IDE しか持っていないならこれらを完全に削除できます。 USB &man.umass.4; ドライバ、およびその他のいくつかのドライバは、 本当の SCSI デバイスではないにもかかわらず、 SCSI サブシステムを利用します。 そのようなドライバがカーネルコンフィグレーションに含まれている場合には、 SCSI サポートを削除しないでください。 # 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 サポートされる RAID コントローラです。 システムがこれらのどれも持っていない場合には、 すべてをコメントアウトもしくは削除してください。 # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller atkbdc キーボードコントローラは AT キーボードおよび PS/2 スタイルポインティングデバイスの I/O サービスを提供します。 &man.atkbd.4; および &man.psm.4; はこのコントローラを必要とします。 device atkbd # AT keyboard &man.atkbd.4; ドライバ。 &man.atkbdc.4; コントローラと協調して動作し、 AT キーボードコントローラに接続された AT 84 キーボードや AT 拡張キーボードへのアクセスを提供します。 device psm # PS/2 mouse マウスが PS/2 マウスポートに接続するタイプならこのデバイスを使って下さい。 device kbdmux # keyboard multiplexer 標準のキーボードマルチプレクサのサポート。 システムが 2 つ以上のキーボードを用いなければ、 この行を削除してもかまいません。 device vga # VGA video card driver &man.vga.4; ビデオカードドライバです。 device splash # Splash screen and screen saver support 起動時のスプラッシュスクリーンおよびスクリーンセーバが必要とします。 # syscons is the default console driver, resembling a SCO console device sc &man.sc.4; は SCO に類似したデフォルトのコンソールドライバです。 殆どのフルスクリーンのプログラムは termcap のようなターミナルデータベールライブラリにアクセスするので、 sc を使うか VT220 互換のコンソールドライバである vt を使うかは重要ではありません。 ログイン時、このコンソールでフルスクリーンプログラムが動かないときは TERM 変数を scoansi に設定して下さい。 # 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 これは VT220 互換のコンソールドライバで、 VT100/102 と後方互換性があります。 sc とハード的に互換性がないラップトップでも問題なく動きます。 ログイン後、TERMvt100 又は vt220 と設定して下さい。 vt100 は仮想的にすべてのプラットフォームで有効であるため、 sc デバイス用の termcapterminfo のエントリが無い、ネットワーク上の多くの異なったマシンに接続する際に、 このドライバは有用です。 device agp システムが AGP カードを搭載している場合には、 この行を含めてください。 AGP および (ボードが機能を持っている場合には) AGP GART に対応します。 # Add suspend/resume support for the i8254. device pmtimer APM および ACPI といった電源管理イベントのためのタイマデバイスドライバです。 # 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 PCMCIA サポート。ラップトップを使っているなら必要でしょう。 # Serial (COM) ports device sio # 8250, 16[45]50 based serial ports これらは &windows; では COM と呼ばれているシリアルポートです。 もしシステムが内蔵モデムを COM4 に、 シリアルポートを COM2 に設定している場合、モデムの IRQ を 2 に変更してください。 もしマルチポートシリアルカードを持っていて、 /boot/device.hints に追加する正しい数値に関する情報がほしい場合は、 マニュアルページ &man.sio.4; を参照して下さい。 ビデオカードのいくつかは、特に S3 チップベースのものは、IO アドレスを 0x*2e8 と言う形式で表現します。 多くの安価なシリアルカードは 16 ビットの IO アドレス空間を完全にデコードしないので、 これらのカードを使った場合衝突が起こり、 事実上 COM4 ポートを使用不可能にします。 各々のシリアルポートは固有の IRQ を必要とします。 COM3COM4 用のデフォルト IRQ は利用できません。 例外は、共有割り込み番号をサポートするマルチポートカードを使っている場合です。 # Parallel port device ppc ISA バスパラレルポートインタフェースです。 device ppbus # Parallel port bus (required) パラレルポートバスのサポートを提供します。 device lpt # Printer パラレルポートプリンタのサポートを追加します。 上の 3 つはすべてパラレルプリンタを利用可能にするために必要です。 device ppi # Parallel port interface device 汎用I/O (geek port) + IEEE1284 I/O です。 #device vpo # Requires scbus and da zip ドライブ Iomega の Zip ドライブ用です。scbusda サポートが必要です。 EPP 1.9モードを使うと最高の性能が得られます。 #device puc &man.puc.4; glue ドライバがサポートしている dumb シリアル、 またはパラレル PCI カードをシステムが持っているのであれば、 このデバイスを有効にしてください。 # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (Tulip) device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (Typhoon) device vx # 3Com 3c590, 3c595 (Vortex) PCI ネットワークカードのドライバです。 システムにないものはコメントアウトするか削除して下さい。 # 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 MII バスサポートはいくつかの PCI 10/100 イーサネット NIC、 すなわち MII に従うトランシーバや MII のようなトランシーバ制御インタフェースを実装するもの、に必要となります。 カーネルコンフィギュレーションに device miibus を追加することで、汎用 miibus API のサポートと、 特定のドライバを必要としない場合に利用される汎用のものを含むすべての PHY ドライバが導入されます。 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 (Starfire) 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 EPIC) device vge # VIA VT612x gigabit ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang, Cyclone) MII バスコントローラコードを利用するドライバです。 # 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 ISA イーサネットドライバです。 どのカードがどのドライバによりサポートされているかの詳細は、 /usr/src/sys/i386/conf/NOTES を参照して下さい。 # Wireless NIC cards device wlan # 802.11 support 標準の 802.11 サポート。ワイヤレスネットワークではこの行が必要です。 device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support 802.11 デバイスの暗号化サポート。 暗号化および 802.11i セキュリティプロトコルを使うシステムでは、 これらの行が必要です。 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. ワイヤレスカードのサポートです。 # Pseudo devices device loop # Network loopback TCP/IP の汎用ループバックデバイスです。 これは必須です。 device random # Entropy device 暗号化されたセキュア乱数ジェネレータです。 device ether # Ethernet support ether はイーサネットカードを持っているシステムでのみ必要です。 汎用イーサネットプロトコルコードを含みます。 device sl # Kernel SLIP sl は SLIP サポートを提供します。 SLIP は設定のより簡単な、モデム-モデム間の接続にはより適していてより高機能な PPP に殆ど取って代わられています。 device ppp # Kernel PPP これはダイアルアップ接続用のカーネル PPP サポートです。 他にも tun を利用し、 デマンドダイアリングのような柔軟性と機能を提供するユーザーランドのアプリケーションとして実装された PPP が存在します。 device tun # Packet tunnel. これはユーザーランド PPP ソフトウエアにより利用されます。 詳細はこのハンドブックの PPP 章を参照して下さい。 device pty # Pseudo-ttys (telnet etc) これは 疑似ターミナル 或いはシミュレートされたログインポートです。 これは入ってくる telnetrlogin セッション、 xterm やその他の Emacs のようなアプリケーションにより利用されます。 device md # Memory disks メモリディスク疑似デバイス。 device gif # IPv6 and IPv4 tunneling この行は IPv6 over IPv4 トンネル、IPv4 over IPv6 トンネル、 IPv4 over IPv4 トンネル、IPv6 over IPv6 トンネルを提供します。 gif デバイスは auto-cloning (自動複製) し、 必要に応じてデバイスノードを作成します。 device faith # IPv6-to-IPv4 relaying (translation) この疑似デバイスは自分宛に送られたパケットを受け取り、 IPv4/IPv6 変換デーモンに渡します。 # 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 このバークレーパケットフィルタ疑似デバイスは、 ネットワークインタフェースを、 イーサネットのようなブロードキャストネットワーク上ですべてのパケットを拾うことのできる promiscuous モードに設定できるようにします。 これらのパケットはディスクに取り込むこともできますし、 &man.tcpdump.1; を使ってチェックをすることもできます。 &man.dhclient.8; も &man.bpf.4; デバイスを使います。 DHCP を使っているなら、これはコメントアウトしないでください。 # 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 # Human Interface Devices 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 さまざまな USB デバイスのサポートです。 # FireWire support device firewire # FireWire bus code device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!) Firewire デバイスのサポートです。 より詳細な情報と、&os; によりサポートされる他のデバイスについては /usr/src/sys/i386/conf/NOTES を参照して下さい。 大容量メモリ構成 (<acronym>PAE</acronym>) Physical Address Extensions (PAE) large memory 大容量のメモリを搭載したコンピュータは、 ユーザ+カーネル仮想アドレス (KVA) 空間における 4 ギガバイトの制限を越えてメモリにアクセスする必要があります。 Intel は &pentium; Pro およびそれ以降の CPU において、 36-bit 物理アドレス空間に対応しました。 &intel; &pentium; Pro およびそれ以降の CPU では、 Physical Address Extensions (PAE) を用いて 64 ギガバイトまでのメモリの構成を可能にします。 &os; は、 カーネルコンフィグレーションオプションを用いることで PAE に対応します。 現在すべてのバージョンの &os; で利用できます。 Intel のメモリアーキテクチャの制限により、 4 ギガバイト以上または以下の区別をしません。 4 ギガバイト以上に割り当てられたメモリは、 利用可能なメモリのプールに単純に追加されます。 PAE サポートをカーネルで有効にするには、 以下の行をカーネルコンフィグレーションファイルに追加してください。 options PAE &os; の PAE のサポートは、 &intel; IA-32 プロセッサでのみ利用できます。 また、&os; における PAE サポートは広くテストが行われているわけではないので、 &os; の他の機能と比較するとベータ品質に位置づけられます。 &os; における PAE サポートには、 以下のような制限があります。 プロセスは、4 ギガバイト以上の仮想メモリ空間にアクセスできません。 &man.bus.dma.9; インタフェースを用いないデバイスドライバは、 PAE が有効なカーネルにおいてデータの破損を引き起こす可能性があるため、 利用することは推奨されません。 そのため &os; で提供される PAE カーネルコンフィグレーションファイルでは、PAE が有効なカーネルで動作することが知られていないすべてのドライバが外されています。 いくつかの調整可能なシステムパラメータは、 利用可能な物理メモリによるメモリリソースを調整します。 PAE を必要とするような大きなメモリのシステムでは、 そのような調整可能なリソースが不必要に割り当てられることがあります。 そのような例のひとつが sysctl です。この sysctl は、カーネルで許される vnode の最大数を調節します。 この sysctl や同様に変更可能なパラメータを適切な値に調整することをお奨めします。 カーネルバーチャルアドレス (KVA) の枯渇を避けるため、KVA 空間を大きくとる、または、 激しく消費される特定のカーネルリソースの量を減らす必要があるでしょう。 カーネルオプションを用いて KVA 空間を増やすことができます。 パフォーマンスや安定性については、 &man.tuning.7; を調べることをお奨めします。 &man.pae.4; は、&os; の PAE サポートに関する最新の情報を含んでいます。 カスタムカーネルの構築とインストール 編集した内容を保存したら、 カーネルのソースコードをコンパイルしてください。 最新のソースと ソースツリーを同期 したら、 何らかのアップデートを行う前に、必ず /usr/src/UPDATING をチェックしてください。 このファイルには、 アップデートされたソースコードに関する重要な問題や特別に注意すべき点がすべて書かれています。 /usr/src/UPDATING は常に &os; のソースのバージョンと同期しているので、 ハンドブックの記述よりも新しい内容を含んでいます。 デバイスやオプションのサポートを外すことは簡単で、 その結果、カーネルを壊すことがあります。 たとえば、&man.ata.4; ドライバをカーネルコンフィグレーションファイルから除くと、 ATA ディスクドライバを用いるシステムは起動しません。 確信が持てないものについては、 カーネルにサポートを残したままにしてください。 カーネルの構築 カーネル 構築 / インストール カーネルを構築するには、&os; のすべてのソースファイルが必要です。 cd を用いて /usr/src に移動してください。 &prompt.root; cd /usr/src カスタムコンフィグレーションファイルの名前を指定して新しいカーネルをコンパイルします。 &prompt.root; make buildkernel KERNCONF=MYKERNEL 新しいカーネルをインストールします。 &prompt.root; make installkernel KERNCONF=MYKERNEL デフォルトでは、カスタムカーネルを構築すると すべて のカーネルモジュールが再構築されます。 カーネルのアップデートをより早く行いたい、または、 カスタムモジュールのみを構築したいといった場合は、 カーネルの構築を開始する前に、以下のように /etc/make.conf を編集してください。 MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs この変数は、 すべてのモジュールを構築するというデフォルトの設定にかわり、 構築するモジュール一覧を指定します。 WITHOUT_MODULES = linux acpi sound ntfs この変数は、構築を行わないトップレベルのモジュールを指定します。 他の変数については、&man.make.conf.5; を参照してください。 /boot/kernel.old 新しいカーネルは /boot/kernel/boot/kernel/kernel という名前でコピーされ、 今までのカーネルは /boot/kernel.old/kernel という名前へ変更されます。 では、新しいカーネルを使うために、システムをシャットダウンして再起動してください。 うまく行かない場合は、 問題が起きた場合には や、新しいカーネルが 起動しない 場合のリカバリの方法を参照してください。 ブートローダ (&man.loader.8;) や設定などのブートプロセスに関係する他のファイルは、 /boot に置かれます。 サードパーティ製やカスタムモジュールを /boot/kernel に置くこともできますが、 コンパイルしたカーネルとモジュールを同期しておく必要があります。 コンパイルしたカーネルとモジュールが対応していないと、 システムが不安定になる可能性があります。 問題が起きた場合には カスタムカーネルを作る場合に起きるトラブルは、 次の 4 種類に分けられます。 config コマンドの失敗 &man.config.8; が失敗したのであれば、 おそらく単純なエラーです。 さいわい、&man.config.8; はトラブルの起きた行番号を出力します。 例えば、次のように出力された場合 config: line 17: syntax error 17 行目のキーワードが正しく入力されているかどうか、 GENERIC カーネルのファイルや、 他のリファレンスと比較して注意深く修正してください。 make コマンドの失敗 make が失敗した場合には、 カーネル設定で &man.config.8; がとらえられなかったような間違いをしていることが多いようです。 コンフィグレーションファイルを見直してください。 それでも問題を解決することができなければ、 &a.questions; へカーネルコンフィグレーションファイルをつけてメールしてください。 カーネルが起動しない 新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、&os; には利用できないカーネルから復帰する洗練されたメカニズムがあります。 &os; のブートローダで起動したいカーネルを選択してください。 システムの起動メニューが表示されている時に、 Escape to a loader prompt オプションを選択するとアクセスできます。 プロンプトで boot kernel.old か他の正常に起動するカーネルを入力してください。 カーネルの再設定をおこなう場合にはいつも、 確実に動くことが分かっているカーネルを用意しておくようにすると良いでしょう。 問題のないカーネルで起動した後、 コンフィグレー ションファイルを調べ、 再び構築を試みてください。 /var/log/messages にはすべての成功した起動時のカーネルメッセージの記録があり、 これは助けになる情報の一つでしょう。また、 &man.dmesg.8; は現在の起動時のカーネルメッセージを出力します。 カーネルの構築中にトラブルが起きた時に使うために、 GENERIC や他のカーネルを次回の構築で消されないよう別の名前で保存するようにしてください。kernel.old は新しいカーネルをインストールする時に、 その一つ前にインストールした、 うまく動かないかもしれないカーネルで上書きされてしまうので当てにできません。 できる限り早く動作しているカーネルを本来の /boot/kernel の位置に移動させてください。 そうしないと &man.ps.1; のようなコマンドが正しく動きません。これを行うには、 以下のように正しく起動するカーネルを含むディレクトリ名に変更するだけです。 &prompt.root; mv /boot/kernel /boot/kernel.bad &prompt.root; mv /boot/kernel.good /boot/kernel カーネルは動きますが &man.ps.1; は動きません! システムユーティリティの構築されたバージョンと異るバージョンのカーネルをインストールした場合、 例えば -CURRENT のカーネルを -RELEASE 上にインストールするような場合、 &man.ps.1; や &man.vmstat.8; のような多くのシステムステータスコマンドは動かなくなります。 修正するには、カーネルと同じバージョンのソースツリーで world を再構築し、インストール してください。 これは、カーネルとそれ以外で異なるバージョンを組み合わせてオペレーティングシステムを使用することが推奨されない理由の一つとなっています。