forked from mirrors/nixpkgs
nixos/stage-2-init: Clean up legacy commands
We can perform most of the mkdir/ln/rm using systemd-tmpfiles instead which cleans up the script. /bin and /home are created by their activation script snippets usbfs is deprecated and unused. hwclock seems to be automatically executed by systemd on startup. The mkswap to prevent hibernation cycles seems to be executed by systemd as well since the provided regression tests succeeds.
This commit is contained in:
parent
bd87ad0cd0
commit
452102db8f
|
@ -12,10 +12,6 @@ for o in $(</proc/cmdline); do
|
||||||
# Show each command.
|
# Show each command.
|
||||||
set -x
|
set -x
|
||||||
;;
|
;;
|
||||||
resume=*)
|
|
||||||
set -- $(IFS==; echo $o)
|
|
||||||
resumeDevice=$2
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -72,46 +68,12 @@ if [ -n "@readOnlyStore@" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Provide a /etc/mtab.
|
|
||||||
install -m 0755 -d /etc
|
|
||||||
test -e /etc/fstab || touch /etc/fstab # to shut up mount
|
|
||||||
rm -f /etc/mtab* # not that we care about stale locks
|
|
||||||
ln -s /proc/mounts /etc/mtab
|
|
||||||
|
|
||||||
|
|
||||||
# More special file systems, initialise required directories.
|
|
||||||
[ -e /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb # UML doesn't have USB by default
|
|
||||||
install -m 01777 -d /tmp
|
|
||||||
install -m 0755 -d /var/{log,lib,db} /nix/var /etc/nixos/ \
|
|
||||||
/run/lock /home /bin # for the /bin/sh symlink
|
|
||||||
|
|
||||||
|
|
||||||
# Miscellaneous boot time cleanup.
|
|
||||||
rm -rf /var/run /var/lock
|
|
||||||
rm -f /etc/{group,passwd,shadow}.lock
|
|
||||||
|
|
||||||
|
|
||||||
# Also get rid of temporary GC roots.
|
|
||||||
rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots
|
|
||||||
|
|
||||||
|
|
||||||
# For backwards compatibility, symlink /var/run to /run, and /var/lock
|
|
||||||
# to /run/lock.
|
|
||||||
ln -s /run /var/run
|
|
||||||
ln -s /run/lock /var/lock
|
|
||||||
|
|
||||||
|
|
||||||
# Clear the resume device.
|
|
||||||
if test -n "$resumeDevice"; then
|
|
||||||
mkswap "$resumeDevice" || echo 'Failed to clear saved image.'
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Use /etc/resolv.conf supplied by systemd-nspawn, if applicable.
|
# Use /etc/resolv.conf supplied by systemd-nspawn, if applicable.
|
||||||
if [ -n "@useHostResolvConf@" ] && [ -e /etc/resolv.conf ]; then
|
if [ -n "@useHostResolvConf@" ] && [ -e /etc/resolv.conf ]; then
|
||||||
resolvconf -m 1000 -a host </etc/resolv.conf
|
resolvconf -m 1000 -a host </etc/resolv.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Log the script output to /dev/kmsg or /run/log/stage-2-init.log.
|
# Log the script output to /dev/kmsg or /run/log/stage-2-init.log.
|
||||||
# Only at this point are all the necessary prerequisites ready for these commands.
|
# Only at this point are all the necessary prerequisites ready for these commands.
|
||||||
exec {logOutFd}>&1 {logErrFd}>&2
|
exec {logOutFd}>&1 {logErrFd}>&2
|
||||||
|
@ -133,22 +95,9 @@ echo "running activation script..."
|
||||||
$systemConfig/activate
|
$systemConfig/activate
|
||||||
|
|
||||||
|
|
||||||
# Restore the system time from the hardware clock. We do this after
|
|
||||||
# running the activation script to be sure that /etc/localtime points
|
|
||||||
# at the current time zone.
|
|
||||||
if [ -e /dev/rtc ]; then
|
|
||||||
hwclock --hctosys
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Record the boot configuration.
|
# Record the boot configuration.
|
||||||
ln -sfn "$systemConfig" /run/booted-system
|
ln -sfn "$systemConfig" /run/booted-system
|
||||||
|
|
||||||
# Prevent the booted system from being garbage-collected. If it weren't
|
|
||||||
# a gcroot, if we were running a different kernel, switched system,
|
|
||||||
# and garbage collected all, we could not load kernel modules anymore.
|
|
||||||
ln -sfn /run/booted-system /nix/var/nix/gcroots/booted-system
|
|
||||||
|
|
||||||
|
|
||||||
# Run any user-specified commands.
|
# Run any user-specified commands.
|
||||||
@shell@ @postBootCommands@
|
@shell@ @postBootCommands@
|
||||||
|
|
|
@ -100,5 +100,22 @@ in
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /etc/nixos 0755 root root - -"
|
||||||
|
"d /nix/var 0755 root root - -"
|
||||||
|
"L+ /nix/var/nix/gcroots/booted-system 0755 root root - /run/booted-system"
|
||||||
|
"d /run/lock 0755 root root - -"
|
||||||
|
"d /var/db 0755 root root - -"
|
||||||
|
"L /etc/mtab - - - - ../proc/mounts"
|
||||||
|
"L /var/lock - - - - ../run/lock"
|
||||||
|
# Boot-time cleanup
|
||||||
|
"R! /etc/group.lock - - - - -"
|
||||||
|
"R! /etc/passwd.lock - - - - -"
|
||||||
|
"R! /etc/shadow.lock - - - - -"
|
||||||
|
"R! /etc/mtab* - - - - -"
|
||||||
|
"R! /nix/var/nix/gcroots/tmp - - - - -"
|
||||||
|
"R! /nix/var/nix/temproots - - - - -"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,6 +117,11 @@ in makeTest {
|
||||||
resume = create_named_machine("resume")
|
resume = create_named_machine("resume")
|
||||||
resume.start()
|
resume.start()
|
||||||
resume.succeed("grep 'not persisted to disk' /run/test/suspended")
|
resume.succeed("grep 'not persisted to disk' /run/test/suspended")
|
||||||
|
|
||||||
|
# Ensure we don't restore from hibernation when booting again
|
||||||
|
resume.crash()
|
||||||
|
resume.wait_for_unit("default.target")
|
||||||
|
resume.fail("grep 'not persisted to disk' /run/test/suspended")
|
||||||
'';
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue