linux: build hardened kernel with matching releases
Until now we merged kernel updates even if no hardened versions were available yet. On one hand we don't want to delay patch-level updates, on the other hand users of hardened kernels have frequent breakage now[1]. This change aims to provide a solution this issue: * The hardened patchset now references the kernel version it's released for (including a sha256 hash for the fixed-output path of the source tarball). * The `hardenedKernelFor`-function doesn't just append hardened patches now, but also overrides version & src to match the kernel version the patch was built & tested for. Refs #140281 [1] https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.linuxPackages_hardened.kernel.x86_64-linux/all (cherry picked from commit bb5aa0109b6db98a2e0a7ba88f5e0287e2374384)
This commit is contained in:
@@ -20830,18 +20830,27 @@ in
|
||||
|
||||
# Hardened Linux
|
||||
hardenedLinuxPackagesFor = kernel': overrides:
|
||||
let # Note: We use this hack since the hardened patches can lag behind and we don't want to delay updates:
|
||||
linux_latest_for_hardened = pkgs.linux_5_10;
|
||||
kernel = (if kernel' == pkgs.linux_latest then linux_latest_for_hardened else kernel').override overrides;
|
||||
let
|
||||
kernel = kernel'.override overrides;
|
||||
version = kernelPatches.hardened.${kernel.meta.branch}.version;
|
||||
major = lib.versions.major version;
|
||||
sha256 = kernelPatches.hardened.${kernel.meta.branch}.sha256;
|
||||
modDirVersion' = builtins.replaceStrings [ kernel.version ] [ version ] kernel.modDirVersion;
|
||||
in linuxPackagesFor (kernel.override {
|
||||
structuredExtraConfig = import ../os-specific/linux/kernel/hardened/config.nix {
|
||||
inherit lib;
|
||||
inherit (kernel) version;
|
||||
inherit lib version;
|
||||
};
|
||||
argsOverride = {
|
||||
inherit version;
|
||||
src = fetchurl {
|
||||
url = "mirror://kernel/linux/kernel/v${major}.x/linux-${version}.tar.xz";
|
||||
inherit sha256;
|
||||
};
|
||||
};
|
||||
kernelPatches = kernel.kernelPatches ++ [
|
||||
kernelPatches.hardened.${kernel.meta.branch}
|
||||
];
|
||||
modDirVersionArg = kernel.modDirVersion + (kernelPatches.hardened.${kernel.meta.branch}).extra;
|
||||
modDirVersionArg = modDirVersion' + (kernelPatches.hardened.${kernel.meta.branch}).extra;
|
||||
isHardened = true;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user