From cba2444d11ca4d2a8a335a752568c5fe09a90390 Mon Sep 17 00:00:00 2001 From: "Ricardo M. Correia" Date: Tue, 21 Jan 2014 17:25:49 +0100 Subject: [PATCH] nixos/memtest: Allow user to specify memtest86 boot parameters --- .../installer/cd-dvd/installation-cd-base.nix | 2 +- .../system/boot/loader/grub/memtest.nix | 41 +++++++++++++++---- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/nixos/modules/installer/cd-dvd/installation-cd-base.nix b/nixos/modules/installer/cd-dvd/installation-cd-base.nix index 2a28131c28c..07c054b391a 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-base.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-base.nix @@ -36,7 +36,7 @@ with pkgs.lib; isoImage.makeEfiBootable = true; # Add Memtest86+ to the CD. - boot.loader.grub.memtest86 = true; + boot.loader.grub.memtest86.enable = true; # Get a console as soon as the initrd loads fbcon on EFI boot boot.initrd.kernelModules = [ "fbcon" ]; diff --git a/nixos/modules/system/boot/loader/grub/memtest.nix b/nixos/modules/system/boot/loader/grub/memtest.nix index 80c1a160cfd..3745b405712 100644 --- a/nixos/modules/system/boot/loader/grub/memtest.nix +++ b/nixos/modules/system/boot/loader/grub/memtest.nix @@ -6,28 +6,51 @@ with pkgs.lib; let memtest86 = pkgs.memtest86plus; + cfg = config.boot.loader.grub.memtest86; + params = concatStringsSep " " cfg.params; in { options = { - boot.loader.grub.memtest86 = mkOption { - default = false; - type = types.bool; - description = '' - Make Memtest86+, a memory testing program, available from the - GRUB boot menu. - ''; + boot.loader.grub.memtest86 = { + + enable = mkOption { + default = false; + type = types.bool; + description = '' + Make Memtest86+, a memory testing program, available from the + GRUB boot menu. + ''; + }; + + params = mkOption { + default = []; + example = [ "console=ttyS0,115200" ]; + type = types.listOf types.str; + description = '' + Parameters added to the Memtest86+ command line. As of memtest86+ 5.01 + the following list of (apparently undocumented) parameters are + accepted: + console=... -- set up a serial console. + btrace -- enable boot trace. + maxcpus=... -- limit number of CPUs. + onepass -- run one pass and exit if there are no errors. + tstlist=... -- list of tests to run. + cpumask=... -- set a CPU mask, to select CPUs to use for testing. + ''; + }; + }; }; - config = mkIf config.boot.loader.grub.memtest86 { + config = mkIf cfg.enable { boot.loader.grub.extraEntries = if config.boot.loader.grub.version == 2 then '' menuentry "Memtest86+" { - linux16 @bootRoot@/memtest.bin + linux16 @bootRoot@/memtest.bin ${params} } '' else