<?xml version="1.0" encoding="UTF-8"?>
<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/gentoo-kernel.xml,v 1.20 2004/11/14 10:17:52 swift Exp $ -->

<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/en/gentoo-kernel.xml">
<title>Gentoo Linux Kernel Guide</title>
<author title="Author">
  <mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Contributor">
  <mail link="lostlogic@gentoo.org">Brandon Low</mail>
</author>
<author title="Editor">
  <mail link="dsd@gentoo.org">Daniel Drake</mail>
</author>
<author title="Editor">
  <mail link="carl@gentoo.org">Carl Anderson</mail>
</author>
<author title="Editor">
  <mail link="peesh@gentoo.org">Jorge Paulo</mail>
</author>
<author title="Editor">
  <mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Editor">
  <mail link="g.guidi@sns.it">Gregorio Guidi</mail>
</author>

<abstract>
This document gives you an overview on all kernel sources that Gentoo
provides through Portage.
</abstract>

<license/>

<version>0.7.6</version>
<date>November 14, 2004</date>

<chapter>
<title>Introduction</title>
<section>
<body>

<p>
As with everything else in Gentoo Linux, the philosophy of the Gentoo 
Kernel team is to give you, the user, as much freedom of choice as 
possible.  If you take a look at the output of <c>emerge -s sources</c> 
you see a large variety of kernels to choose from.  In this document, 
I will attempt to give you a brief rundown of the goals of each of the 
patch sets, which we at Gentoo design, and also explain the other kernel
sources we make available to you.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Supported kernel packages</title>
<section>
<title>genkernel</title>
<body>

<p>
<c>Genkernel</c> is a kernel toolset that can be used to autodetect your
hardware and configure your kernel automatically. This is usually recommended
for users who do not feel comfortable about compiling a kernel manually.
</p>

<p>
For more information, please read the <uri link="/doc/en/genkernel.xml">Gentoo
Linux Genkernel Guide</uri>.
</p>

</body>
</section>
<section>
<title>General purpose: gentoo-sources and gentoo-dev-sources</title>
<body>

<p>
For most users, the recommended kernel sources are the 
<c>gentoo-sources</c>. The <c>gentoo-sources</c> package contains various
kernel patches, designed to improve user experience with respect to different
areas. Speaking of <e>security</e>: you can find support for
<uri link="http://www.grsecurity.net">grsecurity</uri>, together with other
security enhancements and, naturally, all the recent fixes for known
vulnerabilities. The included patches deal also with <e>performance</e>
(including tweaks for desktop usage and support for recent hardware) and
<e>features</e> (supermount, bootsplash, the latest NTFS drivers, and more).
</p>

<p>
For users looking to take advantage of the new features, stability, and
performance of Linux 2.6, we provide <c>gentoo-dev-sources</c>. This package
consists of a minimal patchset providing fixes and enhancement for stability
and security. This kernel will become our recommended default at some point
in the near future.
</p>

<p>
The <c>gentoo-sources</c> (together with <c>gentoo-dev-sources</c>) absorb
most of the resources of the Gentoo kernel team. They are brought to you 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.
</p>

</body>
</section>
<section>
<title>Plain kernels: vanilla-sources and development-sources</title>
<body>

<p>
The next kernel sources that many of you will probably be familiar with 
as Linux users are the <c>vanilla-sources</c>. These are the official 2.4
kernel sources released on <uri>http://www.kernel.org/</uri>, maintained
(contrary to popular belief) not by Linus Torvalds himself, but by Marcelo
Tosatti. Linus is the leader of active kernel development, but as he is
only one man, he passes off the maintenance of the stable kernel branch
to someone he can trust to handle it once it has stabilized.  Thus, Alan
Cox became the maintainer of the Linux-2.2 kernel series and Marcelo 
Tosatti became the maintainer of the Linux-2.4 kernel series. This last kernel
is what all the patch sets in the 2.4 series are based on. Marcelo has
been doing an outstanding job with its maintenance and it can be 
counted on for stability and up-to-date (if not bleeding edge) hardware
support.
</p>

<p>
The <c>development-sources</c> ebuild provides the stable 2.6 Linux kernel.  As
opposed to what the name might suggest, this kernel source is completely stable
and production-ready. This is the official 2.6 kernel released on
<uri>http://www.kernel.org/</uri>.
</p>

</body>
</section>

<section>
<title>For servers: hardened-sources and hardened-dev-sources</title>
<body>

<p>
<c>hardened-sources</c> is based on Linux 2.4 and is targetted at our users
running Gentoo on server systems. It provides patches for the various
subprojects of Gentoo Hardened (such as support for LSM/SELinux and
GRSecurity), together with stability/security-enhancements. Check
<uri>http://www.gentoo.org/proj/en/hardened/</uri> for more information.
</p>

<p>
<c>hardened-dev-sources</c> serves the same purpose as <c>hardened-sources</c>
but is based on the newer Linux 2.6 kernel base.
</p>

<p>
The following USE-flags can be set to select optional patches:
</p>

<table>
<tr><th>Flags</th><th>Description</th></tr>
<tr><ti>selinux</ti><ti>Substitute grSecurity with SELinux support</ti></tr>
</table>

</body>
</section>
<section>
<title>Architecture dependent kernels</title>
<body>

<p>
<c>alpha-sources</c>, <c>hppa-sources</c>, <c>hppa-dev-sources</c>,
<c>mips-sources</c>, <c>pegasos-dev-sources</c>, <c>sparc-sources</c> 
and <c>xbox-sources</c> are, as their names suggest,
patched to run best on specific architectures.  They also contain some of
the patches for hardware and features support from the other patch sets
mentioned above and below. A "-dev-" in the name of a kernel package means that
the sources use the 2.6 kernel instead of the 2.4 kernel.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Unsupported kernel packages</title>
<section>
<body>

<p>
Now I'm going to try to briefly describe some of the other 
<path>sys-kernel/*-sources</path> which you saw scroll by when you ran 
<c>emerge -s sources</c>. Lets take them in alphabetical order. These
kernels are provided as a courtesy only and the various patch sets are not
supported by the Gentoo team.
</p>

</body>
</section>
<section>
<title>aa-sources</title>
<body>

<p>
First we have <c>aa-sources</c>. This is Andrea Arcangeli's patch set.  
Andrea is known as an amazing coder by many other kernel hackers.  His 
kernel patch set has some of the most aggressively tuned VM (Virtual 
Memory) patches known to mankind.
</p>

<p>
It also provides User Mode Linux support (check out our 
<uri link="/doc/en/uml.xml">UML Guide</uri> for more information) and 
the latest TUX Webserver (an in-kernel webserver).
</p>

<p>
If you have Memory Management troubles with other kernels, 
<c>aa-sources</c> can be your solution. If you want to optimize Linux's
Memory Management for your system, <c>aa-sources</c> is <e>definitely</e>
what you need.
</p>

<p>
Visit 
<uri>http://www.kernel.org/pub/linux/kernel/people/andrea/kernels/v2.6</uri>
for more information about all the patches in these kernel sources.
</p>

<p>
Andrea has not been maintaining his patchsets recently, and as a result of
this, this kernel is a bit out of date and may be removed from Portage soon.
</p>

</body>
</section>
<section>
<title>ck-sources</title>
<body>

<p>
<c>ck-sources</c> is Con Kolivas's kernel patch set.  This kernel is 
<e>HIGHLY</e> tuned for desktop performance at the expense of 
throughput and some of the scheduler's ability to prioritize 
applications.  Con Kolivas benchmarks kernels to find the best 
combination of features for desktop use.  See 
<uri>http://kernel.kolivas.org</uri> for more information on Con and his
patches.
</p>

</body>
</section>
<section>
<title>grsec-sources</title>
<body>

<p>
The <c>grsec-sources</c> kernel source is patched with the latest GRSecurity
updates (GRSecurity version 2.0 and up) which includes, amongst other
security-related patches, support for PaX.
</p>

</body>
</section>
<section>
<title>mm-sources</title>
<body>

<p>
The <c>mm-sources</c> are based on the <c>development-sources</c> and contain
Andrew Morton's patch set. They include the experimental and bleeding-edge
features that are going to be included in the official kernel (or that are
going to be rejected because they set your box on fire). They are known to be
always moving at a fast pace and can change radically from one week to the
other; kernel hackers use them as a testing ground for new stuff.
</p>

<p>
If you really want to live on the edge and you think
<c>development-sources</c> are for wussies, then try out
<c>mm-sources</c>. Be warned that this kernel is highly experimental and
doesn't always work as expected.
</p>

</body>
</section>
<section>
<title>openmosix-sources</title>
<body>

<p>
The <c>openmosix-sources</c> are patched to support the openMosix system 
(like MOSIX but Open Source).  For more information see 
<uri>http://www.openmosix.org</uri>.
</p>

</body>
</section>
<section>
<title>pac-sources</title>
<body>

<p>
The <c>pac-sources</c> kernel tree is patched with Bernhard Rosenkraenzer's
(bero) patches. Be warned that this kernel is quite out of date and may be
removed from Portage soon.
</p>

</body>
</section>
<section>
<title>selinux-sources</title>
<body>

<p>
<c>selinux-sources</c> from <uri>http://www.nsa.gov/selinux</uri> are 
patches for the security conscious to support the LSM (Linux Security 
Modules) and the Flask Security Architecture.
</p>

</body>
</section>
<section>
<title>usermode-sources</title>
<body>

<p>
<c>usermode-sources</c> are the User Mode Linux kernel patches.  This 
kernel is designed to allow Linux to run within Linux to run within Linux
to ... 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 <uri>http://user-mode-linux.sourceforge.net</uri>. 
</p>

<p>
For more information on UML and Gentoo, read the 
<uri link="/doc/en/uml.xml">Gentoo UML Guide</uri>.
</p>

</body>
</section>
<section>
<title>win4lin-sources</title>
<body>

<p>
<c>win4lin-sources</c> are patched to support the userland win4lin tools 
that allow Linux users to run many Microsoft Windows (TM) applications
at almost native speeds.  See <uri>http://www.netraverse.com/</uri> for more 
information.
</p>

</body>
</section>
<section>
<title>wolk-sources</title>
<body>

<p>
<c>wolk-sources</c> contains the <e>Working Overloaded Linux Kernel</e> from 
<uri>http://sourceforge.net/projects/wolk</uri>. This kernel contains
many patches of a wide variety, all combined into the kernel with
extreme care. This allows you to configure nearly every one into and out
of the kernel at compile time -- so the kernel will work with nearly any
combination of the patches.
</p>

<p>
If you need a certain combination of patches that you cannot find in other
kernel sources, WOLK is definitely worth a shot.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Previously provided kernel packages</title>
<section>
<title>aa-sources</title>
<body>

<p>
<c>aa-sources</c> was a heavily modified kernel with all kinds of patches.
The upstream maintainer has stopped releasing kernel patchsets, this package
was removed as it went out of date.
</p>

</body>
</section>
<section>
<title>alpha-sources</title>
<body>

<p>
<c>alpha-sources</c> was a 2.4 kernel with patches applied to improve hardware
compatibility for the Alpha architecture. These patches have been developed
and included in the mainline kernel. Alpha users can now run any recent kernel
with no need for extra patches.
</p>

</body>
</section>
<section>
<title>gaming-sources</title>
<body>

<p>
<c>gaming-sources</c> was a 2.4 kernel with a broken scheduler patch applied
which enhanced performance in games. It was removed from Portage because some
problems accumulated, and the scheduler work being done in Linux 2.6 at the
same time offered the same or even better performance.
</p>

</body>
</section>
<section>
<title>gs-sources</title>
<body>

<p>
<c>gs-sources</c>, once advertised as our server-style patch set, became a
testing ground for prerelease 2.4 kernels. Unfortunately, the maintainer
became inactive and this kernel detoriated with new system updates and
became out of date.
</p>

</body>
</section>
<section>
<title>ia64-sources</title>
<body>

<p>
<c>ia64-sources</c> was a 2.6 kernel with some fixes applied to provide
improved hardware compatibility for the IA-64 architecture. These fixes are
now included in the mainline 2.6 kernel tree, so this package was no longer
useful.
</p>

</body>
</section>
<section>
<title>pac-sources</title>
<body>

<p>
<c>pac-sources</c>, a kernel designed to enhance multimedia performance, has
been superseded by development work in the 2.6 development branch.
</p>

</body>
</section>
<section>
<title>planet-ccrma-sources</title>
<body>

<p>
<c>planet-ccrma-sources</c>, a kernel designed to enhance audio performance,
has been superseded by development work in the 2.6 development branch.
</p>

</body>
</section>
<section>
<title>selinux-sources</title>
<body>

<p>
<c>selinux-sources</c>, a 2.4 kernel including lots of security enhancements,
has been obseleted by security development in the 2.6 tree.
</p>

</body>
</section>
</chapter>

</guide>
