summaryrefslogtreecommitdiffstats
path: root/nixos/modules/system
diff options
context:
space:
mode:
authorLinus Heckemann <git@sphalerite.org>2019-04-26 00:33:40 +0200
committerLinus Heckemann <git@sphalerite.org>2019-04-26 00:35:10 +0200
commit4d667685c24c3e99cc70156f3172d5ed5f2ceaa6 (patch)
treeef14dd1547213ff59094a07db239c1eca26bd955 /nixos/modules/system
parent2024421f047d43fa6e18893d595ec183be5fbdc0 (diff)
nixos/kexec: don't clobber existing kexec-loaded kernel
Diffstat (limited to 'nixos/modules/system')
-rw-r--r--nixos/modules/system/boot/kexec.nix3
1 files changed, 3 insertions, 0 deletions
diff --git a/nixos/modules/system/boot/kexec.nix b/nixos/modules/system/boot/kexec.nix
index 61f9c6d0e7eb..ecbeea74ab8e 100644
--- a/nixos/modules/system/boot/kexec.nix
+++ b/nixos/modules/system/boot/kexec.nix
@@ -13,6 +13,9 @@
path = [ pkgs.kexectools ];
script =
''
+ # Don't load the current system profile if we already have a kernel loaded
+ [[ 1 = "$(</sys/kernel/kexec_loaded)" ]] && exit
+
p=$(readlink -f /nix/var/nix/profiles/system)
if ! [ -d $p ]; then exit 1; fi
exec kexec --load $p/kernel --initrd=$p/initrd --append="$(cat $p/kernel-params) init=$p/init"