Adding a module to get crash dumps using kexec.
svn path=/nixos/trunk/; revision=33219
This commit is contained in:
parent
ed436179e1
commit
876c655e61
64
modules/misc/crashdump.nix
Normal file
64
modules/misc/crashdump.nix
Normal file
@ -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…
Reference in New Issue
Block a user