Handbook:Parts/Installation/Kernel/ja

Firmware
カーネルコンフィグの節へ進む前に知っておいたほうが良いこととして、一部のデバイスは、それを適切に動作させるために追加のファームウェアのインストールする必要がある、ということがあります. これはネットワークインターフェース、特に、デスクトップとラップトップの両方で広く使用される、無線ネットワークインターフェースで必要になることが多いです. AMD、Nvidia、Intel などのベンダによる最近のビデオチップも、完全に機能させるには外部のファームウェアが必要になることが多いです. 最近のハードウェアのためのファームウェアの多くは パッケージ内で入手可能です. これらのベンダによるグラフィックカードを使用するシステムでは、グラフィックカードを使えるようにするために、カーネルを構成してインストールする前にこのファームウェアパッケージを emerge しておくのが賢明です.

It is recommended to have the package installed before the initial system reboot in order to have the firmware available in the event that it is necessary:

It is important to note that kernel symbols that are built as modules (M) will load their associated firmware files from the filesystem when they are loaded by the kernel. It is not necessary to include the device's firmware files into the kernel's binary image for symbols loaded as modules.

Microcode
個別のグラフィックスハードウェアやネットワークインターフェースに加えて、CPU もまたファームウェアアップデートを必要とすることがあります. こうしたファームウェアは典型的にはマイクロコードと呼ばれます. 新しいリビジョンのマイクロコードは、動作の不安定さ、セキュリティ上の懸念、その他の CPU ハードウェアのバグに対するパッチとして、必要になることがあります.

AMD CPU に対するマイクロコードアップデートは、典型的には先述の linux-firmware パッケージとともに配布されます. Intel CPU に対するマイクロコードは パッケージ内で見つかりますので、これを個別にインストールする必要があります. マイクロコードアップデートを適用する方法についてのさらなる情報は、マイクロコードの記事を確認してください.

カーネルのコンフィギュレーションとコンパイル
これで、カーネルソースを設定、コンパイルする準備が整いました. この設定およびコンパイルには 3 つのアプローチがあります.


 * 1) カーネルをマニュアルで設定およびビルドする.
 * 2) Linux カーネルを自動的にビルド・インストールする  を使用する.
 * 3) Linux カーネルを、他のパッケージと同様に自動的にビルド・インストールするディストリビューションカーネルを使用する.

環境を最適化するための最良の方法はマニュアル設定なので、デフォルトの選択肢としてマニュアル設定を説明します.

すべてのディストリビューションが構築されるその中心にあるのがLinuxカーネルです. カーネルレイヤーはユーザープログラムとハードウェアの間に存在します. Gentooではカーネルソースについて複数の選択肢があります. 説明付きのすべてのカーネルソースのリストは、Kernel overview pageで見ることができます.

カーネルソースのインストール
ベースのシステムにカーネルを手動でインストールしてコンパイルする場合には、Gentoo は パッケージを推奨しています.

適切なカーネルソースを選択して、でインストールします.

このコマンドはカーネルソースを の下に、カーネルバージョン毎のパスを分けてインストールします. 選択されたカーネルソースパッケージに対して  が有効化されていなければ、シンボリックリンクは自動で作成されません.

現在実行しているカーネルに対応するソースを指すように、 シンボリックリンクを維持することは慣例となっています. しかし、このシンボリックリンクはデフォルトでは作成されないでしょう. シンボリックリンクを作成する簡単な方法は、eselect の kernel モジュールを利用することです.

シンボリックリンクの目的と、それを管理する方法についてのさらなる情報は、Kernel/Upgrade を参照してください.

まず、インストールされているカーネルを一覧表示します:

シンボリックリンクを作成するには、次を使用してください:

はじめに
カーネルのマニュアル設定は、しばしばLinuxユーザーがしなければならない最も難しい手続きと考えられます. これは真実ではありません. カーネルを数回設定してみれば、それが難しいと言われていたことなど忘れてしまうでしょう！

しかし、一つだけ真実があります. カーネルをマニュアルで設定する時、ハードウェア情報を知ることはとても役に立ちます. ほとんどの情報は、コマンドを含むをインストールすることで得られます.

システム情報を得るための別の方法は、を使ってインストールCDが使っているカーネルモジュールを把握することです. その情報は何を有効にすべきかとてもよいヒントを与えてくれるでしょう.

では、カーネルソースがあるディレクトリに移動して、を実行しましょう. このコマンドはメニューベースの設定画面を起動します.

Linuxカーネルの設定はとても多くのセクションを持っています. まず最初にいくつかの必須オプションを述べましょう（そうでない場合、Gentooは動作しない、もしくは追加の処置なしには正しく動作しません）. Gentoo wikiのGentoo カーネルコンフィグレーションガイドには、さらに役立つ記述があるでしょう.

必須オプションを有効にする
もし を使用する場合は、Gentoo 固有のコンフィギュレーションオプションを有効化することを強く推奨します. これらは、正しく機能するために必要な最小限のカーネルの機能が有効化されることを確実にします:

通常、最後の 2 行の選択は init システムの選択（OpenRC か systemd か）に依存します. 両方の init システムへのサポートを有効化しても害はありません.

もし を使用する場合は、この init システムに関する追加の選択項目は利用できないでしょう. サポートを有効化することは可能ですが、このハンドブックの範囲からは外れることです.

システムのブートに必須となるドライバ（SCSIコントローラ等）は、モジュールではなく、カーネルの一部としてコンパイルしなければなりません. そうでないと、システムは全くブートできないでしょう.

次に正確なプロセッサタイプを選択します. このとき、もし使えるのであればMCE機能を有効にすることが推奨されます. これによりハードウェアの異常が通知されるようになるでしょう. いくつかのアーキテクチャ（x86_64）で、これらのエラーはでは確認できませんが、にログが残ります. この機能を有効にするためにパッケージが必要になります.

また、Maintain a devtmpfs file system to mount at /devを選択することで、必須となるデバイスファイルがブートプロセスの初期段階で使えるようになります ( CONFIG_DEVTMPFS と CONFIG_DEVTMPFS_MOUNT ):

SCSI ディスクサポートが有効になっているか確認してください( CONFIG_BLK_DEV_SD ):

次にFile Systemsで、システムが使用するファイルシステムに必要なサポートを選択しましょう. ルートファイルシステムに使われるファイルシステムをモジュールとしてコンパイルしてはいけません. モジュールにした場合、システムがパーティションをマウントできないおそれがあります. また、ここでVirtual memoryと/proc file systemも選択してください. システムの必要に応じて以下の選択肢から1個以上を選択してください ( CONFIG_EXT2_FS, CONFIG_EXT3_FS , CONFIG_EXT4_FS , CONFIG_MSDOS_FS , CONFIG_VFAT_FS , CONFIG_PROC_FS , and CONFIG_TMPFS ):

もしインターネットに接続するために、PPPoEもしくはダイヤルアップモデムを使う場合、次のオプションを有効にしてください ( CONFIG_PPP, CONFIG_PPP_ASYNC , and CONFIG_PPP_SYNC_TTY ):

2つの圧縮オプションは選択しても差し支えありませんが、必須というわけでもありません. PPP over Ethernetオプションも同様です. これはカーネルモードのPPPoEをするために設定された時だけにpppによって使用されるものです.

カーネルにネットワークカード（イーサネットもしくはワイヤレス）のサポートを組み込むことを忘れてはいけません.

多くのシステムではマルチコアを使用できます. Symmetric multi-processing supportを有効にすることは重要です ( CONFIG_SMP ):

USB接続の入力装置（キーボードやマウス）などのUSBデバイスを使用する場合、以下を必ず有効にしてください ( CONFIG_HID_GENERIC and CONFIG_USB_HID, CONFIG_USB_SUPPORT , CONFIG_USB_XHCI_HCD , CONFIG_USB_EHCI_HCD , CONFIG_USB_OHCI_HCD ):

任意自由選択: initramfsのビルド
いくつかの特別なケースで initramfs - initial ram-based file system (訳注: 起動時の RAM ベースのファイルシステム) のビルドが必要になります. 最もよくある理由は、重要なディレクトリ（、等）が別パーティションにある場合です. initramfsがあれば、initramfsの中にあるツールを使うことで、これらのパーティションをマウントすることができます.

initramfs が無いと、ファイルシステムをマウントするツールがまだマウントされていないファイルシステムの中にある情報を必要としている場合、システムが正しく起動できないリスクがあります. initramfs はカーネルブートの直後かつ制御が init ツールに移る前に必要なファイルをアーカイブに引き込みます. initramfs のスクリプトはシステムがブートを継続するために必要なパーティションを正しくマウントすることを保証します.

initramfsをインストールするために、最初にをインストールしましょう. そしてinitramfsを生成します.

initramfsはに保存されます. 生成されるファイルは単純にinitramfsで始まります.

次はカーネルモジュールです.

別の方法: genkernelを使用する
もしマニュアル設定に気後れしてしまった場合、 を使うことを考えてみてください. は自動的にカーネルを設定し、ビルドします.

はインストールCDのカーネルの設定とほぼ同じようにカーネルを設定します. これはカーネルのビルドにを使った場合、システムはインストールCDと同じように対応するハードウェアをブート時に検出することを意味します. は自身のカーネルをコンパイルすることを好まないユーザには有用なソリューションとなり得ます. genkernel は、それが実行されているハードウェア向けのカスタムカーネル設定を自動的に生成するものではないことに注意してください.

では、genkernelの使い方を見てみましょう. 最初にをemergeします.

次に、ファイルを編集します. 2番目のフィールドにを含む行は、その1番目のフィールドで正しいデバイス指定します. もしハンドブックのパーティショニング例の通りであれば、このデバイスはほぼ間違いなくext4ファイルシステムを持つでしょう. この場合、エントリは次のようになります.

を実行してカーネルソースをコンパイルしましょう. ただ、はほとんどすべてのハードウェアをサポートするカーネルを生成するため、コンパイルが完了するまでにかなりの時間が必要になることに注意しましょう.

genkernel完了後、カーネル、モジュール群、初期RAMディスク（initramfs）が生成されるでしょう. このドキュメントの後半でブートローダーを設定する際、このカーネルとinitrdを使うことになります. ブートローダーの設定に必要になるため、カーネルとinitrdの名前をメモしておきましょう. "真の"システムが起動する前に（インストールCDがするように）ハードウェアを自動的に検出しなければならないため、initrdはブート後すぐに起動します.

モジュールの設定
ファイルに、自動的にロードしなければならないモジュールを改行区切りで記載してください. モジュールに追加のオプションを与える必要があれば、ファイルで設定すべきです.

すべての利用可能なモジュールを把握するためには、次のコマンドを実行してください. " "をたった今コンパイルしたカーネルのバージョンで置き換えることを忘れないでください.

たとえば、モジュール（特定の3Comネットワークカード）を自動的にロードするためには、にモジュール名を記載してください. 実際のファイル名はローダにとって重要ではありません.

では、システムの設定に進み、インストールを続けましょう.