- Kernel
- Contents
- Installation
- Which kernel to install?
- gentoo-sources
- gentoo-kernel
- gentoo-kernel-bin
- USE flags
- Kernel/Overview
- Contents
- Introduction
- Supported kernel packages
- Genkernel
- gentoo-sources
- gentoo-kernel
- git-sources
- Architecture dependent kernels
- Unsupported kernel packages
- pf-sources
- rt-sources
- usermode-sources
- vanilla-sources
- vanilla-kernel
- zen-sources
- Previously provided kernel packages
- aa-sources
- alpha-sources
- Architecture dependent kernels
- aufs-sources
- ck-sources
- development-sources
- gentoo-dev-sources
- grsec-sources
- hardened-sources
- hardened-dev-sources
- hppa-sources
- mm-sources
- openvz-sources
- rsbac-dev-sources
- rsbac-sources
- selinux-sources
- sh-sources
- sparc-sources
- tuxonice-sources
- uclinux-sources
- win4lin-sources
- xen-sources
- Project:Kernel/Gentoo-sources
- Commit the Gentoo-sources file.
- Acknowledgements
Kernel
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.
Contents
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.
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.
Источник
Kernel/Overview
This document provides an overview on all kernel sources that Gentoo provides through the main ebuild repository.
Contents
Introduction
As with everything else in Gentoo Linux, the philosophy of the Gentoo Kernel team is to give the user as much freedom of choice as possible. When looking at the output of emerge -s «%@^sys-kernel/.*-sources» it is easy to see a large variety of kernels to choose from. This document will attempt to give a brief rundown of the goals of each of the patch sets that Gentoo provides and also explain other kernel sources that are available.
Supported kernel packages
Genkernel
genkernel is a kernel and initramfs build utility that has a default kernel configuration to enable common options and drivers in the kernel automatically. This is usually recommended for users who do not feel comfortable about compiling a kernel manually.
For more information, please read the Genkernel article.
gentoo-sources
For most users, the sys-kernel/gentoo-sources kernel is recommended. gentoo-sources is a kernel based on Linux 4.x and 5.x, lightly patched to fix security problems, kernel bugs, and to increase compatibility with the more uncommon system architectures.
The sys-kernel/gentoo-sources package absorbs most of the resources of the Gentoo kernel team. They are brought to the user by a group of talented developers, which can count on the expertise of popular kernel hacker Greg Kroah-Hartman, maintainer of udev and responsible for the USB and PCI subsystems of the official Linux kernel.
gentoo-kernel
The sys-kernel/gentoo-kernel package maintained by the Distribution Kernel project provides a default configuration that works for most of diverse systems, for users who are not interested in configuring their own kernel from scratch.
git-sources
The sys-kernel/git-sources package tracks daily snapshots of the upstream development kernel tree. These kernels are good for users interested in kernel development or testing. Bug reports should go to the Linux Kernel Bug Tracker or LKML (Linux Kernel Mailing List).
Architecture dependent kernels
sys-kernel/mips-sources is patched to run best on specific architectures. It also contains some of the patches for hardware and features support from the other patch sets mentioned above and below.
Unsupported kernel packages
Now to briefly describe some of the other sys-kernel/*-sources which scrolled by when the emerge -s «%@^sys-kernel/.*-sources» command was run. Below we discuss each one of them individually. These kernels are provided as a courtesy only — the various patch sets are not supported by the Gentoo kernel team. There is no specific preference to one source or another, so we review the kernel sources in alphabetical order.
pf-sources
The sys-kernel/pf-sources kernel brings together parts of several different kernel patches. It includes the BFS patchset from sys-kernel/ck-sources, the sys-kernel/tuxonice-sources patches, LinuxIMQ, and the BFQ I/O scheduler.
rt-sources
The sys-kernel/rt-sources kernel is based on sys-kernel/vanilla-sources and includes the PREEMPT_RT patch. That patch turns the Linux kernel into a real-time operating system (RTOS). Use this if your system requires real-time guarantees. For more information, see https://wiki.linuxfoundation.org/realtime/start.
usermode-sources
usermode-sources are the User Mode Linux kernel patches and can be found in the sys-apps/usermode-utilities package. These kernel patches are designed to allow Linux to recursively run within Linux. User Mode Linux is intended for testing and virtual server support. For more information about this amazing tribute to the stability and scalability of Linux, see http://user-mode-linux.sourceforge.net.
For more information on UML and Gentoo, read the Gentoo User-mode Linux Guide
vanilla-sources
Many Linux users will probably be familiar with the sys-kernel/vanilla-sources package. These kernels are copies of the official kernel sources released on https://www.kernel.org/. Please note that the Gentoo kernel team does not patch vanilla-sources at all; they are for people who wish to run a completely unmodified Linux kernel. The Gentoo kernel team recommends sys-kernel/gentoo-sources instead.
Versions of the kernel can be found under this package: 3.x, 4.x.
vanilla-kernel
New sys-kernel/vanilla-kernel package whose primary purpose is to provide a zero-effort way of ensuring that your system is running a working distribution kernel that gets cleanly upgraded as part of @world upgrades. The secondary goal is to make it possible to build universal binary packages that can be afterwards installed on variety of systems with different hardware, /boot layouts and bootloaders. For details see Michał Górny — A distribution kernel for Gentoo
zen-sources
The sys-kernel/zen-sources package is designed for desktop systems. It includes code not found in the mainline kernel. The Zen kernel has patches that add new features, support additional hardware, and contains various tweaks for desktops. The Zen 3.8 kernel series is currently masked in the Portage tree. For more information on the Zen kernel please visit Zen Kernel GitHub repository.
Previously provided kernel packages
aa-sources
aa-sources was a heavily modified kernel with all kinds of patches. The upstream maintainer stopped releasing kernel patchsets and subsequently this package has been removed.
alpha-sources
alpha-sources was a 2.4 kernel with patches applied to improve hardware compatibility for the Alpha architecture. These patches have been developed and are now included in the mainline kernel. Alpha users can run any recent kernel with no need for extra patches.
Architecture dependent kernels
cell-sources was a 2.6 kernel designed to run on the Sony PlayStation 3 game console.
aufs-sources
The aufs-sources package contains full kernel sources including the official genpatchset (found in gentoo-sources) for the 4.14/4.19 kernel tree and aufs4 support. This kernel is useful when attempting to utilize the aufs4 filesystem. For more information see the aufs page on Sourceforge or the genpatches homepage.
ck-sources
ck-sources is Con Kolivas’s kernel patch set. This patchset is primarily designed to improve system responsiveness and interactivity and is configurable for varying workloads (from servers to desktops). The patchset includes a different scheduler, MuQSS, designed to keep systems responsive and smooth even when under heavy load. Support and information is available here and in the #ck channel on irc.oftc.net.
development-sources
development-sources , the official 2.6 kernel from kernel.org, can now be found under the vanilla-sources package.
gentoo-dev-sources
gentoo-dev-sources , a 2.6 kernel patched with bug, security, and stability fixes, can now be found under the gentoo-sources package.
grsec-sources
The grsec-sources kernel source used to be patched with the latest grsecurity updates (grsecurity version 2.0 and up) which included, amongst other security-related patches, support for PaX. Grsecurity patches are included in the hardened-sources kernel, so this package is no longer available in Portage.
hardened-sources
The sys-kernel/hardened-sources kernel was based on the official Linux kernel and was targeted at users running Gentoo on server systems. It once provided patches for the various sub-projects of Gentoo Hardened (such as support for SELinux and grsecurity), together with stability and security-enhancements. Check out the Hardened project here on the wiki for more information.
hardened-dev-sources
hardened-dev-sources can now be found under the hardened-sources package.
hppa-sources
hppa-sources was a 2.6 kernel with patches applied to improve hardware compatibility for the HPPA architecture. These patches have been developed and included in the mainline kernel. HPPA users can now run any recent kernel with no need for extra patches.
mm-sources
The mm-sources were based on vanilla-sources and contained Andrew Morton’s patch set. They included the experimental and bleeding-edge features that were going to be included in the official kernel (or were going to be rejected because they set systems on fire!). They were known to be always moving at a fast pace and could change radically from one week to the other; kernel hackers often used mm-sources as a testing ground for highly experimental stuff. They have since been removed from the Portage tree.
openvz-sources
OpenVZ is a server virtualization solution built on Linux. OpenVZ creates isolated, secure virtual private servers (VPSs) or virtual environments on a single physical server enabling better server utilization and ensuring that applications do not conflict. For more information, see https://openvz.org/.
rsbac-dev-sources
The rsbac-dev-sources kernels could be found under the sys-kernel/rsbac-sources package.
rsbac-sources
Back in the days of 2.6-based kernels sys-kernel/rsbac-sources contained patches to use Rule Set Based Access Controls (RSBAC). It was removed due to lack of maintainers, but has has magically reappeared with the 3.10 kernel series. Use hardened-sources if additional security features are needed.
selinux-sources
selinux-sources , a 2.4 kernel including lots of security enhancements, has been obsoleted by security development in the 2.6 kernel tree. SELinux functionality can be found in the hardened-sources package.
sh-sources
sh-sources was a 2.6 kernel with patches applied to improve hardware compatibility for the SuperH architecture. These patches have been developed and included in the mainline kernel. SuperH users can now run any recent kernel with no need for extra patches.
sparc-sources
sparc-sources was a 2.4 kernel with patches applied to improve hardware compatibility for the SPARC architecture. These patches have been developed and included in the mainline kernel. SPARC users can now run any recent kernel with no need for extra patches.
tuxonice-sources
tuxonice-sources has been last-rited, see bug #627924.
The sys-kernel/tuxonice-sources (formerly sys-kernel/suspend2-sources ) are patched with both genpatches which includes the patches found in gentoo-sources, and the patches found in TuxOnIce which are an improved implementation of suspend-to-disk for the Linux kernel, formerly known as suspend2.
uclinux-sources
The uclinux-sources are meant for CPUs without MMUs as well as embedded devices. For more information, see http://www.uclinux.org. Lack of security patches as well as hardware to test on were the reasons this package is no longer found in the Portage tree.
win4lin-sources
win4lin-sources were patched to support the userland win4lin tools that allowed Linux users to run many Microsoft Windows (TM) applications at almost native speeds. These kernel sources were removed due to security issues.
xbox-sources sources for the Xbox Linux kernel
xen-sources
xen-sources was a 2.6-based kernel that allowed running multiple operating systems on a single physical system. A user could create virtual environments in which one or more guest operating systems could run on a Xen-powered host operating system.
The xen-sources patches were incorporated into the mainline Linux kernel as of version 3.0.
For more information on working with Xen and Gentoo, read the Xen article here on the wiki.
Источник
Project:Kernel/Gentoo-sources
Get the linux-patches repository, it contains the previous incremental kernel patches and the Gentoo related kernel patches.
Get the genpatches-misc repository, it contains the scripts that will help during the kernel release:
Now we need the incremental patch for the kernel we want to patch. In the linux-patches folder there are already the incremental patches until kernel-4.7.9, so we need the incremental patches from 4.7.9 to 4.7.10 https://cdn.kernel.org/pub/linux/kernel/v4.x/incr/patch-4.7.9-10.xz
You can get the link from kernel.org.
Now that we have the incremental patch link we download it and verify the gpg key:
The output will look something like this:
After check the patch signature we can move it to the linux-patches folder.
We need to update the 0000_README file and add the patch added in the branch.
/linux-patches/0000_README linux-patches readme file
Commit the change:
Get the Kernel vanilla source for 4.7.0:
Check the patch can be applied:
Check the kernel can be compiled:
If there is no problem about the previous warning, we can start releasing the kernel.
Let’s configure gpdorelease.
/.genpatchesrc gpdorelease config file
Let’s release the kernel.
- Tag the 4.7 branch as 4.7-11 (immediate commit)
- Produce genpatches-4.7-11 tarballs
- Upload tarballs to distfiles-local
- (Optionally) create and upload website
- (Optionally) send a release announcement to gentoo-kernel
Let’s make gentoo-sources-4.7.10:
We need to increment the K_GENPATCHES_VER= number:
Select the new kernel:
Build the new kernel:
Install the new kernel:
Commit the Gentoo-sources file.
Gentoo-sources previously made (example):
How to commit to gentoo git repository:
Acknowledgements
Mike Pagano (mpagano) for writing the first draft of this guide.
Источник