nixpkgs/pkgs/os-specific/linux/kernel
Thomas Gerbet e54753495c
linux/common-config: restrict access to dmesg
`SECURITY_DMESG_RESTRICT` is enabled by default by a lot of
other distributions for a quite a while now, NixOS is a bit of an outlier.
The main justification to enable it is that kernel log might leak kernel
pointers which can then be used by exploits to defeat KASLR (NixOS also
enables `kernel.kptr_restrict` by default since 2013).
2024-07-24 12:06:04 +05:30
..
hardened linux/hardened: fix syntax in update-script 2024-07-11 14:34:39 +03:00
perf linuxPackages_6_10.perf: fix build 2024-07-15 12:23:59 +03:00
bridge-stp-helper.patch
common-config.nix linux/common-config: restrict access to dmesg 2024-07-24 12:06:04 +05:30
export-rt-sched-migrate.patch
generate-config.pl
generic.nix kernel: fix EDID firmware loading 2024-07-18 16:57:18 +03:00
gpio-utils.nix pkgs/os-specific: remove licenses.gpl2 2024-06-21 12:28:43 +03:00
htmldocs.nix
kernels-org.json linux_4_19: 4.19.317 -> 4.19.318 2024-07-18 16:44:19 +03:00
linux-libre.nix linux_latest-libre: 19607 -> 19611 2024-07-18 16:45:26 +03:00
linux-rpi.nix linux-rpi: 6.1.63-stable_20231123 -> 6.6.31-stable_20240529 2024-06-17 00:56:00 +07:00
linux-rt-5.4.nix linux-rt_5_4: 5.4.271-rt89 -> 5.4.278-rt91 2024-07-05 17:29:44 +03:00
linux-rt-5.10.nix linux-rt_5_10: 5.10.220-rt112 -> 5.10.221-rt113 2024-07-15 12:24:00 +03:00
linux-rt-5.15.nix linux-rt_5_15: 5.15.158-rt76 -> 5.15.160-rt77 2024-06-18 21:42:40 +02:00
linux-rt-6.1.nix linux-rt_6_1: 6.1.96-rt35 -> 6.1.99-rt36 2024-07-18 16:44:36 +03:00
linux-rt-6.6.nix linux-rt_6_6: 6.6.36-rt35 -> 6.6.40-rt36 2024-07-18 16:45:03 +03:00
mainline.nix
manual-config.nix linux: move hexdump to nativeBuildInputs 2024-07-03 13:45:34 +02:00
modinst-arg-list-too-long.patch
mptcp-config.nix
patches.nix
randstruct-provide-seed-5.19.patch
randstruct-provide-seed.patch
README.md
request-key-helper-updated.patch
request-key-helper.patch
rtl8761b-support.patch
rust-1.75.patch
rust-1.77-6.8.patch
rust-1.77.patch
update-libre.sh
update-mainline.py
update-rt.sh
update-zen.py
update.sh
xanmod-kernels.nix linux_xanmod_latest: 6.9.9 -> 6.9.10 2024-07-19 20:46:32 +02:00
zen-kernels.nix linuxKernel.kernels.linux_lqx: fix build 2024-07-16 21:11:07 +01:00

How to add a new (major) version of the Linux kernel to Nixpkgs:

  1. Copy the old Nix expression (e.g., linux-2.6.21.nix) to the new one (e.g., linux-2.6.22.nix) and update it.

  2. Add the new kernel to the kernels attribute set in linux-kernels.nix (e.g., create an attribute kernel_2_6_22).

  3. Update the kernel configuration:

    1. While in the Nixpkgs repository, enter the development shell for that kernel:

      $ nix-shell -A linuxKernel.kernels.linux_2_6_22
      
    2. Unpack the kernel:

      [nix-shell]$ pushd $(mktemp -d)
      [nix-shell]$ unpackPhase
      
    3. For each supported platform (i686, x86_64, uml) do the following:

      1. Make a copy from the old config (e.g., config-2.6.21-i686-smp) to the new one (e.g., config-2.6.22-i686-smp).

      2. Copy the config file for this platform (e.g., config-2.6.22-i686-smp) to .config in the unpacked kernel source tree.

      3. Run make oldconfig ARCH={i386,x86_64,um} and answer all questions. (For the uml configuration, also add SHELL=bash.) Make sure to keep the configuration consistent between platforms (i.e., dont enable some feature on i686 and disable it on x86_64).

      4. If needed, you can also run make menuconfig:

        $ nix-shell -p ncurses pkg-config
        $ make menuconfig ARCH=arch
        
      5. Copy .config over the new config file (e.g., config-2.6.22-i686-smp).

  4. Test building the kernel:

nix-build -A linuxKernel.kernels.kernel_2_6_22

If it compiles, ship it! For extra credit, try booting NixOS with it.

  1. It may be that the new kernel requires updating the external kernel modules and kernel-dependent packages listed in the linuxPackagesFor function in linux-kernels.nix (such as the NVIDIA drivers, AUFS, etc.). If the updated packages arent backwards compatible with older kernels, you may need to keep the older versions around.