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.
This commit is contained in:
parent
0676d69172
commit
6dfbef0ae2
@ -18,26 +18,23 @@ in
|
|||||||
default = false;
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
If enabled, NixOS will set up a kernel that will
|
If enabled, NixOS will set up a kernel that will
|
||||||
boot on crash, and leave the user to a stage1 debug1devices
|
boot on crash, and leave the user in systemd rescue
|
||||||
interactive shell to be able to save the crashed kernel dump.
|
to be able to save the crashed kernel dump at
|
||||||
|
/proc/vmcore.
|
||||||
It also activates the NMI watchdog.
|
It also activates the NMI watchdog.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
kernelPackages = mkOption {
|
reservedMemory = mkOption {
|
||||||
type = types.package;
|
default = "128M";
|
||||||
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";
|
|
||||||
description = ''
|
description = ''
|
||||||
This will override the boot.kernelPackages, and will add some
|
The amount of memory reserved for the crashdump kernel.
|
||||||
kernel configuration parameters for the crash dump to work.
|
If you choose a too high value, dmesg will mention
|
||||||
|
"crashkernel reservation failed".
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
kernelParams = mkOption {
|
kernelParams = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [ "debug1devices" ];
|
default = [ "1" "boot.shell_on_fail" ];
|
||||||
description = ''
|
description = ''
|
||||||
Parameters that will be passed to the kernel kexec-ed on crash.
|
Parameters that will be passed to the kernel kexec-ed on crash.
|
||||||
'';
|
'';
|
||||||
@ -51,29 +48,29 @@ in
|
|||||||
config = mkIf crashdump.enable {
|
config = mkIf crashdump.enable {
|
||||||
boot = {
|
boot = {
|
||||||
postBootCommands = ''
|
postBootCommands = ''
|
||||||
|
echo "loading crashdump kernel...";
|
||||||
${pkgs.kexectools}/sbin/kexec -p /run/current-system/kernel \
|
${pkgs.kexectools}/sbin/kexec -p /run/current-system/kernel \
|
||||||
--initrd=/run/current-system/initrd \
|
--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 = [
|
kernelParams = [
|
||||||
"crashkernel=64M"
|
"crashkernel=${crashdump.reservedMemory}"
|
||||||
"nmi_watchdog=panic"
|
"nmi_watchdog=panic"
|
||||||
"softlockup_panic=1"
|
"softlockup_panic=1"
|
||||||
"idle=poll"
|
"idle=poll"
|
||||||
];
|
];
|
||||||
kernelPackages = mkOverride 50 (crashdump.kernelPackages // {
|
kernelPatches = [ {
|
||||||
kernel = crashdump.kernelPackages.kernel.override
|
name = "crashdump-config";
|
||||||
(attrs: {
|
patch = null;
|
||||||
extraConfig = (optionalString (attrs ? extraConfig) attrs.extraConfig) +
|
extraConfig = ''
|
||||||
''
|
|
||||||
CRASH_DUMP y
|
CRASH_DUMP y
|
||||||
DEBUG_INFO y
|
DEBUG_INFO y
|
||||||
PROC_VMCORE y
|
PROC_VMCORE y
|
||||||
LOCKUP_DETECTOR y
|
LOCKUP_DETECTOR y
|
||||||
HARDLOCKUP_DETECTOR y
|
HARDLOCKUP_DETECTOR y
|
||||||
'';
|
'';
|
||||||
});
|
} ];
|
||||||
});
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user