[arch-projects] [initscripts] [PATCH 1/2] Make hwclock --adjust as well as --systohc optional (FS#13684)
From db75b4636156aea2a65b600c0d4e65e08de41138 Mon Sep 17 00:00:00 2001 From: Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> Date: Mon, 28 Mar 2011 19:06:05 +0200 Subject: [PATCH 1/2] Make hwclock --adjust as well as --systohc optional (FS#13684) --- adjtime.cron | 2 +- hwclock | 39 +++++++++++++++++++++++++++++++++++++++ install.sh | 2 +- rc.conf | 5 ++++- rc.shutdown | 13 ++----------- rc.sysinit | 27 +++------------------------ 6 files changed, 50 insertions(+), 38 deletions(-) create mode 100755 hwclock 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 diff --git a/hwclock b/hwclock new file mode 100755 index 0000000..d9de9e1 --- /dev/null +++ b/hwclock @@ -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 diff --git a/install.sh b/install.sh index 2b2cbbc..8e6c3d7 100755 --- a/install.sh +++ b/install.sh @@ -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 diff --git a/rc.conf b/rc.conf index d2b0517..0b0a818 100644 --- a/rc.conf +++ b/rc.conf @@ -105,4 +105,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 0acca49..fef1117 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 diff --git a/rc.sysinit b/rc.sysinit index 9797611..e949180 100755 --- a/rc.sysinit +++ b/rc.sysinit @@ -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" @@ -398,11 +382,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 -- 1.7.0.3
From fe274b2b9f1af47ad38d09245b3c70a10cb3cd1a Mon Sep 17 00:00:00 2001 From: Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> Date: Mon, 28 Mar 2011 19:07:34 +0200 Subject: [PATCH 2/2] Change hardware clock default to UTC --- rc.conf | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/rc.conf b/rc.conf index 0b0a818..02bb1d7 100644 --- a/rc.conf +++ b/rc.conf @@ -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= -- 1.7.0.3
Hi Kurt, I was about to test and push your patches, but they do not apply (I think your mailreader messed them up as there are at least some linebreaks that should not have been there...), could you resend using git send-email (as explained by Thomas in a recent mail), or give me a public repository I can pull from (the latter would probably be better)? Cheers, Tom On Mon, Mar 28, 2011 at 7:14 PM, Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> wrote:
From db75b4636156aea2a65b600c0d4e65e08de41138 Mon Sep 17 00:00:00 2001 From: Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> Date: Mon, 28 Mar 2011 19:06:05 +0200 Subject: [PATCH 1/2] Make hwclock --adjust as well as --systohc optional (FS#13684)
--- adjtime.cron | 2 +- hwclock | 39 +++++++++++++++++++++++++++++++++++++++ install.sh | 2 +- rc.conf | 5 ++++- rc.shutdown | 13 ++----------- rc.sysinit | 27 +++------------------------ 6 files changed, 50 insertions(+), 38 deletions(-) create mode 100755 hwclock
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 diff --git a/hwclock b/hwclock new file mode 100755 index 0000000..d9de9e1 --- /dev/null +++ b/hwclock @@ -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 diff --git a/install.sh b/install.sh index 2b2cbbc..8e6c3d7 100755 --- a/install.sh +++ b/install.sh @@ -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
diff --git a/rc.conf b/rc.conf index d2b0517..0b0a818 100644 --- a/rc.conf +++ b/rc.conf @@ -105,4 +105,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 0acca49..fef1117 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
diff --git a/rc.sysinit b/rc.sysinit index 9797611..e949180 100755 --- a/rc.sysinit +++ b/rc.sysinit @@ -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" @@ -398,11 +382,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 -- 1.7.0.3
_______________________________________________ arch-projects mailing list arch-projects@archlinux.org http://mailman.archlinux.org/mailman/listinfo/arch-projects
Am 30.03.2011 15:26, schrieb Tom Gundersen:
Hi Kurt,
I was about to test and push your patches, but they do not apply (I think your mailreader messed them up as there are at least some linebreaks that should not have been there...), could you resend using git send-email (as explained by Thomas in a recent mail), or give me a public repository I can pull from (the latter would probably be better)?
Cheers,
Tom
On Mon, Mar 28, 2011 at 7:14 PM, Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> wrote:
From db75b4636156aea2a65b600c0d4e65e08de41138 Mon Sep 17 00:00:00 2001 From: Kurt J. Bosch<kjb-temp-2009@alpenjodel.de> Date: Mon, 28 Mar 2011 19:06:05 +0200 Subject: [PATCH 1/2] Make hwclock --adjust as well as --systohc optional (FS#13684)
--- adjtime.cron | 2 +- hwclock | 39 +++++++++++++++++++++++++++++++++++++++ install.sh | 2 +- rc.conf | 5 ++++- rc.shutdown | 13 ++----------- rc.sysinit | 27 +++------------------------ 6 files changed, 50 insertions(+), 38 deletions(-) create mode 100755 hwclock
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 diff --git a/hwclock b/hwclock new file mode 100755 index 0000000..d9de9e1 --- /dev/null +++ b/hwclock @@ -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 diff --git a/install.sh b/install.sh index 2b2cbbc..8e6c3d7 100755 --- a/install.sh +++ b/install.sh @@ -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
diff --git a/rc.conf b/rc.conf index d2b0517..0b0a818 100644 --- a/rc.conf +++ b/rc.conf @@ -105,4 +105,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 0acca49..fef1117 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
diff --git a/rc.sysinit b/rc.sysinit index 9797611..e949180 100755 --- a/rc.sysinit +++ b/rc.sysinit @@ -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" @@ -398,11 +382,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 -- 1.7.0.3
_______________________________________________ arch-projects mailing list arch-projects@archlinux.org http://mailman.archlinux.org/mailman/listinfo/arch-projects
I'm sorry, please try these:
http://pastebin.com/pb3Kf7as http://pastebin.com/adHNkLby -- Kurt
On Wed, Mar 30, 2011 at 3:44 PM, Kurt J. Bosch <kjb-temp-2009@alpenjodel.de> wrote:
I'm sorry, please try these:
Thanks. Applied and pushed :-) Cheers, Tom
participants (2)
-
Kurt J. Bosch
-
Tom Gundersen