forked from mirrors/nixpkgs
linux: Enable some kernel features
This enables a few features that should be useful and safe (they're all used by the default Ubuntu kernel config), in particular zswap, wakelocks, kernel load address randomization, userfaultfd (useful for QEMU), paravirtualized spinlocks and automatic process group scheduling. Also removes some configuration conditional on kernel versions that we no longer support.
This commit is contained in:
parent
1cd7dbc00b
commit
7b9c493d60
|
@ -67,6 +67,7 @@ with stdenv.lib;
|
||||||
${optionalString (versionOlder version "3.10") ''
|
${optionalString (versionOlder version "3.10") ''
|
||||||
USB_SUSPEND y
|
USB_SUSPEND y
|
||||||
''}
|
''}
|
||||||
|
PM_WAKELOCKS y
|
||||||
|
|
||||||
# Support drivers that need external firmware.
|
# Support drivers that need external firmware.
|
||||||
STANDALONE n
|
STANDALONE n
|
||||||
|
@ -98,9 +99,6 @@ with stdenv.lib;
|
||||||
DONGLE y # Serial dongle support
|
DONGLE y # Serial dongle support
|
||||||
HIPPI y
|
HIPPI y
|
||||||
MTD_COMPLEX_MAPPINGS y # needed for many devices
|
MTD_COMPLEX_MAPPINGS y # needed for many devices
|
||||||
${optionalString (versionOlder version "3.2") ''
|
|
||||||
NET_POCKET y # enable pocket and portable adapters
|
|
||||||
''}
|
|
||||||
SCSI_LOWLEVEL y # enable lots of SCSI devices
|
SCSI_LOWLEVEL y # enable lots of SCSI devices
|
||||||
SCSI_LOWLEVEL_PCMCIA y
|
SCSI_LOWLEVEL_PCMCIA y
|
||||||
SCSI_SAS_ATA y # added to enable detection of hard drive
|
SCSI_SAS_ATA y # added to enable detection of hard drive
|
||||||
|
@ -137,9 +135,7 @@ with stdenv.lib;
|
||||||
HOSTAP_FIRMWARE_NVRAM? y
|
HOSTAP_FIRMWARE_NVRAM? y
|
||||||
ATH9K_PCI? y # Detect Atheros AR9xxx cards on PCI(e) bus
|
ATH9K_PCI? y # Detect Atheros AR9xxx cards on PCI(e) bus
|
||||||
ATH9K_AHB? y # Ditto, AHB bus
|
ATH9K_AHB? y # Ditto, AHB bus
|
||||||
${optionalString (versionAtLeast version "3.2") ''
|
B43_PHY_HT? y
|
||||||
B43_PHY_HT? y
|
|
||||||
''}
|
|
||||||
BCMA_HOST_PCI? y
|
BCMA_HOST_PCI? y
|
||||||
|
|
||||||
# Enable various FB devices.
|
# Enable various FB devices.
|
||||||
|
@ -157,7 +153,7 @@ with stdenv.lib;
|
||||||
FB_VESA y
|
FB_VESA y
|
||||||
FRAMEBUFFER_CONSOLE y
|
FRAMEBUFFER_CONSOLE y
|
||||||
FRAMEBUFFER_CONSOLE_ROTATION y
|
FRAMEBUFFER_CONSOLE_ROTATION y
|
||||||
${optionalString (versionOlder version "3.9" || stdenv.system == "i686-linux") ''
|
${optionalString (stdenv.system == "i686-linux") ''
|
||||||
FB_GEODE y
|
FB_GEODE y
|
||||||
''}
|
''}
|
||||||
|
|
||||||
|
@ -168,11 +164,7 @@ with stdenv.lib;
|
||||||
''}
|
''}
|
||||||
# Allow specifying custom EDID on the kernel command line
|
# Allow specifying custom EDID on the kernel command line
|
||||||
DRM_LOAD_EDID_FIRMWARE y
|
DRM_LOAD_EDID_FIRMWARE y
|
||||||
${optionalString (versionOlder version "3.9") ''
|
VGA_SWITCHEROO y # Hybrid graphics support
|
||||||
DRM_RADEON_KMS? y
|
|
||||||
''}
|
|
||||||
# Hybrid graphics support
|
|
||||||
VGA_SWITCHEROO y
|
|
||||||
|
|
||||||
# Sound.
|
# Sound.
|
||||||
SND_DYNAMIC_MINORS y
|
SND_DYNAMIC_MINORS y
|
||||||
|
@ -231,9 +223,7 @@ with stdenv.lib;
|
||||||
NFSD_V4_SECURITY_LABEL y
|
NFSD_V4_SECURITY_LABEL y
|
||||||
''}
|
''}
|
||||||
NFS_FSCACHE y
|
NFS_FSCACHE y
|
||||||
${optionalString (versionAtLeast version "3.6") ''
|
NFS_SWAP y
|
||||||
NFS_SWAP y
|
|
||||||
''}
|
|
||||||
NFS_V3_ACL y
|
NFS_V3_ACL y
|
||||||
${optionalString (versionAtLeast version "3.11") ''
|
${optionalString (versionAtLeast version "3.11") ''
|
||||||
NFS_V4_1 y # NFSv4.1 client support
|
NFS_V4_1 y # NFSv4.1 client support
|
||||||
|
@ -265,6 +255,7 @@ with stdenv.lib;
|
||||||
DEBUG_SET_MODULE_RONX? y # Detect writes to read-only module pages
|
DEBUG_SET_MODULE_RONX? y # Detect writes to read-only module pages
|
||||||
|
|
||||||
# Security related features.
|
# Security related features.
|
||||||
|
RANDOMIZE_BASE y
|
||||||
STRICT_DEVMEM y # Filter access to /dev/mem
|
STRICT_DEVMEM y # Filter access to /dev/mem
|
||||||
SECURITY_SELINUX_BOOTPARAM_VALUE 0 # Disable SELinux by default
|
SECURITY_SELINUX_BOOTPARAM_VALUE 0 # Disable SELinux by default
|
||||||
DEVKMEM n # Disable /dev/kmem
|
DEVKMEM n # Disable /dev/kmem
|
||||||
|
@ -310,25 +301,25 @@ with stdenv.lib;
|
||||||
BT_HCIUART_BCSP? y
|
BT_HCIUART_BCSP? y
|
||||||
BT_HCIUART_H4? y # UART (H4) protocol support
|
BT_HCIUART_H4? y # UART (H4) protocol support
|
||||||
BT_HCIUART_LL? y
|
BT_HCIUART_LL? y
|
||||||
${optionalString (versionAtLeast version "3.4") ''
|
BT_RFCOMM_TTY? y # RFCOMM TTY support
|
||||||
BT_RFCOMM_TTY? y # RFCOMM TTY support
|
CLEANCACHE? y
|
||||||
''}
|
|
||||||
CRASH_DUMP? n
|
CRASH_DUMP? n
|
||||||
${optionalString (versionOlder version "3.1") ''
|
|
||||||
DMAR? n # experimental
|
|
||||||
''}
|
|
||||||
DVB_DYNAMIC_MINORS? y # we use udev
|
DVB_DYNAMIC_MINORS? y # we use udev
|
||||||
${optionalString (versionAtLeast version "3.3") ''
|
EFI_STUB y # EFI bootloader in the bzImage itself
|
||||||
EFI_STUB y # EFI bootloader in the bzImage itself
|
|
||||||
''}
|
|
||||||
FHANDLE y # used by systemd
|
FHANDLE y # used by systemd
|
||||||
|
FRONTSWAP y
|
||||||
FUSION y # Fusion MPT device support
|
FUSION y # Fusion MPT device support
|
||||||
IDE_GD_ATAPI y # ATAPI floppy support
|
IDE_GD_ATAPI y # ATAPI floppy support
|
||||||
|
${optionalString (versionAtLeast version "4.3") ''
|
||||||
|
IDLE_PAGE_TRACKING y
|
||||||
|
''}
|
||||||
IRDA_ULTRA y # Ultra (connectionless) protocol
|
IRDA_ULTRA y # Ultra (connectionless) protocol
|
||||||
JOYSTICK_IFORCE_232? y # I-Force Serial joysticks and wheels
|
JOYSTICK_IFORCE_232? y # I-Force Serial joysticks and wheels
|
||||||
JOYSTICK_IFORCE_USB? y # I-Force USB joysticks and wheels
|
JOYSTICK_IFORCE_USB? y # I-Force USB joysticks and wheels
|
||||||
JOYSTICK_XPAD_FF? y # X-Box gamepad rumble support
|
JOYSTICK_XPAD_FF? y # X-Box gamepad rumble support
|
||||||
JOYSTICK_XPAD_LEDS? y # LED Support for Xbox360 controller 'BigX' LED
|
JOYSTICK_XPAD_LEDS? y # LED Support for Xbox360 controller 'BigX' LED
|
||||||
|
KEXEC_FILE y
|
||||||
|
KEXEC_JUMP y
|
||||||
LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
|
LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
|
||||||
LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
|
LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
|
||||||
LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
|
LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
|
||||||
|
@ -349,12 +340,9 @@ with stdenv.lib;
|
||||||
PPP_MULTILINK y # PPP multilink support
|
PPP_MULTILINK y # PPP multilink support
|
||||||
PPP_FILTER y
|
PPP_FILTER y
|
||||||
REGULATOR y # Voltage and Current Regulator Support
|
REGULATOR y # Voltage and Current Regulator Support
|
||||||
${optionalString (versionAtLeast version "3.6") ''
|
RC_DEVICES? y # Enable IR devices
|
||||||
RC_DEVICES? y # Enable IR devices
|
RT2800USB_RT55XX y
|
||||||
''}
|
SCHED_AUTOGROUP y
|
||||||
${optionalString (versionAtLeast version "3.10") ''
|
|
||||||
RT2800USB_RT55XX y
|
|
||||||
''}
|
|
||||||
SCSI_LOGGING y # SCSI logging facility
|
SCSI_LOGGING y # SCSI logging facility
|
||||||
SERIAL_8250 y # 8250/16550 and compatible serial support
|
SERIAL_8250 y # 8250/16550 and compatible serial support
|
||||||
SLIP_COMPRESSED y # CSLIP compressed headers
|
SLIP_COMPRESSED y # CSLIP compressed headers
|
||||||
|
@ -369,6 +357,9 @@ with stdenv.lib;
|
||||||
''}
|
''}
|
||||||
USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
|
USB_EHCI_ROOT_HUB_TT y # Root Hub Transaction Translators
|
||||||
USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling
|
USB_EHCI_TT_NEWSCHED y # Improved transaction translator scheduling
|
||||||
|
${optionalString (versionAtLeast version "4.3") ''
|
||||||
|
USERFAULTFD y
|
||||||
|
''}
|
||||||
X86_CHECK_BIOS_CORRUPTION y
|
X86_CHECK_BIOS_CORRUPTION y
|
||||||
X86_MCE y
|
X86_MCE y
|
||||||
|
|
||||||
|
@ -379,16 +370,14 @@ with stdenv.lib;
|
||||||
NAMESPACES? y # Required by 'unshare' used by 'nixos-install'
|
NAMESPACES? y # Required by 'unshare' used by 'nixos-install'
|
||||||
RT_GROUP_SCHED? y
|
RT_GROUP_SCHED? y
|
||||||
CGROUP_DEVICE? y
|
CGROUP_DEVICE? y
|
||||||
${if versionAtLeast version "3.6" then ''
|
MEMCG y
|
||||||
MEMCG y
|
MEMCG_SWAP y
|
||||||
MEMCG_SWAP y
|
|
||||||
'' else ''
|
|
||||||
CGROUP_MEM_RES_CTLR y
|
|
||||||
CGROUP_MEM_RES_CTLR_SWAP y
|
|
||||||
''}
|
|
||||||
${optionalString (versionOlder version "4.7") "DEVPTS_MULTIPLE_INSTANCES y"}
|
${optionalString (versionOlder version "4.7") "DEVPTS_MULTIPLE_INSTANCES y"}
|
||||||
BLK_DEV_THROTTLING y
|
BLK_DEV_THROTTLING y
|
||||||
CFQ_GROUP_IOSCHED y
|
CFQ_GROUP_IOSCHED y
|
||||||
|
${optionalString (versionAtLeast version "4.3") ''
|
||||||
|
CGROUP_PIDS y
|
||||||
|
''}
|
||||||
|
|
||||||
# Enable staging drivers. These are somewhat experimental, but
|
# Enable staging drivers. These are somewhat experimental, but
|
||||||
# they generally don't hurt.
|
# they generally don't hurt.
|
||||||
|
@ -406,9 +395,7 @@ with stdenv.lib;
|
||||||
FTRACE_SYSCALLS y
|
FTRACE_SYSCALLS y
|
||||||
SCHED_TRACER y
|
SCHED_TRACER y
|
||||||
STACK_TRACER y
|
STACK_TRACER y
|
||||||
${optionalString (versionAtLeast version "3.10") ''
|
UPROBE_EVENT y
|
||||||
UPROBE_EVENT y
|
|
||||||
''}
|
|
||||||
${optionalString (versionAtLeast version "4.4") ''
|
${optionalString (versionAtLeast version "4.4") ''
|
||||||
BPF_SYSCALL y
|
BPF_SYSCALL y
|
||||||
BPF_EVENTS y
|
BPF_EVENTS y
|
||||||
|
@ -420,28 +407,18 @@ with stdenv.lib;
|
||||||
DEVTMPFS y
|
DEVTMPFS y
|
||||||
|
|
||||||
# Easier debugging of NFS issues.
|
# Easier debugging of NFS issues.
|
||||||
${optionalString (versionAtLeast version "3.4") ''
|
SUNRPC_DEBUG y
|
||||||
SUNRPC_DEBUG y
|
|
||||||
''}
|
|
||||||
|
|
||||||
# Virtualisation.
|
# Virtualisation.
|
||||||
PARAVIRT? y
|
PARAVIRT? y
|
||||||
${if versionAtLeast version "3.10" then ''
|
HYPERVISOR_GUEST y
|
||||||
HYPERVISOR_GUEST y
|
PARAVIRT_SPINLOCKS? y
|
||||||
'' else ''
|
|
||||||
PARAVIRT_GUEST? y
|
|
||||||
''}
|
|
||||||
KVM_APIC_ARCHITECTURE y
|
KVM_APIC_ARCHITECTURE y
|
||||||
KVM_ASYNC_PF y
|
KVM_ASYNC_PF y
|
||||||
${optionalString (versionOlder version "3.7") ''
|
|
||||||
KVM_CLOCK? y
|
|
||||||
''}
|
|
||||||
${optionalString (versionAtLeast version "4.0") ''
|
${optionalString (versionAtLeast version "4.0") ''
|
||||||
KVM_COMPAT? y
|
KVM_COMPAT? y
|
||||||
''}
|
''}
|
||||||
${optionalString (versionAtLeast version "3.10") ''
|
KVM_DEVICE_ASSIGNMENT? y
|
||||||
KVM_DEVICE_ASSIGNMENT? y
|
|
||||||
''}
|
|
||||||
${optionalString (versionAtLeast version "4.0") ''
|
${optionalString (versionAtLeast version "4.0") ''
|
||||||
KVM_GENERIC_DIRTYLOG_READ_PROTECT y
|
KVM_GENERIC_DIRTYLOG_READ_PROTECT y
|
||||||
''}
|
''}
|
||||||
|
@ -476,28 +453,22 @@ with stdenv.lib;
|
||||||
${optionalString (!stdenv.is64bit) ''
|
${optionalString (!stdenv.is64bit) ''
|
||||||
HIGHMEM64G? y # We need 64 GB (PAE) support for Xen guest support.
|
HIGHMEM64G? y # We need 64 GB (PAE) support for Xen guest support.
|
||||||
''}
|
''}
|
||||||
${optionalString (versionAtLeast version "3.9" && stdenv.is64bit) ''
|
${optionalString (stdenv.is64bit) ''
|
||||||
VFIO_PCI_VGA y
|
VFIO_PCI_VGA y
|
||||||
''}
|
''}
|
||||||
VIRT_DRIVERS y
|
VIRT_DRIVERS y
|
||||||
|
|
||||||
# Media support.
|
# Media support.
|
||||||
${optionalString (versionAtLeast version "3.6") ''
|
MEDIA_DIGITAL_TV_SUPPORT y
|
||||||
MEDIA_DIGITAL_TV_SUPPORT y
|
MEDIA_CAMERA_SUPPORT y
|
||||||
MEDIA_CAMERA_SUPPORT y
|
MEDIA_RC_SUPPORT y
|
||||||
MEDIA_RC_SUPPORT y
|
MEDIA_USB_SUPPORT y
|
||||||
''}
|
${optionalString (!(features.chromiumos or false)) ''
|
||||||
${optionalString (versionAtLeast version "3.7") ''
|
MEDIA_PCI_SUPPORT y
|
||||||
MEDIA_USB_SUPPORT y
|
|
||||||
${optionalString (!(features.chromiumos or false)) ''
|
|
||||||
MEDIA_PCI_SUPPORT y
|
|
||||||
''}
|
|
||||||
''}
|
''}
|
||||||
|
|
||||||
# Our initrd init uses shebang scripts, so can't be modular.
|
# Our initrd init uses shebang scripts, so can't be modular.
|
||||||
${optionalString (versionAtLeast version "3.10") ''
|
BINFMT_SCRIPT y
|
||||||
BINFMT_SCRIPT y
|
|
||||||
''}
|
|
||||||
|
|
||||||
# For systemd-binfmt
|
# For systemd-binfmt
|
||||||
BINFMT_MISC? y
|
BINFMT_MISC? y
|
||||||
|
@ -512,10 +483,9 @@ with stdenv.lib;
|
||||||
TRANSPARENT_HUGEPAGE_MADVISE? y
|
TRANSPARENT_HUGEPAGE_MADVISE? y
|
||||||
|
|
||||||
# zram support (e.g for in-memory compressed swap).
|
# zram support (e.g for in-memory compressed swap).
|
||||||
${optionalString (versionAtLeast version "3.4") ''
|
ZSMALLOC y
|
||||||
ZSMALLOC y
|
|
||||||
''}
|
|
||||||
ZRAM m
|
ZRAM m
|
||||||
|
ZSWAP y
|
||||||
|
|
||||||
# Enable PCIe and USB for the brcmfmac driver
|
# Enable PCIe and USB for the brcmfmac driver
|
||||||
BRCMFMAC_USB? y
|
BRCMFMAC_USB? y
|
||||||
|
|
Loading…
Reference in a new issue