]> err.no Git - util-linux/commitdiff
hwclock: Reintroduce hwclockfirst.sh on Debian machines. Closes: #443487
authorLaMont Jones <lamont@debian.org>
Fri, 21 Sep 2007 20:01:04 +0000 (14:01 -0600)
committerLaMont Jones <lamont@debian.org>
Fri, 21 Sep 2007 20:01:04 +0000 (14:01 -0600)
If /etc/localtime is a readable file, then set the time in hwclockfirst.sh
before mounting the root partition.  Many thanks to Ted T'so for the details
(found in the bug report.)

debian/hwclock.sh
debian/rules
debian/util-linux.postinst

index 69f45f94889b9bba8274931b00c2e425c38f403c..241ec02780455525920b2aa17fe78a05f60948c9 100644 (file)
@@ -12,7 +12,7 @@
 #               - Added comments to alert users of hwclock issues
 #                 and discourage tampering without proper doc reading.
 
-# WARNING:     Please read /usr/share/doc/util-linux/README.Debian.hwclock.gz
+# WARNING:     Please read /usr/share/doc/util-linux/README.Debian.hwclock
 #              or /usr/share/doc/util-linux/README.Debian.hwclock
 #              before changing this file. You risk serious clock
 #              misbehaviour otherwise.
@@ -25,6 +25,8 @@
 # Default-Stop:      0 6
 ### END INIT INFO
 
+FIRST=no       # debian/rules sets this to 'yes' when creating hwclockfirst.sh
+
 # Set this to any options you might need to give to hwclock, such
 # as machine hardware clock type for Alphas.
 HWCLOCKPARS=
@@ -41,6 +43,12 @@ hwclocksh()
     case "$UTC" in
        no|"")  GMT="--localtime"
                UTC=""
+               if [ "X$FIRST" = "Xyes" ] && [ ! -r /etc/localtime ]; then
+                   if [ -z "$TZ" ]; then
+                       log_action_msg "System clock was not updated at this time"
+                       return 1
+                   fi
+               fi
                ;;
        yes)    GMT="--utc"
                UTC="--utc"
@@ -56,32 +64,40 @@ hwclocksh()
 
     case "$1" in
        start)
-           if [ ! -f /etc/adjtime ] && [ ! -e /etc/adjtime ]; then
+           if [ -w /etc ] && [ ! -f /etc/adjtime ] && [ ! -e /etc/adjtime ]; then
                echo "0.0 0 0.0" > /etc/adjtime
            fi
 
-           # Uncomment the hwclock --adjust line below if you want
-           # hwclock to try to correct systematic drift errors in the
-           # Hardware Clock.
-           #
-           # WARNING: If you uncomment this option, you must either make
-           # sure *nothing* changes the Hardware Clock other than
-           # hwclock --systohc, or you must delete /etc/adjtime
-           # every time someone else modifies the Hardware Clock.
-           #
-           # Common "vilains" are: ntp, MS Windows, the BIOS Setup
-           # program.
-           #
-           # WARNING: You must remember to invalidate (delete)
-           # /etc/adjtime if you ever need to set the system clock
-           # to a very different value and hwclock --adjust is being
-           # used.
-           #
-           # Please read /usr/share/doc/util-linux/README.Debian.hwclock.gz
-           # before enablig hwclock --adjust.
+           if [ ! -w /etc/adjtime ]; then
+               NOADJ="--noadjfile"
+           else
+               NOADJ=""
+           fi
 
-           #hwclock --adjust $GMT $BADYEAR
-           :
+           if [ "$FIRST" != yes ]; then
+               # Uncomment the hwclock --adjust line below if you want
+               # hwclock to try to correct systematic drift errors in the
+               # Hardware Clock.
+               #
+               # WARNING: If you uncomment this option, you must either make
+               # sure *nothing* changes the Hardware Clock other than
+               # hwclock --systohc, or you must delete /etc/adjtime
+               # every time someone else modifies the Hardware Clock.
+               #
+               # Common "vilains" are: ntp, MS Windows, the BIOS Setup
+               # program.
+               #
+               # WARNING: You must remember to invalidate (delete)
+               # /etc/adjtime if you ever need to set the system clock
+               # to a very different value and hwclock --adjust is being
+               # used.
+               #
+               # Please read /usr/share/doc/util-linux/README.Debian.hwclock
+               # before enablig hwclock --adjust.
+
+               #hwclock --adjust $GMT $BADYEAR
+               :
+           fi
 
            if [ "$HWCLOCKACCESS" != no ]; then
                log_action_msg "Setting the system clock."
@@ -89,7 +105,7 @@ hwclocksh()
                # Copies Hardware Clock time to System Clock using the correct
                # timezone for hardware clocks in local time, and sets kernel
                # timezone. DO NOT REMOVE.
-               /sbin/hwclock --hctosys $GMT $HWCLOCKPARS $BADYEAR
+               /sbin/hwclock --hctosys $GMT $HWCLOCKPARS $BADYEAR $NOADJ
 
                #       Announce the local time.
                verbose_log_action_msg "System Clock set to: `date $UTC`"
index c542fc54129eee919dde9cb733de634d579c83b6..a18a1663aaef9bff642fe37f7581b123dd2c8e92 100755 (executable)
@@ -101,7 +101,12 @@ endif
        if [ -f debian/util-linux/sbin/hwclock ] ; then \
            install -m 755 debian/hwclock.sh debian/util-linux/etc/init.d/hwclock.sh; \
        fi
-ifneq ($(DISTRO),Debian)
+ifeq ($(DISTRO),Debian)
+       if [ -f debian/util-linux/sbin/hwclock ] ; then \
+           install -m 755 debian/hwclock.sh debian/util-linux/etc/init.d/hwclockfirst.sh; \
+           sed -i '/^FIRST=/s/no/yes/' debian/util-linux/etc/init.d/hwclockfirst.sh; \
+       fi
+else
        if [ -f debian/util-linux/sbin/hwclock ] ; then \
            install -m 755 debian/hwclock.udev debian/util-linux/lib/udev/set_hwclock && \
            install -m 644 debian/hwclock.rules debian/util-linux/etc/udev/rules.d/85-hwclock.rules; \
index 7886e9ae23ee45d33d1782339847edb4adbc75aa..c12421e3b4ab8848fe93c0f3b8db6003a1b8d204 100644 (file)
@@ -28,6 +28,9 @@ if [ "$(uname -s)" = "Linux" ]; then
         update-rc.d -f hwclock.sh remove 2>/dev/null > /dev/null
         update-rc.d hwclock.sh start 11 S . stop 25 0 6 . > /dev/null
         update-rc.d -f hwclockfirst.sh remove 2>/dev/null > /dev/null
+       if [ -f /etc/init.d/hwclockfirst.sh ]; then
+         update-rc.d hwclockfirst.sh start 8 S . > /dev/null
+       fi
     fi
 fi