[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#520763: hwclock: NVRAM flat battery sets date to 1904



Hi,

Mark Purcell hat am Sat 16. May, 14:57 (+1000) geschrieben:
> This is a common problem on powerpc ibook's once the NVRAM battery goes flat.
> 
> Apparently this has been discussed with upstream:
> https://bugs.launchpad.net/ubuntu/+source/gnome-session/+bug/23426/comments/18
> 
> Mark
> 
> 
> This patch is a quick hack, but you get the idea:
> 
> --- hwclockfirst.sh.orig        2009-05-16 14:26:54.000000000 +1000
> +++ hwclockfirst.sh     2009-05-16 14:23:11.000000000 +1000
> @@ -38,6 +38,12 @@
>      . /lib/lsb/init-functions
>      verbose_log_action_msg() { [ "$VERBOSE" = no ] || log_action_msg "$@"; }
> 
> +    if `/sbin/hwclock | /bin/grep -q 1904`; then
> +       log_warning_msg "NVRAM Battery Clock flat (date 1904)"
> +       log_action_msg "Setting hwclock date to 2009-5-16"
> +       hwclock --set --date 2009-5-16
> +    fi
> +

I would much more prefer to get prompted for the correct time, because
with a wrong time fsck fail due to the last fsck is in the future. But I
don't know how to do prompting in init scripts correctly.

And to guess if the hardware clock is wrong I think we can look at the
installation time of the module directory of the kernel.
/boot/vmlinux-$(uname -r) is possible, too.

I propose this patch:

--- /etc/init.d/hwclockfirst.sh 2009-04-18 01:03:46.000000000 +0200
+++ hwclockfirst.sh     2009-05-16 17:52:48.675695938 +0200
@@ -73,7 +73,17 @@
                NOADJ=""
            fi
 
-           if [ "$FIRST" != yes ]; then
+           if [ "$FIRST" = yes ]; then
+                date_of_mod_dir=$(stat --format=%X /lib/modules/"$(uname -a)")
+                date_of_hwclock=$(date --date="$(hwclock --show $GMT \
+                  $HWCLOCKPARS $BADYEAR)" +%s)
+                if [ "$date_of_hwclock" -lt "$date_of_mod_dir" ]; then
+                    log_begin_msg 'Please provide the current time as "yyyymmdd hhmm": '
+                    read time && \
+                      test -n "$time" && \
+                      hwclock --set --date="$time" $GMT $HWCLOCKPARS $NOADJ
+                fi
+            else
                # Uncomment the hwclock --adjust line below if you want
                # hwclock to try to correct systematic drift errors in the
                # Hardware Clock.

Bye, Jörg.
-- 
Manchmal denke ich, das sicherste Indiz dafür, daß anderswo im Universum
intelligentes Leben existiert, ist, daß niemand versucht hat, mit uns
Kontakt aufzunehmen.                           (Calvin und Hobbes)

Attachment: signature.asc
Description: Digital signature http://en.wikipedia.org/wiki/OpenPGP


Reply to: