about summary refs log tree commit diff
path: root/nixos/modules/misc
diff options
context:
space:
mode:
authorsymphorien <symphorien@users.noreply.github.com>2017-10-25 22:00:52 +0200
committerJoachim F <joachifm@users.noreply.github.com>2017-10-25 20:00:52 +0000
commit6dfbef0ae2f7e31e2821078c1dba1780af1e3863 (patch)
tree9b327ae79f17082f52f88fd500d6fb0466f5e207 /nixos/modules/misc
parent0676d691724b2ceebde17377fddf9bc7fcf8f5b0 (diff)
downloadnixlib-6dfbef0ae2f7e31e2821078c1dba1780af1e3863.tar
nixlib-6dfbef0ae2f7e31e2821078c1dba1780af1e3863.tar.gz
nixlib-6dfbef0ae2f7e31e2821078c1dba1780af1e3863.tar.bz2
nixlib-6dfbef0ae2f7e31e2821078c1dba1780af1e3863.tar.lz
nixlib-6dfbef0ae2f7e31e2821078c1dba1780af1e3863.tar.xz
nixlib-6dfbef0ae2f7e31e2821078c1dba1780af1e3863.tar.zst
nixlib-6dfbef0ae2f7e31e2821078c1dba1780af1e3863.zip
nixos/crashdump: fix evaluation. (#30415)
The module would fail to evaluate:
```The option value `boot.crashDump.kernelPackages' in ... is not a package.```

Removed the option boot.crashDump.kernelPackage in favor of using
boot.kernelPatches which automatically chooses the same kernel version
as boot.kernelPackage instead of overriding it.

Added option boot.crashDump.reservedMemory to customized crash kernel
memory.

Changed the default of boot.crashDump.kernelParams as the current one
seemed to have no effect.
Diffstat (limited to 'nixos/modules/misc')
-rw-r--r--nixos/modules/misc/crashdump.nix39
1 files changed, 18 insertions, 21 deletions
diff --git a/nixos/modules/misc/crashdump.nix b/nixos/modules/misc/crashdump.nix
index 5ef4b7781bd0..6e0b49fa9af0 100644
--- a/nixos/modules/misc/crashdump.nix
+++ b/nixos/modules/misc/crashdump.nix
@@ -18,26 +18,23 @@ in
           default = false;
           description = ''
             If enabled, NixOS will set up a kernel that will
-            boot on crash, and leave the user to a stage1 debug1devices
-            interactive shell to be able to save the crashed kernel dump.
+            boot on crash, and leave the user in systemd rescue
+            to be able to save the crashed kernel dump at
+            /proc/vmcore.
             It also activates the NMI watchdog.
           '';
         };
-        kernelPackages = mkOption {
-          type = types.package;
-          default = pkgs.linuxPackages;
-          # We don't want to evaluate all of linuxPackages for the manual
-          # - some of it might not even evaluate correctly.
-          defaultText = "pkgs.linuxPackages";
-          example = literalExample "pkgs.linuxPackages_2_6_25";
+        reservedMemory = mkOption {
+          default = "128M";
           description = ''
-            This will override the boot.kernelPackages, and will add some
-            kernel configuration parameters for the crash dump to work.
+            The amount of memory reserved for the crashdump kernel.
+            If you choose a too high value, dmesg will mention
+            "crashkernel reservation failed".
           '';
         };
         kernelParams = mkOption {
           type = types.listOf types.str;
-          default = [ "debug1devices" ];
+          default = [ "1" "boot.shell_on_fail" ];
           description = ''
             Parameters that will be passed to the kernel kexec-ed on crash.
           '';
@@ -51,29 +48,29 @@ in
   config = mkIf crashdump.enable {
     boot = {
       postBootCommands = ''
+        echo "loading crashdump kernel...";
         ${pkgs.kexectools}/sbin/kexec -p /run/current-system/kernel \
         --initrd=/run/current-system/initrd \
-        --append="init=$(readlink -f /run/current-system/init) system=$(readlink -f /run/current-system) irqpoll maxcpus=1 reset_devices ${kernelParams}" --reset-vga --console-vga
+        --reset-vga --console-vga \
+        --command-line="systemConfig=$(readlink -f /run/current-system) init=$(readlink -f /run/current-system/init) irqpoll maxcpus=1 reset_devices ${kernelParams}"
       '';
       kernelParams = [
-       "crashkernel=64M"
+       "crashkernel=${crashdump.reservedMemory}"
        "nmi_watchdog=panic"
        "softlockup_panic=1"
        "idle=poll"
       ];
-      kernelPackages = mkOverride 50 (crashdump.kernelPackages // {
-        kernel = crashdump.kernelPackages.kernel.override 
-          (attrs: {
-            extraConfig = (optionalString (attrs ? extraConfig) attrs.extraConfig) +
-              ''
+      kernelPatches = [ {
+        name = "crashdump-config";
+        patch = null;
+        extraConfig = ''
                 CRASH_DUMP y
                 DEBUG_INFO y
                 PROC_VMCORE y
                 LOCKUP_DETECTOR y
                 HARDLOCKUP_DETECTOR y
               '';
-          });
-      });
+        } ];
     };
   };
 }