Adding a module to get crash dumps using kexec.

svn path=/nixos/trunk/; revision=33219
wip/yesman
Lluís Batlle i Rossell 12 years ago
parent ed436179e1
commit 876c655e61
  1. 64
      modules/misc/crashdump.nix
  2. 1
      modules/module-list.nix

@ -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
'';
});
});
};
};
}

@ -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

Loading…
Cancel
Save