summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2009-12-14 15:28:55 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2009-12-14 15:28:55 +0000
commit03b4efe9c85ecb923210f8c19bfc5ff4db61812c (patch)
treee2df2bc99594356a7d2fc2452d52a888df883a49 /pkgs/os-specific
parent98101f9cb125395da2cf97efc7d7a5554f3d4be0 (diff)
downloadnixlib-03b4efe9c85ecb923210f8c19bfc5ff4db61812c.tar
nixlib-03b4efe9c85ecb923210f8c19bfc5ff4db61812c.tar.gz
nixlib-03b4efe9c85ecb923210f8c19bfc5ff4db61812c.tar.bz2
nixlib-03b4efe9c85ecb923210f8c19bfc5ff4db61812c.tar.lz
nixlib-03b4efe9c85ecb923210f8c19bfc5ff4db61812c.tar.xz
nixlib-03b4efe9c85ecb923210f8c19bfc5ff4db61812c.tar.zst
nixlib-03b4efe9c85ecb923210f8c19bfc5ff4db61812c.zip
* 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
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/linux/kernel/builder.sh6
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.27.nix217
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.29.nix8
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.32.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix82
5 files changed, 297 insertions, 20 deletions
diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh
index 58d257438100..07eb4edded4f 100644
--- a/pkgs/os-specific/linux/kernel/builder.sh
+++ b/pkgs/os-specific/linux/kernel/builder.sh
@@ -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
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.27.nix b/pkgs/os-specific/linux/kernel/linux-2.6.27.nix
index 16ca672da8cb..9548f785fb65 100644
--- a/pkgs/os-specific/linux/kernel/linux-2.6.27.nix
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.27.nix
@@ -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
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.29.nix b/pkgs/os-specific/linux/kernel/linux-2.6.29.nix
index 9a7fb3a34711..e91d956ce745 100644
--- a/pkgs/os-specific/linux/kernel/linux-2.6.29.nix
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.29.nix
@@ -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}
       '';
   }
 
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.32.nix b/pkgs/os-specific/linux/kernel/linux-2.6.32.nix
index 40f0c6fdf2c0..7ae765ad1d65 100644
--- a/pkgs/os-specific/linux/kernel/linux-2.6.32.nix
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.32.nix
@@ -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}
       '';
   }
 
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
new file mode 100644
index 000000000000..7bc5519a0823
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -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";
+      };
+    };
+
+}