カーネル
Linux カーネルは、Gentoo オペレーティングシステム (OS) の中心部分です。デバイスドライバ、仮想コンソール、メモリ管理、タスクスケジューリング、プロセス間通信、仮想ファイルシステムなどの、OS の必要不可欠な機構を提供します。
Linux はモノリシックカーネルですが、モジュール式の設計にもなっており、これにより、必要なときに必要なコードのみがロードされます。このおかげで Linux カーネルは、パフォーマンスをほとんどまたはまったく犠牲にすることなく、多数のデバイスドライバやサービスを含めつつデプロイすることができます。不要なモジュールは単に無視されるからです。
カーネルは主に C で書かれていますが、例えばアセンブリや Rust のコードも使用しています。
カーネルのインストールとセットアップについては、ハンドブックも参照してください。
どのカーネルをインストールするか?
Gentoo はカーネルを機能させるために、多くのディストリビューションが提供するのと同じような標準的なバイナリカーネルから、カスタム設定してコンパイルされるカーネルまで、やり方の選択肢を提供しています。
最初は、gentoo-kernel-bin がカーネルを機能させるための手っ取り早く簡単な方法を提供しつつ、軽量で高パフォーマンスなカーネルも提供します (他の現代的なディストリビューションがそうであるように)。システムのインストールが完了して正しく機能していれば、必要に応じて他のカーネルを選択することもできます。カスタムカーネルをブートしていて問題が発生した場合のために、sys-kernel/gentoo-kernel-bin は取っておくことができます。
ディストリビューションカーネル
ディストリビューションカーネルプロジェクトは、Portage を通じてカーネルをインストールおよび管理するためのパッケージを提供しています。これらのカーネルは emerge コマンドによって、(必要であれば) コンパイルして、インストールされるため、管理作業の負担を軽減することができます。カーネル更新はシステムを更新 (emerge -avuDN @world) するときに実行されます。
これらのカーネルには、多くのシステムで「動作する」であろうデフォルト設定が付いています。自身のカーネルを最初から設定することに興味のないユーザは、これらのカーネルを使用することで、より手っ取り早く物事を始めることができます:
gentoo-kernel-bin
sys-kernel/gentoo-kernel-bin はコンパイル済みのカーネルを含むバイナリパッケージで、より早くインストールできます。このパッケージは、gentoo-kernel パッケージをデフォルト設定で事前にコンパイルしたバージョンです。
gentoo-kernel
sys-kernel/gentoo-kernel パッケージは、emerge されたときにコンパイルしてインストールされるカーネルを提供します。これには、多くのシステムですぐに動作するデフォルトの設定が付いていますが、望むのであればカスタマイズすることもできます。
gentoo-kernel* パッケージは、カーネルをコンパイルしてインストールする通常の手動での方法から独立して、設定とコンパイルのプロセスを自動化します。そのためこの記事の以降の部分では、sys-kernel/gentoo-sources パッケージを使用したインストールを扱います。ディストリビューションカーネルについてのさらなる情報に関しては、ディストリビューションカーネルプロジェクトを参照してください。
gentoo-sources
カーネルソースを手動でコンパイルする場合は、Gentoo はほとんどのユーザに対し sys-kernel/gentoo-sources パッケージを推奨します。このパッケージの安定版は kernel.org 上流の long term stable (LTS) カーネルに追従しています。
カーネルソースコードをインストールする
カーネルを得るには、まずはカーネルのソースコードをインストールする必要があります。デスクトップシステム向けでお奨めのカーネルソースは sys-kernel/gentoo-sources です。Gentoo 開発者たちが必要であればパッチを当てて維持しており、セキュリティや機能上の問題の修正を行うとともに、特殊なシステムアーキテクチャとの互換性が高められています。
USE フラグ
USE flags for sys-kernel/gentoo-sources Full sources including the Gentoo patchset for the 7.2 kernel tree
build
!!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used for creating build images and the first half of bootstrapping [make stage1]
experimental
Apply experimental patches; for more information, see "https://wiki.gentoo.org/wiki/Project:Kernel/Experimental".
symlink
Force kernel ebuilds to automatically update the /usr/src/linux symlink
vanilla
Do not add extra patches which change default behaviour; DO NOT USE THIS ON A GLOBAL SCALE as the severity of the meaning changes drastically
Emerge
sys-kernel/gentoo-sources をインストールするには:
root #emerge --ask sys-kernel/gentoo-sourcesその他のカーネル
Portage ツリーには他にも多くのカーネルパッケージが存在しています。これらの多くの詳細については、カーネルパッケージの記事を確認してください。開発者 Greg Kroah-Hartman の記事 What Stable Kernel Should I Use? には、カーネルの選択に関するさらなる有用な情報があります。
すべてのカーネルパッケージを検索する
すべてのカーネルソースとその簡単な説明を一覧するには emerge を実行してください:
root #emerge --search sourcesカーネルを管理する
設定
- 手動設定を理解する
- 手動設定の概念をより幅広く理解できるようになるガイドです。
- 手動設定を適用する
- 作業を行うために必要なツールと手順を解説するガイド。
- 非ブロブ化
- カーネルを非ブロブ化するためのガイド
- Security
- カーネルをハードニングするための手順。
- モジュール
- モジュールは、カーネルを拡張するためのコードを含むオブジェクトファイルです。
- 最適化
- スピードやハードニングを含む、カーネルのためのさまざまな最適化についての記載。
- コマンドライン引数
- トラブルシューティングのためにカーネルに対してブート時に渡すことができる、よく使われる一部のコマンドライン引数の説明。
アップグレード
- カーネルアップグレード
- 既存のコンフィギュレーションを流用してカーネルを更新する手順。
削除
- カーネル削除
- 古いカーネルを完全に削除するための手順。
トラブルシューティング
カーネル設定サポート
IKCONFIG サポートのサブ記事を参照してください。
カーネルコマンドラインパラメータ
ブートローダから起動する際、Linux カーネルは振る舞いを変更するためにコマンドラインパラメータを受け取ることができます。これによって例えば、ロードされるべきでない特定のモジュールをブラックリストに登録することで、カーネル起動時のトラブルシューティングを行いやすくすることができます。さらなる詳細については Gentoo の Kernel/Command-line parameters の記事を参照してください。
Kernel.org の admin guide には、きちんと整形された利用可能なカーネルのコマンドラインパラメータの一覧があります。
関連項目
- fwupd — a daemon that provides a safe, reliable way of applying firmware updates on Linux.
- Linux firmware — 特定のハードウェアデバイスの一部または全体を機能させるために必要なファームウェアバイナリブロブを含み、Linux カーネルとまとめて頒布されているパッケージです。
- Project:Distribution Kernel — maintains sys-kernel/*-kernel packages.
- The kernel category - カーネルに関する記事のすべて。
- The hardware category - カーネル設定に関連するハードウェアスタックの一覧。
外部資料
- planet.kernel.org/ - Linux カーネル関連のブログ集。
- kernelnewbies.org/ - 「研鑽を続ける新米カーネル開発者と、知識の共有を惜しまないベテラン開発者のためのコミュニティ」
- kernel.org/doc/ - Linux カーネルのための公式の包括的なドキュメンテーション。
- What Stable Kernel Should I Use? - カーネル開発者 Greg Kroah-Hartman による記事。
- Building the kernel as root can be harmful
- The Linux Kernel Module Programming Guide