diff --git a/boot/boot-stage-2-init.sh b/boot/boot-stage-2-init.sh index 0ec0807e853..2e19f23cb85 100644 --- a/boot/boot-stage-2-init.sh +++ b/boot/boot-stage-2-init.sh @@ -115,7 +115,10 @@ export MODULE_DIR=@kernel@/lib/modules/ @shell@ @bootLocal@ -# Start Upstart's init. +# Start Upstart's init. We start it through the +# /var/run/current-system symlink indirection so that we can upgrade +# init in a running system by changing the symlink and sending init a +# HUP signal. export UPSTART_CFG_DIR=/etc/event.d setPath "@upstartPath@" -exec @upstart@/sbin/init -v +exec /var/run/current-system/upstart/sbin/init -v diff --git a/system/system.nix b/system/system.nix index b9fbefff44f..05e131f5dcd 100644 --- a/system/system.nix +++ b/system/system.nix @@ -313,7 +313,7 @@ rec { name = "system"; builder = ./system.sh; switchToConfiguration = ./switch-to-configuration.sh; - inherit (pkgs) grub coreutils gnused gnugrep diffutils findutils; + inherit (pkgs) grub coreutils gnused gnugrep diffutils findutils upstart; grubDevice = config.get ["boot" "grubDevice"]; kernelParams = (config.get ["boot" "kernelParams"]) ++ diff --git a/system/system.sh b/system/system.sh index 0df4273e5a2..080ad1c13c7 100644 --- a/system/system.sh +++ b/system/system.sh @@ -9,6 +9,7 @@ ln -s $initrd $out/initrd ln -s $activateConfiguration $out/activate ln -s $etc/etc $out/etc ln -s $systemPath $out/sw +ln -s $upstart $out/upstart echo "$kernelParams" > $out/kernel-params echo "$configurationName" > $out/configuration-name