I have added a special kernel 2.6.21 with the Con Kolivas patches that are designed to improve system responsiveness with specific emphasis on the desktop, but suitable to any workload. (and also the other patches like ext3cow and paravirt-nvidia)
svn path=/nixpkgs/trunk/; revision=9748
This commit is contained in:
parent
8e25a7d6c9
commit
e20c559e5f
84
pkgs/os-specific/linux/kernel/linux-2.6.21_ck.nix
Normal file
84
pkgs/os-specific/linux/kernel/linux-2.6.21_ck.nix
Normal file
|
@ -0,0 +1,84 @@
|
|||
{ stdenv, fetchurl, perl, mktemp, module_init_tools
|
||||
|
||||
# A list of patches to apply to the kernel. Each element of this list
|
||||
# should be an attribute set {name, patch} where `name' is a
|
||||
# symbolic name and `patch' is the actual patch. The patch may
|
||||
# optionally be compressed with gzip or bzip2.
|
||||
, kernelPatches ? []
|
||||
|
||||
, # Whether to build a User-Mode Linux kernel.
|
||||
userModeLinux ? false
|
||||
|
||||
, # Allows you to set your own kernel version suffix (e.g.,
|
||||
# "-my-kernel").
|
||||
localVersion ? ""
|
||||
|
||||
, # Your own kernel configuration file, if you don't want to use the
|
||||
# default.
|
||||
kernelConfig ? null
|
||||
|
||||
, # A list of additional statements to be appended to the
|
||||
# configuration file.
|
||||
extraConfig ? []
|
||||
}:
|
||||
|
||||
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
|
||||
|
||||
let
|
||||
|
||||
lib = import ../../../lib;
|
||||
|
||||
version = "2.6.21";
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = if userModeLinux then "user-mode-linux-${version}" else "linux-${version}";
|
||||
builder = ./builder.sh;
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.tar.bz2";
|
||||
sha256 = "f187b12d70e0a48ce81f0472dfe9504fb5f0f966be339ac9d57dd2b991a74942";
|
||||
};
|
||||
|
||||
patches = map (p: p.patch) kernelPatches;
|
||||
extraConfig =
|
||||
let addNewlines = map (s: "\n" + s + "\n");
|
||||
configFromPatches =
|
||||
map (p: if p ? extraConfig then p.extraConfig else "") kernelPatches;
|
||||
in lib.concatStrings (addNewlines (configFromPatches ++ extraConfig));
|
||||
|
||||
config =
|
||||
if kernelConfig != null then kernelConfig else
|
||||
if userModeLinux then ./config-2.6.21-uml else
|
||||
if stdenv.system == "i686-linux" then ./config-2.6.21-i686-smp else
|
||||
if stdenv.system == "x86_64-linux" then ./config-2.6.21-x86_64-smp else
|
||||
abort "No kernel configuration for your platform!";
|
||||
|
||||
buildInputs = [perl mktemp];
|
||||
|
||||
arch =
|
||||
if userModeLinux then "um" else
|
||||
if stdenv.system == "i686-linux" then "i386" else
|
||||
if stdenv.system == "x86_64-linux" then "x86_64" else
|
||||
abort "Platform ${stdenv.system} is not supported.";
|
||||
|
||||
makeFlags = if userModeLinux then "ARCH=um SHELL=bash" else "";
|
||||
|
||||
inherit module_init_tools;
|
||||
|
||||
allowLocalVersion = false; # don't allow patches to set a suffix
|
||||
inherit localVersion; # but do allow the user to set one.
|
||||
|
||||
meta = {
|
||||
description =
|
||||
(if userModeLinux then
|
||||
"User-Mode Linux"
|
||||
else
|
||||
"The Linux kernel") +
|
||||
(if kernelPatches == [] then "" else
|
||||
" (with patches: "
|
||||
+ lib.concatStrings (lib.intersperse ", " (map (x: x.name) kernelPatches))
|
||||
+ ")");
|
||||
};
|
||||
}
|
5040
pkgs/os-specific/linux/kernel/patch-2.6.21-ck1
Normal file
5040
pkgs/os-specific/linux/kernel/patch-2.6.21-ck1
Normal file
File diff suppressed because it is too large
Load diff
5167
pkgs/os-specific/linux/kernel/patch-2.6.22-ck1
Normal file
5167
pkgs/os-specific/linux/kernel/patch-2.6.22-ck1
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue