Kernel

From Gentoo Wiki
Jump to:navigation Jump to:search
This page contains changes which are not marked for translation.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

The kernel is the core of the operating system. Containing most of the device drives, the kernel offers interfaces for programs to access system hardware such as memory, graphic cards, and block devices.

This article refers exclusively to the Linux kernel and will focus on methods available to obtain, configure, and compile the Linux kernel on Gentoo systems.

Installation

Which kernel to install?

gentoo-sources

When manually compiling kernel sources or using genkernel to automate some of the process, Gentoo recommends the sys-kernel/gentoo-sources package for most users. Its stable versions follow the long term stable (LTS) kernels from upstream kernel.org.

gentoo-kernel

A newer method[1] of obtaining a kernel is the sys-kernel/gentoo-kernel package, which by default configures the kernel using a Gentoo provided kernel configuration file, then compiles the sys-kernel/gentoo-sources kernel sources through Portage. One advantage to this approach is that the kernel binaries will be updated to newer releases with @world updates. This can lessen administrative attention from system administrators.

For more information on gentoo-kernel see the Distribution kernel project.

Important
Since the gentoo-kernel package automates the configuration and compilation process, this article will continue presuming the gentoo-sources package was selected.

gentoo-kernel-bin

Thanks to the Distribution kernel project, another easy way to bootstrap a system is to use binary kernels via sys-kernel/gentoo-kernel-bin package. This package merely a precompiled version of the gentoo-kernel package mentioned the section prior.

USE flags

To obtain a kernel, it is necessary to install the kernel source code. The Gentoo recommended kernel sources for a desktop system are, of course, sys-kernel/gentoo-sources. These are maintained by the Gentoo developers, and patched when necessary to fix security vulnerabilities, functional problems, as well as to improve compatibility with rare system architectures.

USE flags for sys-kernel/gentoo-sources Full sources including the Gentoo patchset for the 5.14 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

Emerge

Now install sys-kernel/gentoo-sources:

root #emerge --ask sys-kernel/gentoo-sources

Alternative kernels

Although all stable kernel Gentoo provides is sys-kernel/gentoo-sources, there are many other kernel packages in the Portage tree. See the Kernel sources overview article, which gives details on most of them.

For which to pick, see also the blog article What Stable Kernel Should I Use? by Greg Kroah-Hartman, a major kernel developer.

Searching all kernel packages

A full list of kernel sources with short descriptions can be found by searching with emerge:

root #emerge --search "%@^sys-kernel/.*sources"

Available articles

Configuration

Automatic configuration
genkernel is a tool used to automate the build process of the kernel and initramfs. The goal of genkernel is to help users through the kernel building process.
Manual configuration
Manual configuration enables the user, with some effort, to create a custom-fit kernel configuration.
Gentoo kernel configuration guide
Gentoo's kernel configuration guide.
Kernel security
Instructions for hardening the kernel.
Kernel Seeds
Like the option above, Kernels Seeds help the user, with some effort, create a custom-fit kernel configuration using an existing .config as a base.

Upgrade

Upgrade
Steps to upgrade to a new kernel using an existing configuration.
2.4 to 2.6 Migration
Migration guide from Linux 2.4 to Linux 2.6. Since the Linux kernel codebase has significantly moved past 2.6, these migration steps are no longer relevant, but may be useful for helping administrators understand.

Removal

Removal
Steps to completely remove old kernels.

Troubleshooting

In-kernel configuration support

See the IKCONFIG support sub-article.

Kernel command-line parameters

When booting from a bootloader, the Linux kernel can accept command-line parameters to change its behavior. This can aid in troubleshooting the kernel at boot time, to blacklist a certain module that should not loading, etc.

Kernel.org has a nicely formatted list of available kernel command-line parameters to review.

Specifically, the following command-line parameters may be helpful when booting Gentoo:

  • earlyprintk=
  • module_blacklist=
  • nomodule
  • loglevel=
  • rootdelay=

See also

  • Project:Distribution Kernel — aims to maintain sys-kernel/*-kernel packages.
  • Linux firmware — is a package distributed alongside the Linux kernel that contains firmware binary blobs necessary for partial or full functionality of certain hardware devices.
  • LVFS — a daemon that provides a safe, reliable way of applying firmware updates on Linux.
  • Kernel/IKCONFIG support — Enabling In-kernel Config (IKCONFIG) support for the Linux kernel enables the inspection of kernel configuration for running kernels.
  • The kernel category - All the kernel related articles on the wiki.
  • The hardware category - Lists of hardware stacks with associated kernel configurations.

External resources

References