Unverified Commit ea6e5c07 authored by Robert Hensing's avatar Robert Hensing Committed by GitHub
Browse files

Merge pull request #246775 from yaxitech/no-kernel-params-wo-kernel

nixos/toplevel: only pass `kernelParams` if `boot.kernel.enable`
parents dcafb07e fbebce61
Loading
Loading
Loading
Loading
+1 −31
Original line number Diff line number Diff line
@@ -4,38 +4,9 @@ with lib;

let
  systemBuilder =
    let
      kernelPath = "${config.boot.kernelPackages.kernel}/" +
        "${config.system.boot.loader.kernelFile}";
      initrdPath = "${config.system.build.initialRamdisk}/" +
        "${config.system.boot.loader.initrdFile}";
    in ''
    ''
      mkdir $out

      # Containers don't have their own kernel or initrd.  They boot
      # directly into stage 2.
      ${optionalString config.boot.kernel.enable ''
        if [ ! -f ${kernelPath} ]; then
          echo "The bootloader cannot find the proper kernel image."
          echo "(Expecting ${kernelPath})"
          false
        fi

        ln -s ${kernelPath} $out/kernel
        ln -s ${config.system.modulesTree} $out/kernel-modules
        ${optionalString (config.hardware.deviceTree.package != null) ''
          ln -s ${config.hardware.deviceTree.package} $out/dtbs
        ''}

        echo -n "$kernelParams" > $out/kernel-params

        ln -s ${initrdPath} $out/initrd

        ln -s ${config.system.build.initialRamdiskSecretAppender}/bin/append-initrd-secrets $out

        ln -s ${config.hardware.firmware}/lib/firmware $out/firmware
      ''}

      ${if config.boot.initrd.systemd.enable then ''
        cp ${config.system.build.bootStage2} $out/prepare-root
        substituteInPlace $out/prepare-root --subst-var-by systemConfig $out
@@ -83,7 +54,6 @@ let

    systemd = config.systemd.package;

    kernelParams = config.boot.kernelParams;
    nixosLabel = config.system.nixos.label;

    inherit (config.system) extraDependencies;
+32 −0
Original line number Diff line number Diff line
@@ -309,6 +309,38 @@ in

        system.modulesTree = [ kernel ] ++ config.boot.extraModulePackages;

        # Not required for, e.g., containers as they don't have their own kernel or initrd.
        # They boot directly into stage 2.
        system.systemBuilderArgs.kernelParams = config.boot.kernelParams;
        system.systemBuilderCommands =
          let
            kernelPath = "${config.boot.kernelPackages.kernel}/" +
              "${config.system.boot.loader.kernelFile}";
            initrdPath = "${config.system.build.initialRamdisk}/" +
              "${config.system.boot.loader.initrdFile}";
          in
          ''
            if [ ! -f ${kernelPath} ]; then
              echo "The bootloader cannot find the proper kernel image."
              echo "(Expecting ${kernelPath})"
              false
            fi

            ln -s ${kernelPath} $out/kernel
            ln -s ${config.system.modulesTree} $out/kernel-modules
            ${optionalString (config.hardware.deviceTree.package != null) ''
              ln -s ${config.hardware.deviceTree.package} $out/dtbs
            ''}

            echo -n "$kernelParams" > $out/kernel-params

            ln -s ${initrdPath} $out/initrd

            ln -s ${config.system.build.initialRamdiskSecretAppender}/bin/append-initrd-secrets $out

            ln -s ${config.hardware.firmware}/lib/firmware $out/firmware
          '';

        # Implement consoleLogLevel both in early boot and using sysctl
        # (so you don't need to reboot to have changes take effect).
        boot.kernelParams =