Handbook:Parts/Installation/Kernel/ja

ファームウェア
カーネルコンフィグの節へ進む前に知っておいたほうが良いこととして、一部のハードウェアデバイスは、それを適切に動作させるために追加の (時として FOSS ライセンスに準拠しない) ファームウェアをインストールする必要がある、ということがあります. これはデスクトップとラップトップの両方で広く見られる、無線ネットワークインターフェースで必要になることが多いです. AMD、Nvidia、Intel などのベンダによる最近のビデオチップも、完全に機能させるには外部のファームウェアが必要になることが多いです. 最近のハードウェアデバイスのためのファームウェアの多くは パッケージ内で見つかるかもしれません.

最初のシステムリブートの前に、もし必要だった場合にファームウェアを使えるようにしておくために、 パッケージをインストールしておくことが推奨されます:

モジュールとしてビルド (M) されたカーネルシンボルは、カーネルにロードされたときに、関連するファームウェアファイルをファイルシステムからロードすることに注意してください. モジュールとしてロードされるシンボルに関しては、デバイスのファームウェアファイルをカーネルのバイナリイメージに含める必要はありません.

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

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

カーネルのコンフィギュレーションとコンパイル
これで、カーネルソースを設定、コンパイルする準備が整いました. インストールの目的に応じてカーネルの管理のためのアプローチを 3 通り紹介しますが、インストール完了後はいつでも別のアプローチを採用し直すことができます.

簡単なものから込み入ったものへ、順に並べると:


 * 完全自動アプローチ: ディストリビューションカーネル: ディストリビューションカーネルは、Linux カーネル、関連するモジュール、および (必須ではありませんがデフォルトでは有効化されている) initramfs ファイルを、設定、自動でビルド、インストールするために利用されます. 将来のカーネル更新はパッケージマネージャを介して扱われるため、他のシステムパッケージとまったく同様に完全に自動で行われます. カスタマイズが必要な場合はカスタムのカーネルコンフィグファイルを提供することも可能です. これが最も簡単なプロセスで、すぐ動作するものが手に入りシステム管理者による関与を最小にできるため、新規の Gentoo ユーザには完璧です.
 * ハイブリッドアプローチ: Genkernel: 新しいカーネルのソースがシステムパッケージマネージャを通じてインストールされます. システム管理者は Linux カーネル、関連するモジュール、および (必須ではありませんがデフォルトでは有効化されていない) initramfs ファイルを、ジェネリックに設定、自動でビルド、インストールするために Gentoo の ツールを使用します. カスタマイズが必要な場合はカスタムのカーネルコンフィグファイルを提供することも可能です. 将来のカーネル設定、コンパイル、インストールには、アップデートのたびに 、、およびもし必要であれば他のコマンドを実行する形で、システム管理者による関与が必要です.
 * 完全手動アプローチ: 新しいカーネルのソースがシステムパッケージマネージャを通じてインストールされます. カーネルは と無数の  コマンドを利用して、手動で設定、ビルド、インストールされます. 将来のカーネル更新はカーネルファイルの設定、ビルド、インストールの手動プロセスを繰り返して行います. これが最も込み入ったプロセスですが、カーネル更新プロセスに関して最大限の制御を行えます.

すべてのディストリビューションが構築されるその中心にあるのが Linux カーネルです. カーネルレイヤーはユーザのプログラムとハードウェアの間に存在します. ハンドブックではカーネルソースについていくつかの可能な選択肢を提供しますが、より詳しい説明付きで、より完全なカーネルソースのリストは、カーネルの概要のページで見ることができます.

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

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

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

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

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

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

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

別の方法: Genkernel
すべてをマニュアルで設定することが困難だと思われる場合は、システム管理者はカーネル管理のためのハイブリッドアプローチとして、 を使うことを考えてみるべきです.

Genkernel はジェネリックカーネルコンフィギュレーションファイルを提供し、自動的にカーネル (kernel)、initramfs、および関連するモジュールを生成 (generate) し、生成されたバイナリを適切な場所にインストールします. これによりシステムの初回起動のための最小限かつジェネリックなハードウェアサポートが得られ、さらなる更新の制御と、将来のカーネル設定のカスタマイズが可能になります.

Be informed: while using to maintain the kernel provides system administrators with more update control over the system's kernel, initramfs, and other options, it will require a time and effort commitment to perform future kernel updates as new sources are released. Those looking for a hands-off approach to kernel maintenance should use a distribution kernel.

For additional clarity, it is a misconception to believe genkernel automatically generates a custom kernel configuration for the hardware on which it is run; it uses a per-determined kernel configuration that supports most generic hardware and automatically handles the commands necessary to assemble and install the kernel, the associate modules, and the initramfs file.

Binary redistributable software license group
If the linux-firmware package has been previously installed, then skip onward to the to the installation section.

As a prerequisite, due to the  USE flag being enabled by default for the  package, the package manager will also attempt to pull in the  package. The binary redistributable software licenses are required to be accepted before the linux-firmware will install.

This license group can be accepted system-wide for any package by adding the  as an ACCEPT_LICENSE value in the  file. It can be exclusively accepted for the linux-firmware package by adding a specific inclusion via a file.

If necessary, review the methods of accepting software licenses available in the Installing the base system chapter of the handbook, then make some changes for acceptable software licenses.

If in analysis paralysis, the following will do the trick:

インストール
説明や前提条件はさておき、 パッケージをインストールしてください:

生成
を実行してカーネルソースをコンパイルしましょう. ただ、 は多種多様に異なるコンピュータアーキテクチャのために、幅広いハードウェアをサポートするカーネルを生成するため、コンパイルが完了するまでにかなりの時間がかかることがあるということに注意しましょう.

genkernel が完了したら、カーネルと初期 RAM ファイルシステム (initramfs) が生成され、 ディレクトリにインストールされていることでしょう. 関連するモジュールは ディレクトリにインストールされるでしょう. initramfs は、(live ディスクイメージ環境でそうであるように) ハードウェアの自動検出を行うために、カーネルをロードした後すぐに開始されます.

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

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

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

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

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

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

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

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

典型的なシステムコンポーネントへのサポートを有効化する
システムのブートに必須となるドライバ (SATA コントローラ、NVMe ブロックデバイスサポート、ファイルシステムサポート等) は、モジュールではなく、カーネルの一部としてコンパイルしなければなりません. そうしないと、システムがまったくブートできない場合があります.

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

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

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

基本的な NVMe サポートが有効になっているか確認してください:

以下の追加の NVMe サポートを有効化しても害はありません:

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

もしインターネットに接続するために、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デバイスを使用する場合、以下を必ず有効にしてください:

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

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

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

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

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

利用可能なカーネルモジュールを一覧表示する
ファイルに、ブート時に毎回ロードしなければならないモジュールを、1 行ごとに 1 モジュールのフォーマットで追加することができます. モジュールに追加のオプションを与える必要があれば、ここではなく ファイルで設定すべきです.

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

特定のカーネルモジュールのロードを強制する
モジュール (これは特定の 3Com ネットワークカードファミリのためのドライバです) をロードするようにカーネルに強制するには、 内にモジュール名を記載してください.

モジュールの ファイル拡張子はロード機構にとって重要ではなく、設定ファイルから除かれるということに注意してください:

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