Saving time with Software Clock
OpenRC has it's own method for saving the clock called "swclock", that's what I went with. Normally swclock simply changes a symlink ie /sbin/openrc-run -> /sbin/openrc when it saves the time.
However this when restored will have the time that the package was put together, because Alpine Linux unpacks packages on boot, then moves the provisioned configs from apkprov. You will need to make these changes to specify a file.
/etc/init.d/swclock
--- swclock.old +++ swclock @@ -3,6 +3,7 @@ # Released under the 2-clause BSD license. description="Sets the local clock to the mtime of a given file." +clock_file=${clock_file:-/etc/rc.conf} depend() { @@ -17,7 +18,7 @@ { ebegin "Setting the local clock based on last shutdown time" if ! swclock 2> /dev/null; then - swclock --warn /sbin/openrc-run + swclock --warn $clock_file fi eend $? } @@ -25,6 +26,6 @@ stop() { ebegin "Saving the shutdown time" - swclock --save + swclock --save $clock_file eend $? }
/etc/conf.d/swclock
clock_file="/etc/swclock_saved_time"
Then touch the file:
touch /etc/swclock_saved_time
and finally add swclock to the boot run level
rc-update add swclock boot
You will also need to include the new init script in your apkprov, otherwise it will be overwritten with the one from the OpenRC package.
lbu include /etc/init.d/swclock