ファームウェアのインストールカーネルソースのインストールすべてのディストリビューションが構築されるその中心にあるのがLinuxカーネルです。カーネルレイヤーはユーザープログラムとハードウェアの間に存在します。Gentooではカーネルソースについて複数の選択肢があります。pageで見ることができます。sys-kernel/gentoo-sourcesパッケージを推奨しています。適切なカーネルソースを選択して、emergeでインストールします。sys-kernel/gentoo-sourcesこのコマンドはカーネルソースを/usr/src/にインストールします。このディレクトリにあるlinuxがインストールされたカーネルソースへのシンボリックリンクとなります。linux-3.16.5-gentooこれで、カーネルソースを設定、コンパイルする準備が整いました。この設定およびコンパイルには二つのアプローチがあります。カーネルをマニュアルで設定およびビルドする。Linuxカーネルを自動的にビルド・インストールするgenkernelを使用する。ここでは、環境を最適化するのに最も適した"マニュアル設定"をデフォルトとして説明します。マニュアル設定はじめにカーネルのマニュアル設定は、しばしばLinuxユーザーがしなければならない最も難しい手続きと考えられます。これは真実ではありません。カーネルを数回設定してみれば、それが難しいと言われていたことなど忘れてしまうでしょう。一つだけ真実があります。カーネルをマニュアルで設定する時、ハードウェア情報を知ることはとても役に立ちます。ほとんどの情報は、lspciコマンドを含むsys-apps/pciutilsをインストールすることで得られます。/sys/bus/pci/devicesのような)pcilibの警告は、無視しても構いません。システム情報を得るための別の方法は、lsmodを使ってインストールCDが使っているカーネルモジュールを把握することです。その情報は何を有効にすべきかとてもよいヒントを与えてくれるでしょう。menuconfigを実行しましょう。このコマンドはメニューベースの設定画面を起動します。menuconfigLinuxカーネルの設定はとても多くのセクションを持っています。最初にいくつかの必須オプションを述べましょう(そうでない場合、Gentooは動作しない、もしくは追加の処置なしには正しく動作しません)。カーネルコンフィグレーションガイドには、さらに役立つ記述があるでしょう。必須オプションを有効にするシステムのブートに必須となるドライバ(SCSIコントローラ等)は、モジュールではなく、カーネルの一部としてコンパイルしなければなりません。ないと、システムは全くブートできないでしょう。次に正確なプロセッサタイプを選択します。このとき、もし使えるのであればMCE機能を有効にすることが推奨されます。これによりハードウェアの異常が通知されるようになるでしょう。いくつかのアーキテクチャ(x86_64)で、これらのエラーはdmesgでは確認できませんが、/dev/mcelogにログが残ります。この機能を有効にするためにapp-admin/mcelogパッケージが必要になります。Systemsで、使用するファイルシステムに必要なサポートを選択しましょう。ルートファイルシステムに使われるファイルシステムをモジュールとしてコンパイルしてはいけません。モジュールにした場合、Gentooシステムはパーティションをマウントできないでしょう。systemも選択してください。ports2つの圧縮オプションは選択しても差し支えありませんが、必須というわけでもありません。Ethernetオプションも同様です。これはカーネルモードのPPPoEをするために設定された時だけにpppによって使用されるものです。カーネルにネットワークカード(イーサネットもしくはワイヤレス)のサポートを組み込むことを忘れてはいけません。多くのシステムではマルチコアを使用できます。support注意マルチコアシステムでは、それぞれのコアが1プロセッサとカウントされます。/lib/firmware/.コンパイルおよびインストールカーネルのコンフィグレーションが完了し、コンパイルとインストールをする時がきました。initramfsのビルドいくつかの特別なケースでinitramfs(起動時のRAMベースのファイルシステム)のビルドが必要になります。ある理由は、重要なディレクトリ(/usr/、/var/等)が別パーティションにある場合です。initramfsがあれば、initramfsの中にあるツールを使うことで、これらのパーティションをマウントすることができます。initramfsがないケースで、ファイルシステムをマウントするツールがそのファイルシステムの中にある情報を必要としている場合、大きなリスクを負うことになります。initramfsはカーネルブートの直後かつ制御がinitツールに移る前に必要なファイルをアーカイブに引き込みます。initramfsのスクリプトはシステムがブートを継続するために必要なパーティションを正しくマウントすることを保証します。initramfsをインストールするために、最初にsys-kernel/genkernelをインストールしましょう。initramfsを生成します。initramfsLVMやRAID等の特別なサポートをinitramfsで有効にするために、genkernelに適切なオプションを与えてください。--helpを参照してください。(mdadm)を有効にしています。initramfsinitramfsは/boot/に保存されます。生成されるファイルは単純にinitramfsで始まります。/boot/initramfs*次はカーネルモジュールです。genkernelを使用するもしマニュアル設定に気後れしてしまった場合、genkernelがお薦めです。genkernelは自動的にカーネルを設定、ビルドします。genkernelはインストールCDのカーネルが自動的に設定されるのとほぼ同じ方法でカーネルを設定します。これはカーネルのビルドにgenkernelを使った場合、インストールCDと同じようにブート時にすべてのハードウェアを検出することを意味します。genkernelはいかなるカーネルのマニュアル設定も要求しないため、ユーザー自身のカーネルをコンパイルすることを好まないユーザには理想的なソリューションです。genkernelの使い方を見てみましょう。最初にsys-kernel/genkernelをemergeします。sys-kernel/genkernel次に、/etc/fstabファイルを編集します。2番目のフィールドに/boot/を含む行は、その1番目のフィールドで正しいデバイス指定します。ハンドブックのパーティショニング例の通りであれば、このデバイスはほぼ間違いなくext2ファイルシステムを持つでしょう。この場合、エントリは次のようになります。allを実行してカーネルソースをコンパイルしましょう。genkernelはほとんどすべてのハードウェアをサポートするカーネルを生成するため、コンパイルが完了するまでにかなりの時間が必要になることに注意しましょう。allを使ってマニュアルでカーネルを設定し、カーネルにこの特別なファイルシステムを(モジュールではなく)組み込む必要があるでしょう。LVM2のユーザーはおそらく引数に--lvmを加えることになるでしょう。allgenkernel完了後、カーネル、モジュール群、初期RAMディスク(initramfs)が生成されるでしょう。このドキュメントの後半でブートローダーを設定する際、このカーネルとinitrdを使うことになります。ブートローダーの設定に必要になるため、カーネルとinitrdの名前をメモしておきましょう。"真の"システムが起動する前に(インストールCDがするように)ハードウェアを自動的に検出しなければならないため、initrdはブート後すぐに起動します。/boot/initramfs*カーネルモジュールモジュールの設定Noteハードウェアモジュールを手作業で列挙する必要はありません。接続を検出したハードウェアのモジュールを自動でロードします。自動で検出されるモジュールを列挙することは特に有害ではありません。時として変なハードウェアは、ドライバをロードするのにこうした手助けが必要になることがあります。/etc/modules-load.d/*.confファイルに、自動的にロードしなければならないモジュールを改行区切りで記載してください。モジュールに追加のオプションを与える必要があれば、/etc/modprobe.d/*.confファイルで設定すべきです。すべての利用可能なモジュールを把握するためには、次のfindコマンドを実行してください。version>"をたった今コンパイルしたカーネルのバージョンで置き換えることを忘れないでください。lessたとえば、3c59x.koモジュール(特定の3Comネットワークカード)を自動的にロードするためには、/etc/modules-load.d/network.confにモジュール名を記載してください。実際のファイル名はローダにとって重要ではありません。モジュールをロードする3c59xでは、システムの設定に進み、インストールを続けましょう。ファームウェアのインストールいくつかのドライバは、動作可能にするために追加のファームウェアのインストールを必要とします。これはしばしばネットワークインターフェース、特に無線ネットワークで必要になります。AMD、NVidia、Intelなどのベンダによる最近のビデオチップをオープンソースドライバで利用する場合にも、よく外部のファームウェアが必要になります。ファームウェアの多くはsys-kernel/linux-firmwareにパッケージされています。