# KC6: Which sources?

## yokem55

Navigation: [prev KC5: Unresolved symbols] [next KC7: How do I know when to compile something into the kernel, and when should I compile it as a module?] [Kernel Compilation] [Table of Contents]

KC6: Which of the various kernel sources (gentoo-sources, vanilla-sources, etc.) are right for me?

This all depends on what features you want in your kernel.  Different kernels provide different features, performance options, and other kernels are used in very special circumstances.  The most commonly used kernels are listed below:

Vanilla-sources:  This kernel is the basic, default kernel that the primary linux kernel developers release at www.kernel.org.  It lacks in performance enhancing features such as Preempt, and only includes features that have been put under heavy testing to ensure stability.  If you are having kernel related instability this kernel is a good alternative.  Also, if you are looking to "roll your own" kernel by adding custom patches that you get from other parties, this kernel is the base that you will want to work from.

Gentoo-sources: The official Gentoo kernel has a number of performance and functionality enhancements to it, such as preempt, EVMS (enterprise volume management system; good for managing raid devices and large disk arrays), and Grsecurity.  Moreover, you can add some other optional features with USE flags in your /etc/make.conf file. Example: USE="xfs" adds support for the XFS journaling file system from SGI (enabling both xfs and preempt can cause xfs partitions to become corrupted; use it with care).

pfeifer-sources: Maintainer Jay Pfeifer's testbed for Gentoo-sources, replacing the former lolo-sources by lostlogic (Brandon Low). Patches in these sources usually find their way into the Gentoo mainstream as soon as they appear stable enough. 

XFS-sources: This kernel is basically the same as the vanilla kernel, just patched wth XFS support. Using this kernel adds XFS support by default, and you don't need the "xfs" USE flag in your /etc/make.conf. 

ACPI-sources: Also based on the stock vanilla kernel, but it takes ACPI support from the ACPI4Linux project.  If you want to run a vanilla kernel on a laptop that primarily uses ACPI (instead of APM), this could be a wise choice.

Redhat-sources: RedHat's own kernel is similar in its functionality and performance features to the Gentoo-sources kernel, but has the advantage of being more heavily tested by a large number of RedHat users.  

ck-sources: Kernel patchset by Con Kolivas containing high performance patches for the desktop. Focuses on system responsiveness by including things like preemptibility and low latency, and things you usually don't need in a server: Supermount, CD/DVD-RW packet writing, desktop tuning... Follows the stable kernel. More information here.

WOLK-sources: Working Overloaded Linux Kernel, a patchset that contains large amounts of patches. This set is heavily modified with every bugfix and many performance features. Follows release of stable kernel. Has full development cycle. Check the Sourceforge project page for details.

ac-sources: Kernel patchset by Alan Cox with a large number of improvements. Used as a testbed to stable kernels. Follows prerelease kernels. Usually better hardware support than the stable kernel. Updated often.

aa-sources: Similar in form and function to ac-sources, released by Andrea Arcangeli. Contains a lot of vm work and improvements to interactivity.

mm-sources: Released by Andrew Morton, rapidly changing collection of patches for the development kernel. Lots of work on all areas of the kernel. Updated usually daily or more.

mjc-sources: Michael J. Cohen's kernel patchset, performance enhancements, seems to focus on latency.

Special purpose kernels, but still for the x86 architecture:

gs-sources: Gentoo's kernel for use on the LiveCD.

Win4Lin-sources: Matching kernel sources for the (commercial) Win4Lin virtual platform for running Windows applications in Linux. 

Gaming-sources: Gentoo-maintained kernel, based on Con Koliva's kernel patches (ck-sources, see above) with additional enhancements especially for gamers.

Openmosix-sources:  This kernel supports Openmosix clustering, allowing you  to cluster together anywhere from a few systems all the way up to hundreds of systems.  Usermode-sources: User-mode Linux (UML) allows you to run a Linux kernel contained in a virtual environment inside your regular system (much like VMware would allow for different operating systems inside virtual machines).  This is good for testing alpha/beta software that you don't want to jeopardize your running system, or running an alternative development environment with an old GCC release, for example.

RSBAC-sources: Rule Set Based Access Control is a security extension that implements a framework beyond the standard read/write/execute permissions in normal Linux installations, including BSD-style "jail" system calls, Mandatory Access Control, file flags and many other rule sets. Details can be found here.

SELinux-sources: Released by the US' National Security Agency (NSA), this kernel contains maximum security enhancements.  If you are looking for a kernel with some extreme secutiry levels, this is the right choice.

Development-sources: This is the "vanilla" beta kernel put out by the main kernel developers.  Currently this kernel is the 2.5 series of kernels.  It has performance and functionality enhancements like Gentoo-sources, but is still in "beta" status.  This kernel is good for those adventerous types that don't mind taking some risks.

Four kernel source packages are available for Apple Macintosh and other PowerPCs:

PPC-sources: The official Gentoo kernel sources for Macintosh and other PowerPCs. Mark Guertin (aka Gerk) is the maintainer. 

PPC-sources-benh: Benjamin Herrenschmidt's slightly more experimental kernel for PowerPCs/Macs, contains patches mainly for additional hardware support.

PPC-sources-crypto: Crypto kernel for PPC.

PPC-sources-dev: The equivalent of the Development-sources for PowerPC architecture.

Last but not least, the kernels for non-x86 CPUs other than PowerPCs:

MIPS-sources: MIPS ports of Linux support hardware ranging from old DECstations to Sony's Playstation2. Most commonly, this is the type of kernel you want to use if you own a Silicon Graphics Indy or a Cobalt Qube or Raq. 

hppa-sources: HPPA stands for Hewlett Packard Precision Architecture RISC processors, referring to a family of machines with a Linux port of their own under development since 1999, now supported by a number of distributions (check the PA-RISC FAQ). Sparc-sources: This is the kernel you'd be expected to run on Sun's Sparc and UltraSparc systems, based on their own class of CPUs (Scalable Processor ARChitecture, hence the name).

Alpha-sources: Linux kernel for Digital's 64-bit Alpha RISC based architectures (old DEC machines, Hewlett-Packard AlphaServer etc.). If the terms "longword" and "quadword" mean anything to you, this is your kernel...

ARM-sources: A Gentoo variety of kernel patches for Linux on ARM/StrongARM/Xscale based computers and PDAs (anything from Corel Netwinders to Sharp Zaurus, theoretically). 

----------

## plate

This document now has a debate club of its own. Suggestions for new information and corrections for outdated items  are to be posted in  [FAQF] KC6: Which sources?

----------

