Hallo!

Da wenigstens einer das gleiche Problem hatte wie ich, nochmal zum Abschluß:

In /etc/default/rcS wird angegeben, in welcher Zeitzone sich die
hardware-uhr befindet:
    A) UTC=yes : BIOS-Uhr läuft nach UTC
    B) UTC=no  : BIOS-Uhr läuft nach lokaler Zeit

Probleme können auftreten, wenn die Zeitzone wechselt, ohne dass der
Computer bewegt wird.  Beispiel: Umstellung von Sommer- (CEST) auf
Winterzeit (CET).  Während der Umstellung kann der Computer entweder
    1) in Betrieb sein
    2) oder nicht.


Die Fälle A1 und A2 sind einfach:
---------------------------------

On Mon, 2004-11-01 at 01:54:21 +0100, Bertram Scharpf wrote:
> 
> Ich habe hier 2 Debian-Rechner. Auf UTC. Einer lief durch,
> der andere war aus. Beide zeigen heute die richtige Zeit.
> Der durchlaufende ruft jede Nacht um 2:45 Uhr E-Mail ab;
> letzte Nacht war er laut `/var/log/messages' zweimal
> eingewählt.

Klar, die Stunde gibt's zweimal: einmal CEST und einmal CET.  Bleibt
zu fragen: wird dann vom Wechsel von 2:00 CET nach 3:00 CEST keine
Post abgeholt?  Egal, der Blödsinn mit der Sommerzeit bleibt uns noch
länger erhalten ;-)


Im Fall B1 gilt A1 entsprechend.

Für Fall B2 habe ich einen Patch(-versuch?) im Anhang, damit das
endlich mal Ende hat.
 
On Sun, 2004-10-31 at 21:01:45 +0100, Dirk Salva wrote:
> 
> ROTFL. Nix funktioniert da richtig;-( Bei der letzten (nicht gestern)
> Zeitumstellung habe ich das leider erfahren muessen:
> Auf meinem Server laeuft chrony. Der Server laeuft auf UTC. ABER:
> wenn der Rechner zur Zeitumstellung nachts um 2 nicht laeuft, wird da
> nix verstellt, wenn man ihn am anderen Morgen einschaltet.

Weil die BIOS-Uhr keine Ahnung von Zeitzonen hat. Sobald
/usr/share/zoneinfo verfügbar ist, ändert sich die Zeitzone, aber
nicht die Stunde!

> Dann
> versucht chrony wie bloede, die Zeitdifferenz haeppchenweise
> auszugleichen, was natuerlich voelliger Muell ist. Gestern hab ich
> den Rechner einfach mal durchlaufen lassen, da gehts dann ploetzlich.

Das problem der doppelten Stunde, die für den Computer 1 sein sollte,
hab ich hier nicht berücksichtigt.

Weitermachen, solang's Spaß macht.
Günter

------------------------------------------------------------------------
*** /etc/init.d/hwclock.sh.200  Sat Feb  2 21:27:29 2002
--- /etc/init.d/hwclock.sh      Wed Nov  3 12:45:09 2004
***************
*** 2,10 ****
--- 2,13 ----
  # hwclock.sh  Set and adjust the CMOS clock, according to the UTC
  #             setting in /etc/default/rcS (see also rcS(5)).
  #
+ # Version:    @(#)hwclock.sh  2.01  2004-10-03   [EMAIL PROTECTED]
  # Version:    @(#)hwclock.sh  2.00  14-Dec-1998  [EMAIL PROTECTED]
  #
  # Patches:
+ #             2004-10-02 Günter Knab <[EMAIL PROTECTED]>
+ #              - /etc/adjtzone saves timezone between reboots
  #             2000-01-30 Henrique M. Holschuh <[EMAIL PROTECTED]>
  #              - Minor cosmetic changes in an attempt to help new
  #                users notice something IS changing their clocks
***************
*** 30,41 ****
--- 33,60 ----
         *)     echo "$0: unknown BADYEAR setting: \"$BADYEAR\"" >&2 ;;
  esac
  
+ # write the current (RFC-822 style numeric) timezone as offset to UTC
+ # with '/bin/date +%z' (a nonstandard extension).
+ # Version: date (GNU sh-utils) 2.0.11
+ get_timezone () {
+     if [ "$UTC" = yes ]
+     then
+       echo +0000
+     else
+       date +%z
+     fi
+ }
+ 
  case "$1" in
        start)
                if [ ! -f /etc/adjtime ]
                then
                        echo "0.0 0 0.0" > /etc/adjtime
                fi
+               if [ ! -f /etc/adjtzone ]
+               then
+                       get_timezone  > /etc/adjtzone
+               fi
  
                # Uncomment the hwclock --adjust line below if you want 
                # hwclock to try to correct systematic drift errors in the 
***************
*** 64,69 ****
--- 83,120 ----
                        echo
                        echo "Setting the System Clock using the Hardware Clock as 
reference..."
                fi
+ 
+               # check wether timezone has changed, assuming:
+               # - hwclockfirst.sh has set sysclock assuming last tz
+               # - now /usr/share/zoneinfo is available, we are able to
+               #   check wether daylight savings comes into effect during
+               #   offtime
+               # 
+               LAST_TZ=`cat /etc/adjtzone`
+               CUR_TZ=`date +%z`
+               if [ "$LAST_TZ" -ne "$CUR_TZ" ]
+               then
+                   if [ "$VERBOSE" != no ]
+                   then
+                       echo "Timezone changed from $LAST_TZ to $CUR_TZ." >&2
+                     fi
+                   # bash interprets '+0100' and '+0200' as octal !!!
+                   case $(($CUR_TZ - $LAST_TZ)) in
+                       -64) NEW_HOUR=$(( $(date +%H)-1 )) ;;
+                       64)  NEW_HOUR=$(( $(date +%H)+1 )) ;;
+                       *)   NEW_HOUR=$(date +%H)
+                              echo "Timezones doesn't differ exactly 1 hour." >&2
+                            ;;
+                   esac
+                   if [ "$HWCLOCKACCESS" != no ]
+                   then
+                       hwclock --set --date="$NEW_HOUR:$(date +%M:%S)" $GMT $BADYEAR
+                   fi
+                   # reset systematic clock drift
+                   echo "0.0 0 0.0" > /etc/adjtime
+                   get_timezone  > /etc/adjtzone
+               fi
+ 
                # Copies Hardware Clock time to System Clock using the correct
                # timezone for hardware clocks in local time, and sets kernel 
                # timezone. DO NOT REMOVE.
***************
*** 98,106 ****
--- 149,159 ----
                then
                        hwclock --systohc $GMT $BADYEAR
                fi
+               get_timezone  > /etc/adjtzone
                if [ "$VERBOSE" != no ]
                then
                        echo "Hardware Clock updated to `date`."
+                       echo "Saved timezone is UTC`get_timezone`."
                fi
                ;;
        show)
***************
*** 108,119 ****
                then
                        hwclock --show $GMT $BADYEAR
                fi
                ;;
        *)
                echo "Usage: hwclock.sh {start|stop|reload|force-reload|show}" >&2
                echo "       start sets kernel (system) clock from hardware (RTC) 
clock" >&2
!               echo "       stop and reload set hardware (RTC) clock from kernel 
(system) clock" >&2
                exit 1
                ;;
  esac
  
--- 161,177 ----
                then
                        hwclock --show $GMT $BADYEAR
                fi
+               get_timezone
                ;;
        *)
                echo "Usage: hwclock.sh {start|stop|reload|force-reload|show}" >&2
                echo "       start sets kernel (system) clock from hardware (RTC) 
clock" >&2
!               echo "       stop and reload set hardware (RTC) clock from kernel 
(system) clock" >&2 
                exit 1
                ;;
  esac
+ 
+ 
+ 
+ 
  


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

Antwort per Email an