diff options
-rwxr-xr-x | adjtime.cron | 2 | ||||
-rwxr-xr-x | hwclock | 39 | ||||
-rwxr-xr-x | install.sh | 2 | ||||
-rw-r--r-- | rc.conf | 8 | ||||
-rwxr-xr-x | rc.shutdown | 13 | ||||
-rwxr-xr-x | rc.sysinit | 27 |
6 files changed, 52 insertions, 39 deletions
diff --git a/adjtime.cron b/adjtime.cron index a876506..dac8cea 100755 --- a/adjtime.cron +++ b/adjtime.cron @@ -10,6 +10,6 @@ case $HARDWARECLOCK in *) HWCLOCK_PARAMS="";; esac -if [[ $HWCLOCK_PARAMS ]]; then +if [[ $HWCLOCK_PARAMS && -f /var/run/daemons/hwclock ]]; then /sbin/hwclock $HWCLOCK_PARAMS fi @@ -0,0 +1,39 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +case $HARDWARECLOCK in + UTC) HWCLOCK_PARAMS="--utc";; + localtime) HWCLOCK_PARAMS="--localtime";; + *) HWCLOCK_PARAMS="";; +esac + +case "$1" in + start) + if [[ $HWCLOCK_PARAMS ]]; then + status "Adjusting Hardware Clock" \ + /sbin/hwclock --adjust + stat_busy "Setting System Clock" + /sbin/hwclock --hctosys $HWCLOCK_PARAMS || stat_die + stat_done + # Note: This also enables /etc/cron.hourly/adjtime + add_daemon hwclock + fi + ;; + stop) + if [[ $HWCLOCK_PARAMS ]]; then + stat_busy "Saving System Clock" + /sbin/hwclock --systohc $HWCLOCK_PARAMS || stat_die + stat_done + fi + rm_daemon hwclock + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac @@ -15,7 +15,7 @@ done install -D -m755 adjtime.cron ${DESTDIR}/etc/cron.hourly/adjtime install -D -m644 functions ${DESTDIR}/etc/rc.d/functions || exit 1 -for i in network netfs; do +for i in hwclock network netfs; do install -D -m755 $i ${DESTDIR}/etc/rc.d/$i || exit 1 done @@ -11,6 +11,7 @@ # process. If set to 'no', the C locale will be used. # HARDWARECLOCK: set to "UTC" or "localtime", any other value will result # in the hardware clock being left untouched (useful for virtualization) +# Note: Using "localtime" is discouraged. # TIMEZONE: timezones are found in /usr/share/zoneinfo # KEYMAP: keymaps are found in /usr/share/kbd/keymaps # CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US) @@ -19,7 +20,7 @@ # LOCALE="en_US.UTF-8" DAEMON_LOCALE="no" -HARDWARECLOCK="localtime" +HARDWARECLOCK="UTC" TIMEZONE="Canada/Pacific" KEYMAP="us" CONSOLEFONT= @@ -105,4 +106,7 @@ NETWORK_PERSIST="no" # - prefix a daemon with a ! to disable it # - prefix a daemon with a @ to start it up in the background # -DAEMONS=(syslog-ng network netfs crond) +# If something other takes care of your hardware clock (ntpd, dual-boot...) +# you should disable 'hwclock' here. +# +DAEMONS=(hwclock syslog-ng network netfs crond) diff --git a/rc.shutdown b/rc.shutdown index 499459f..f588058 100755 --- a/rc.shutdown +++ b/rc.shutdown @@ -35,21 +35,12 @@ fi /bin/dd if=/dev/urandom of=$RANDOM_SEED count=1 bs=$POOL_SIZE &> /dev/null stat_done -stat_busy "Saving System Clock" if [[ $TIMEZONE && -e /usr/share/zoneinfo/$TIMEZONE ]]; then /bin/rm -f /etc/localtime - /bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime + status "Saving Time Zone" \ + /bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime fi -HWCLOCK_PARAMS="--systohc" -case $HARDWARECLOCK in - UTC) HWCLOCK_PARAMS="$HWCLOCK_PARAMS --utc";; - localtime) HWCLOCK_PARAMS="$HWCLOCK_PARAMS --localtime";; - *) HWCLOCK_PARAMS="";; -esac -[[ $HWCLOCK_PARAMS ]] && /sbin/hwclock $HWCLOCK_PARAMS -stat_done - # removing psmouse module to fix some reboot issues on newer laptops /sbin/modprobe -r psmouse >/dev/null 2>&1 @@ -66,7 +66,7 @@ if [[ $HWCLOCK_PARAMS ]]; then # configured timezone. Any new timezone put in rc.conf is copied over at # a later time. # This does *NOT* take into account a time adjustment file as /var may not be - # mounted yet. A second set occurs later to match rc.conf. + # mounted yet. A second set may occur in rc.d/hwclock to match rc.conf. if [[ -f /etc/localtime ]]; then /sbin/hwclock $HWCLOCK_PARAMS --noadjfile fi @@ -304,28 +304,12 @@ status "Retrying failed UDev events" /sbin/udevadm trigger --action=add --type=f status "Activating Swap" /sbin/swapon -a -stat_busy "Configuring System Clock" if [[ $TIMEZONE && -e /usr/share/zoneinfo/$TIMEZONE ]]; then /bin/rm -f /etc/localtime - /bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime + status "Configuring Time Zone" \ + /bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime fi -clock_pid="" -if [[ $HWCLOCK_PARAMS ]]; then - # This time, we set the clock for real. Use the adjustment file now that - # /var will definitely be available, and then set the system clock once - # the hardware clock has been adjusted accordingly. The backgrounding magic - # is due to the fact that the second call to hwclock will almost always - # take ~1 second because of the clock granularity, and we might as well - # stay busy. - ( - /sbin/hwclock --adjust - /sbin/hwclock $HWCLOCK_PARAMS - ) & - clock_pid=$! -fi -stat_done - RANDOM_SEED=/var/lib/misc/random-seed if [[ -f $RANDOM_SEED ]]; then stat_busy "Initializing Random Seed" @@ -395,11 +379,6 @@ set_consolefont /bin/dmesg >| /var/log/dmesg.log -# final hwclock setting needs to be done at this point -if [[ $clock_pid ]]; then - wait $clock_pid -fi - run_hook sysinit_end # End of file |