[Boot/Packages/Kernel] Add kvdo kernel module

This commit is contained in:
Antoine Viallon 2022-05-03 23:46:56 +02:00
parent 6b5f69bece
commit c25820247c
Signed by: aviallon
GPG key ID: 186FC35EDEB25716
3 changed files with 59 additions and 0 deletions

View file

@ -60,6 +60,7 @@ in
x32abi = {
enable = mkEnableOption "X32 kernel ABI";
};
kvdo.enable = mkEnableOption "dm-kvdo kernel module";
efi = mkOption rec {
description = "Use EFI bootloader";
default = builtins.pathExists "/sys/firmware/efi";
@ -114,6 +115,9 @@ in
kernelPatches = concatLists [
(optional cfg.x32abi.enable customKernelPatches.enableX32ABI)
];
extraModulePackages = concatLists [
(optional cfg.kvdo.enable pkgs.kvdo)
];
loader.grub.enable = cfg.useGrub || (!cfg.efi);
loader.grub = {

View file

@ -127,6 +127,8 @@ in
# chromium = self.ungoogled-chromium;
myFirefox = (import ./packages/firefox.nix { pkgs = self; inherit lib; });
kvdo = config.boot.kernelPackages.callPackage ./packages/kvdo.nix { };
})
];

53
packages/kvdo.nix Normal file
View file

@ -0,0 +1,53 @@
{ stdenv, lib, fetchFromGitHub, kernel }:
stdenv.mkDerivation rec {
pname = "kvdo";
_tag = "8.1.1.371";
version = "${_tag}-${kernel.version}";
src = fetchFromGitHub {
owner = "dm-vdo";
repo = "kvdo";
rev = "${_tag}";
sha256 = "sha256:1nwprbyql5vzhhgl2zmgnp5ax50ys7crgq8ff11zr8fhcna4fmmw";
};
nativeBuildInputs = kernel.moduleBuildDependencies;
KERNEL_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
enableParallelBuilding = true;
dontConfigure = true;
MAKEFLAGS = with lib; concatStringsSep " " (
[]
++ optional enableParallelBuilding "-j$(nproc)"
++ optional enableParallelBuilding "-l$(nproc)"
);
buildPhase = ''
BASE_DIR=$(pwd)
make -C ${KERNEL_DIR} M=$BASE_DIR/uds modules
make -C ${KERNEL_DIR} M=$BASE_DIR/vdo \
KBUILD_EXTRA_SYMBOLS=$BASE_DIR/uds/Module.symvers modules
'';
installPhase = ''
modDir=$out/lib/modules/${kernel.modDirVersion}/kernel/drivers/block/
mkdir -p $modDir
for d in uds vdo; do
mv -v $d/*.ko $modDir/
done
'';
hardeningDisable = [ "pic" ];
meta = with lib; {
description = "A pair of kernel modules which provide pools of deduplicated and/or compressed block storage";
homepage = "https://github.com/dm-vdo/kvdo";
license = licenses.gpl2Only;
# maintainers = [ maintainers.makefu ];
platforms = platforms.linux;
};
}