Author: viric
Date: Sat Mar 17 22:21:37 2012
New Revision: 33219
URL: https://nixos.org/websvn/nix/?rev=33219&sc=1

Log:
Adding a module to get crash dumps using kexec.

Added:
   nixos/trunk/modules/misc/crashdump.nix
Modified:
   nixos/trunk/modules/module-list.nix

Added: nixos/trunk/modules/misc/crashdump.nix
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixos/trunk/modules/misc/crashdump.nix      Sat Mar 17 22:21:37 2012        
(r33219)
@@ -0,0 +1,64 @@
+{pkgs, config, ...}:
+
+with pkgs.lib;
+
+let
+  crashdump = config.boot.crashDump;
+in
+###### interface
+{
+  options = {
+    boot = {
+      crashDump = {
+        enable = mkOption {
+          default = false;
+          example = true;
+          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.
+            It also activates the NMI watchdog.
+          '';
+        };
+        kernelPackages = mkOption {
+          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 = "pkgs.linuxPackages_2_6_25";
+          description = ''
+            This will override the boot.kernelPackages, and will add some
+            kernel configuration parameters for the crash dump to work.
+          '';
+        };
+      };
+    };
+  };
+
+###### implementation
+
+  config = mkIf crashdump.enable {
+    boot = {
+      postBootCommands = ''
+        ${pkgs.kexectools}/sbin/kexec -p /var/run/current-system/kernel \
+        --initrd=/var/run/current-system/initrd \
+        --append="init=$(readlink -f /var/run/current-system/init) 
system=$(readlink -f /var/run/current-system) debug1devices irqpoll maxcpus=1 
reset_devices" --reset-vga --console-vga
+      '';
+      kernelParams = [
+       "crashkernel=64M"
+       "nmi_watchdog=1"
+      ];
+      kernelPackages = mkOverride 200 (crashdump.kernelPackages // {
+        kernel = crashdump.kernelPackages.kernel.override 
+          (attrs: {
+            extraConfig = (optionalString (attrs ? extraConfig) 
attrs.extraConfig) +
+              ''
+                CRASH_DUMP y
+                DEBUG_INFO y
+                PROC_VMCORE y
+              '';
+          });
+      });
+    };
+  };
+}

Modified: nixos/trunk/modules/module-list.nix
==============================================================================
--- nixos/trunk/modules/module-list.nix Sat Mar 17 22:03:15 2012        (r33218)
+++ nixos/trunk/modules/module-list.nix Sat Mar 17 22:21:37 2012        (r33219)
@@ -30,6 +30,7 @@
   ./installer/tools/tools.nix
   ./misc/assertions.nix
   ./misc/check-config.nix
+  ./misc/crashdump.nix
   ./misc/deployment.nix
   ./misc/ids.nix
   ./misc/locate.nix
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to