* Use the kernel config generator for Linux 2.6.27.

* Move kernel patches out of all-packages.nix to
  os-specific/linux/kernel/patches.nix.
* Make the kernel config available under $out/config (it's also in
  $out/lib/modules/$version/build/.config, but that's kind of hard to
  find).

svn path=/nixpkgs/branches/kernel-config/; revision=18937
This commit is contained in:
Eelco Dolstra 2009-12-14 15:28:55 +00:00
parent 98101f9cb1
commit 03b4efe9c8
6 changed files with 322 additions and 137 deletions

View file

@ -1,8 +1,7 @@
source $stdenv/setup
export SHELL=bash
export ARCH=$arch
makeFlags="ARCH=$arch"
configurePhase() {
@ -28,7 +27,7 @@ configurePhase() {
# Create the config file.
echo "generating kernel configuration..."
echo "$kernelConfig" > kernel-config
KERNEL_CONFIG=kernel-config perl -w $generateConfig
DEBUG=1 ARCH=$arch KERNEL_CONFIG=kernel-config perl -w $generateConfig
}
@ -77,6 +76,7 @@ installPhase() {
# copy config
cp .config $out/lib/modules/$version/build/.config
ln -s $out/lib/modules/$version/build/.config $out/config
if test "$arch" != um; then
# copy all Makefiles and Kconfig files

View file

@ -1,25 +1,218 @@
args @ {stdenv, fetchurl, userModeLinux ? false, ...}:
assert !userModeLinux;
args @ { stdenv, fetchurl, userModeLinux ? false, extraConfig ? "", ... }:
import ./generic.nix (
rec {
version = "2.6.27.39";
version = "2.6.27.41";
src = fetchurl {
url = "mirror://kernel/linux/kernel/v2.6/linux-${version}.tar.bz2";
sha256 = "0l43mbh19d2h98c43y6i6xx39dhcwr9q2ggn8qhrw8jlgzn42hq8";
sha256 = "1a26yycbry64214pf1z96rz3jyrylqh0barsdsw7m1x15v7s6gn8";
};
features = {
iwlwifi = true;
};
features.iwlwifi = true;
config =
if stdenv.system == "i686-linux" then ./config-2.6.27-i686-smp else
if stdenv.system == "x86_64-linux" then ./config-2.6.27-x86_64-smp else
abort "No kernel configuration for your platform!";
''
# Don't include any debug features.
DEBUG_KERNEL n
# Support drivers that need external firmware.
STANDALONE n
# Make /proc/config.gz available.
IKCONFIG_PROC y
# Optimize with -O2, not -Os.
CC_OPTIMIZE_FOR_SIZE n
# Virtualisation (KVM, Xen...).
PARAVIRT_GUEST y
KVM_CLOCK y
KVM_GUEST y
XEN y
# We need 64 GB (PAE) support for Xen guest support.
HIGHMEM64G? y
# Enable the kernel's built-in memory tester.
MEMTEST y
# Include the CFQ I/O scheduler in the kernel, rather than as a
# module, so that the initrd gets a good I/O scheduler.
IOSCHED_CFQ y
# Disable some expensive (?) features.
MARKERS n
KPROBES n
NUMA? n
PM_TRACE_RTC n
# Enable various subsystems.
ACCESSIBILITY y # Accessibility support
AUXDISPLAY y # Auxiliary Display support
DONGLE y # Serial dongle support
HIPPI y
MTD_COMPLEX_MAPPINGS y # needed for many devices
NET_POCKET y # enable pocket and portable adapters
SCSI_LOWLEVEL y # enable lots of SCSI devices
SCSI_LOWLEVEL_PCMCIA y
SPI y # needed for many devices
SPI_MASTER y
WAN y
# Networking options.
IP_PNP n
IPV6_PRIVACY y
NETFILTER_ADVANCED y
IP_VS_PROTO_TCP y
IP_VS_PROTO_UDP y
IP_VS_PROTO_ESP y
IP_VS_PROTO_AH y
IP_DCCP_CCID3 n # experimental
CLS_U32_PERF y
CLS_U32_MARK y
# Wireless networking.
IPW2100_MONITOR y # support promiscuous mode
IPW2200_MONITOR y # support promiscuous mode
IWLWIFI_LEDS? y
IWLWIFI_RFKILL y
IWLAGN_SPECTRUM_MEASUREMENT y
IWLAGN_LEDS y
IWL4965 y # Intel Wireless WiFi 4965AGN
IWL5000 y # Intel Wireless WiFi 5000AGN
IWL3945_RFKILL y
IWL3945_LEDS y
HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
HOSTAP_FIRMWARE_NVRAM y
# Some settings to make sure that fbcondecor works - in particular,
# disable tileblitting and the drivers that need it.
# Enable various FB devices.
FB_EFI y
FB_NVIDIA_I2C y # Enable DDC Support
FB_RIVA_I2C y
FB_ATY_CT y # Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
FB_ATY_GX y # Mach64 GX support
FB_SAVAGE_I2C y
FB_SAVAGE_ACCEL y
FB_SIS_300 y
FB_SIS_315 y
FB_3DFX_ACCEL y
FB_TRIDENT_ACCEL y
FB_GEODE y
# Sound.
SND_AC97_POWER_SAVE y # AC97 Power-Saving Mode
SND_USB_CAIAQ_INPUT y
PSS_MIXER y # Enable PSS mixer (Beethoven ADSP-16 and other compatible)
# Enable a bunch of USB storage devices.
USB_STORAGE_DATAFAB y
USB_STORAGE_FREECOM y
USB_STORAGE_ISD200 y
USB_STORAGE_USBAT y
USB_STORAGE_SDDR09 y
USB_STORAGE_SDDR55 y
USB_STORAGE_JUMPSHOT y
USB_STORAGE_ONETOUCH y
USB_STORAGE_KARMA y
USB_STORAGE_CYPRESS_ATACB y
# USB serial devices.
USB_SERIAL_GENERIC y # USB Generic Serial Driver
USB_SERIAL_KEYSPAN_MPR y # include firmware for various USB serial devices
USB_SERIAL_KEYSPAN_USA28 y
USB_SERIAL_KEYSPAN_USA28X y
USB_SERIAL_KEYSPAN_USA28XA y
USB_SERIAL_KEYSPAN_USA28XB y
USB_SERIAL_KEYSPAN_USA19 y
USB_SERIAL_KEYSPAN_USA18X y
USB_SERIAL_KEYSPAN_USA19W y
USB_SERIAL_KEYSPAN_USA19QW y
USB_SERIAL_KEYSPAN_USA19QI y
USB_SERIAL_KEYSPAN_USA49W y
USB_SERIAL_KEYSPAN_USA49WLC y
# Filesystem options - in particular, enable extended attributes and
# ACLs for all filesystems that support them.
EXT2_FS_XATTR y # Ext2 extended attributes
EXT2_FS_POSIX_ACL y # Ext2 POSIX Access Control Lists
EXT2_FS_SECURITY y # Ext2 Security Labels
EXT2_FS_XIP y # Ext2 execute in place support
REISERFS_FS_XATTR y
REISERFS_FS_POSIX_ACL y
REISERFS_FS_SECURITY y
JFS_POSIX_ACL y
JFS_SECURITY y
XFS_QUOTA y
XFS_POSIX_ACL y
XFS_RT y # XFS Realtime subvolume support
OCFS2_DEBUG_MASKLOG n
UBIFS_FS_XATTR y
UBIFS_FS_ADVANCED_COMPR y
NFSD_V2_ACL y
NFSD_V3 y
NFSD_V3_ACL y
NFSD_V4 y
CIFS_XATTR y
CIFS_POSIX y
# Security related features.
STRICT_DEVMEM y # Filter access to /dev/mem
SECURITY_SELINUX_BOOTPARAM_VALUE 0 # disable SELinux by default
# Misc. options.
8139TOO_8129 y
8139TOO_PIO n # PIO is slower
AIC79XX_DEBUG_ENABLE n
AIC7XXX_DEBUG_ENABLE n
AIC94XX_DEBUG n
B43_PCMCIA y
BLK_DEV_BSG n
BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
BLK_DEV_IDEACPI y # IDE ACPI support
BLK_DEV_INTEGRITY y
BLK_DEV_IO_TRACE n
BSD_PROCESS_ACCT_V3 y
BT_HCIUART_BCSP y
BT_HCIUART_H4 y # UART (H4) protocol support
BT_HCIUART_LL y
BT_RFCOMM_TTY y # RFCOMM TTY support
CPU_FREQ_DEBUG n
CRASH_DUMP n
DMAR? n # experimental
FUSION y # Fusion MPT device support
IRDA_ULTRA y # Ultra (connectionless) protocol
JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
KALLSYMS_EXTRA_PASS n
LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
LOGO n # not needed
MEDIA_ATTACH y
MEGARAID_NEWGEN y
MODVERSIONS y
MTRR_SANITIZER y
NET_FC y # Fibre Channel driver support
PCI_LEGACY y
PPP_MULTILINK y # PPP multilink support
SCSI_LOGGING y # SCSI logging facility
SERIAL_8250 y # 8250/16550 and compatible serial support
SLIP_COMPRESSED y # CSLIP compressed headers
SLIP_SMART y
THERMAL_HWMON y # Hardware monitoring support
USB_DEBUG n
USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
X86_MCE y
${extraConfig}
'';
}
// args

View file

@ -1,4 +1,4 @@
args @ {stdenv, fetchurl, userModeLinux ? false, ...}:
args @ { stdenv, fetchurl, userModeLinux ? false, extraConfig ? "", ... }:
import ./generic.nix (
@ -33,9 +33,7 @@ import ./generic.nix (
XEN y
# We need 64 GB (PAE) support for Xen guest support.
${stdenv.lib.optionalString (stdenv.system == "i686-linux") ''
HIGHMEM64G y
''}
HIGHMEM64G? y
# Enable the kernel's built-in memory tester.
MEMTEST y
@ -223,6 +221,8 @@ import ./generic.nix (
USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
X86_CHECK_BIOS_CORRUPTION y
X86_MCE y
${extraConfig}
'';
}

View file

@ -1,4 +1,4 @@
args @ {stdenv, fetchurl, userModeLinux ? false, ...}:
args @ { stdenv, fetchurl, userModeLinux ? false, extraConfig ? "", ... }:
import ./generic.nix (
@ -205,6 +205,8 @@ import ./generic.nix (
USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
X86_CHECK_BIOS_CORRUPTION y
X86_MCE y
${extraConfig}
'';
}

View file

@ -0,0 +1,82 @@
{ fetchurl }:
let
fbcondecorConfig =
''
FB_CON_DECOR y
# fbcondecor is picky about some other settings.
FB y
FB_TILEBLITTING n
FB_MATROX n
FB_S3 n
FB_VT8623 n
FB_ARK n
FB_CFB_FILLRECT y
FB_CFB_COPYAREA y
FB_CFB_IMAGEBLIT y
FB_VESA y
FRAMEBUFFER_CONSOLE y
'';
in
{
sec_perm_2_6_24 =
{ name = "sec_perm-2.6.24";
patch = ./sec_perm-2.6.24.patch;
features.secPermPatch = true;
};
fbcondecor_2_6_27 =
{ name = "fbcondecor-0.9.4-2.6.27";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.4-2.6.27.patch;
sha256 = "170l9l5fvbgjrr4klqcwbgjg4kwvrrhjpmgbfpqj0scq0s4q4vk6";
};
extraConfig = fbcondecorConfig;
features.fbConDecor = true;
};
fbcondecor_2_6_28 =
{ name = "fbcondecor-0.9.5-2.6.28";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.5-2.6.28.patch;
sha256 = "105q2dwrwi863r7nhlrvljim37aqv67mjc3lgg529jzqgny3fjds";
};
extraConfig = fbcondecorConfig;
features.fbConDecor = true;
};
fbcondecor_2_6_29 =
{ name = "fbcondecor-0.9.6-2.6.29.2";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.6-2.6.29.2.patch;
sha256 = "1yppvji13sgnql62h4wmskzl9l198pp1pbixpbymji7mr4a0ylx1";
};
extraConfig = fbcondecorConfig;
features.fbConDecor = true;
};
fbcondecor_2_6_31 =
{ name = "fbcondecor-0.9.6-2.6.31.2";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.6-2.6.31.2.patch;
sha256 = "1avk0yn0y2qbpsxf31r6d14y4a1mand01r4k4i71yfxvpqcgxka9";
};
extraConfig = fbcondecorConfig;
features.fbConDecor = true;
};
# From http://patchwork.kernel.org/patch/19495/
ext4_softlockups_2_6_28 =
{ name = "ext4-softlockups-fix";
patch = fetchurl {
url = http://patchwork.kernel.org/patch/19495/raw;
sha256 = "0vqcj9qs7jajlvmwm97z8cljr4vb277aqhsjqrakbxfdiwlhrzzf";
};
};
}

View file

@ -5377,6 +5377,10 @@ let
cross = "sparc-linux";
};
kernelPatches = import ../os-specific/linux/kernel/patches.nix {
inherit fetchurl;
};
kernel_2_6_25 = import ../os-specific/linux/kernel/linux-2.6.25.nix {
inherit fetchurl stdenv perl mktemp module_init_tools;
kernelPatches = [
@ -5388,15 +5392,8 @@ let
extraConfig = "CONFIG_FB_CON_DECOR=y";
features = { fbConDecor = true; };
}
{ name = "sec_perm-2.6.24";
patch = ../os-specific/linux/kernel/sec_perm-2.6.24.patch;
features = { secPermPatch = true; };
}
kernelPatches.sec_perm_2_6_24
];
extraConfig =
lib.optional (getConfig ["kernel" "timer_stats"] false) "CONFIG_TIMER_STATS=y" ++
lib.optional (getConfig ["kernel" "no_irqbalance"] false) "# CONFIG_IRQBALANCE is not set" ++
[(getConfig ["kernel" "addConfig"] "")];
};
kernel_2_6_26 = import ../os-specific/linux/kernel/linux-2.6.26.nix {
@ -5410,97 +5407,33 @@ let
extraConfig = "CONFIG_FB_CON_DECOR=y";
features = { fbConDecor = true; };
}
{ name = "sec_perm-2.6.24";
patch = ../os-specific/linux/kernel/sec_perm-2.6.24.patch;
features = { secPermPatch = true; };
}
kernelPatches.sec_perm_2_6_24
];
extraConfig =
lib.optional (getConfig ["kernel" "no_irqbalance"] false) "# CONFIG_IRQBALANCE is not set" ++
[(getConfig ["kernel" "addConfig"] "")];
};
kernel_2_6_27 = import ../os-specific/linux/kernel/linux-2.6.27.nix {
kernel_2_6_27 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.27.nix) {
inherit fetchurl stdenv perl mktemp module_init_tools;
kernelPatches = [
{ name = "fbcondecor-0.9.4-2.6.27";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.4-2.6.27.patch;
sha256 = "170l9l5fvbgjrr4klqcwbgjg4kwvrrhjpmgbfpqj0scq0s4q4vk6";
};
extraConfig = "CONFIG_FB_CON_DECOR=y";
features = { fbConDecor = true; };
}
{ name = "sec_perm-2.6.24";
patch = ../os-specific/linux/kernel/sec_perm-2.6.24.patch;
features = { secPermPatch = true; };
}
];
extraConfig =
lib.optional (getConfig ["kernel" "no_irqbalance"] false) "# CONFIG_IRQBALANCE is not set" ++
[(getConfig ["kernel" "addConfig"] "")];
kernelPatches =
[ kernelPatches.fbcondecor_2_6_27
kernelPatches.sec_perm_2_6_24
];
};
kernel_2_6_28 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.28.nix) {
inherit fetchurl stdenv perl mktemp module_init_tools;
kernelPatches = [
{ name = "fbcondecor-0.9.5-2.6.28";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.5-2.6.28.patch;
sha256 = "105q2dwrwi863r7nhlrvljim37aqv67mjc3lgg529jzqgny3fjds";
};
extraConfig = "CONFIG_FB_CON_DECOR=y";
features = { fbConDecor = true; };
}
{ name = "sec_perm-2.6.24";
patch = ../os-specific/linux/kernel/sec_perm-2.6.24.patch;
features = { secPermPatch = true; };
}
{ # http://patchwork.kernel.org/patch/19495/
name = "ext4-softlockups-fix";
patch = fetchurl {
url = http://patchwork.kernel.org/patch/19495/raw;
sha256 = "0vqcj9qs7jajlvmwm97z8cljr4vb277aqhsjqrakbxfdiwlhrzzf";
};
}
];
extraConfig =
lib.optional (getConfig ["kernel" "no_irqbalance"] false) "# CONFIG_IRQBALANCE is not set" ++
[(getConfig ["kernel" "addConfig"] "")];
kernelPatches =
[ kernelPatches.fbcondecor_2_6_28
kernelPatches.sec_perm_2_6_24
kernelPatches.ext4_softlockups
];
};
kernel_2_6_29 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.29.nix) {
inherit fetchurl stdenv perl mktemp module_init_tools;
kernelPatches = [
{ name = "fbcondecor-0.9.5-2.6.28";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.6-2.6.29.2.patch;
sha256 = "1yppvji13sgnql62h4wmskzl9l198pp1pbixpbymji7mr4a0ylx1";
};
extraConfig =
''
FB_CON_DECOR y
# fbcondecor is picky about some other settings.
FB y
FB_TILEBLITTING n
FB_MATROX n
FB_S3 n
FB_VT8623 n
FB_ARK n
FB_CFB_FILLRECT y
FB_CFB_COPYAREA y
FB_CFB_IMAGEBLIT y
FB_VESA y
FRAMEBUFFER_CONSOLE y
'';
features = { fbConDecor = true; };
}
{ name = "sec_perm-2.6.24";
patch = ../os-specific/linux/kernel/sec_perm-2.6.24.patch;
features = { secPermPatch = true; };
}
];
kernelPatches =
[ kernelPatches.fbcondecor_2_6_29
kernelPatches.sec_perm_2_6_24
];
};
kernel_2_6_31 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.31.nix) {
@ -5531,36 +5464,10 @@ let
kernel_2_6_32 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.32.nix) {
inherit fetchurl stdenv perl mktemp module_init_tools;
kernelPatches = [
{ name = "fbcondecor-0.9.6-2.6.31.2";
patch = fetchurl {
url = http://dev.gentoo.org/~spock/projects/fbcondecor/archive/fbcondecor-0.9.6-2.6.31.2.patch;
sha256 = "1avk0yn0y2qbpsxf31r6d14y4a1mand01r4k4i71yfxvpqcgxka9";
};
extraConfig =
''
FB_CON_DECOR y
# fbcondecor is picky about some other settings.
FB y
FB_TILEBLITTING n
FB_MATROX n
FB_S3 n
FB_VT8623 n
FB_ARK n
FB_CFB_FILLRECT y
FB_CFB_COPYAREA y
FB_CFB_IMAGEBLIT y
FB_VESA y
FRAMEBUFFER_CONSOLE y
'';
features = { fbConDecor = true; };
}
{ name = "sec_perm-2.6.24";
patch = ../os-specific/linux/kernel/sec_perm-2.6.24.patch;
features = { secPermPatch = true; };
}
];
kernelPatches =
[ kernelPatches.fbcondecor_2_6_31
kernelPatches.sec_perm_2_6_24
];
};
/* Kernel modules are inherently tied to a specific kernel. So
@ -5694,6 +5601,7 @@ let
kernelPackages_2_6_31_zen = recurseIntoAttrs (kernelPackagesFor kernel_2_6_31_zen);
kernelPackages_2_6_31_zen_bfs = recurseIntoAttrs (kernelPackagesFor kernel_2_6_31_zen_bfs);
kernelPackages_2_6_31 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_31);
kernelPackages_2_6_32 = recurseIntoAttrs (kernelPackagesFor kernel_2_6_32);
# The current default kernel / kernel modules.
kernelPackages = kernelPackages_2_6_28;