Handbook:Parts/Installation/Kernel/ja

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

注意: システム管理者はカーネルの保守のために を使うことで、システムのカーネル、initramfs、その他のオプションに関する更新をより制御できるようになります. その一方で、将来的に新しいソースがリリースされてカーネル更新を実施するときには、時間と労力をかけた献身が確実に必要となるでしょう. システム任せのカーネル保守アプローチを求めているのなら、べきです.

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 predetermined 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.

バイナリ再配布可能なソフトウェアのライセンスグループ
linux-firmware パッケージが以前にインストールされているなら、に進んでください.

前提条件として、 パッケージの  USE フラグがデフォルトで有効化されているため、パッケージマネージャは  パッケージを取り込もうとするでしょう. linux-firmware をインストールする前に、バイナリ再配布可能なソフトウェアライセンスを受諾する必要があります.

このライセンスグループは、 ファイル内で ACCEPT_LICENSE の値として  を追加することで、すべてのパッケージに対してシステム全体で受諾することができます. ファイルで個別の受諾を追加することで、linux-firmware パッケージのみに対して受諾することもできます.

必要であれば、ハンドブックのの章で利用可能な、を再確認して、受け入れられるソフトウェアライセンスのために変更を加えてください.

分析麻痺に陥ってきたなら、次のようにすればよいでしょう:

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

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

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

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

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

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

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

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

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

通常、最後の 2 行の選択は init システムの選択（ か か）に依存します. 両方の 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 ネットワークカードファミリのためのドライバです) をロードするようにカーネルに強制するには、 内にモジュール名を記載してください.

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

では、に進み、インストールを続けましょう.