nixos/testing: Fix output of systemd messages
Regression introduced byd4468bedb5
. No systemd messages are shown anymore during VM test runs, which is not very helpful if you want to find out about failures. There is a bit of a conflict between testing and the change that introduced the regression. While the mentioned commit makes sure that the primary console is tty0 for virtualisation.graphics = false, our VM tests need to have the serial console as primary console. So in order to support both, I added a new virtualisation.qemu.consoles option, which allows to specify those options using the module system. The default of this option is to use the changes that were introduced and in test-instrumentation.nix we use only the serial console the same way as before. For test-instrumentation.nix I didn't add a baudrate to the serial console because I can't find a reason on top of my head why it should need it. There also wasn't a reason stated when that was introduced in7499e4a5b9
. Signed-off-by: aszlig <aszlig@nix.build> Cc: @flokli, @dezgeg, @edolstra
This commit is contained in:
parent
e659c32448
commit
fb9f5e4a03
@ -58,6 +58,9 @@ in
|
|||||||
systemd.services."serial-getty@${qemuSerialDevice}".enable = false;
|
systemd.services."serial-getty@${qemuSerialDevice}".enable = false;
|
||||||
systemd.services."serial-getty@hvc0".enable = false;
|
systemd.services."serial-getty@hvc0".enable = false;
|
||||||
|
|
||||||
|
# Only use a serial console, no TTY.
|
||||||
|
virtualisation.qemu.consoles = [ qemuSerialDevice ];
|
||||||
|
|
||||||
boot.initrd.preDeviceCommands =
|
boot.initrd.preDeviceCommands =
|
||||||
''
|
''
|
||||||
echo 600 > /proc/sys/kernel/hung_task_timeout_secs
|
echo 600 > /proc/sys/kernel/hung_task_timeout_secs
|
||||||
|
@ -25,10 +25,7 @@ let
|
|||||||
|
|
||||||
qemuGraphics = lib.optionalString (!cfg.graphics) "-nographic";
|
qemuGraphics = lib.optionalString (!cfg.graphics) "-nographic";
|
||||||
|
|
||||||
# enable both serial console and tty0. select preferred console (last one) based on cfg.graphics
|
consoles = lib.concatMapStringsSep " " (c: "console=${c}") cfg.qemu.consoles;
|
||||||
kernelConsoles = let
|
|
||||||
consoles = [ "console=${qemuSerialDevice},115200n8" "console=tty0" ];
|
|
||||||
in lib.concatStringsSep " " (if cfg.graphics then consoles else reverseList consoles);
|
|
||||||
|
|
||||||
# XXX: This is very ugly and in the future we really should use attribute
|
# XXX: This is very ugly and in the future we really should use attribute
|
||||||
# sets to build ALL of the QEMU flags instead of this mixed mess of Nix
|
# sets to build ALL of the QEMU flags instead of this mixed mess of Nix
|
||||||
@ -111,7 +108,7 @@ let
|
|||||||
${mkDiskIfaceDriveFlag "0" "file=$NIX_DISK_IMAGE,cache=writeback,werror=report"} \
|
${mkDiskIfaceDriveFlag "0" "file=$NIX_DISK_IMAGE,cache=writeback,werror=report"} \
|
||||||
-kernel ${config.system.build.toplevel}/kernel \
|
-kernel ${config.system.build.toplevel}/kernel \
|
||||||
-initrd ${config.system.build.toplevel}/initrd \
|
-initrd ${config.system.build.toplevel}/initrd \
|
||||||
-append "$(cat ${config.system.build.toplevel}/kernel-params) init=${config.system.build.toplevel}/init regInfo=${regInfo}/registration ${kernelConsoles} $QEMU_KERNEL_PARAMS" \
|
-append "$(cat ${config.system.build.toplevel}/kernel-params) init=${config.system.build.toplevel}/init regInfo=${regInfo}/registration ${consoles} $QEMU_KERNEL_PARAMS" \
|
||||||
''} \
|
''} \
|
||||||
$extraDisks \
|
$extraDisks \
|
||||||
${qemuGraphics} \
|
${qemuGraphics} \
|
||||||
@ -336,6 +333,23 @@ in
|
|||||||
description = "Options passed to QEMU.";
|
description = "Options passed to QEMU.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
consoles = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = let
|
||||||
|
consoles = [ "${qemuSerialDevice},115200n8" "tty0" ];
|
||||||
|
in if cfg.graphics then consoles else reverseList consoles;
|
||||||
|
example = [ "console=tty1" ];
|
||||||
|
description = ''
|
||||||
|
The output console devices to pass to the kernel command line via the
|
||||||
|
<literal>console</literal> parameter, the primary console is the last
|
||||||
|
item of this list.
|
||||||
|
|
||||||
|
By default it enables both serial console and
|
||||||
|
<literal>tty0</literal>. The preferred console (last one) is based on
|
||||||
|
the value of <option>virtualisation.graphics</option>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
networkingOptions =
|
networkingOptions =
|
||||||
mkOption {
|
mkOption {
|
||||||
default = [
|
default = [
|
||||||
|
Loading…
Reference in New Issue
Block a user