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

Re: Zeitumstellung klappt nicht



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   gknab@asamnet.de
  # Version:	@(#)hwclock.sh  2.00  14-Dec-1998  miquels@cistron.nl
  #
  # Patches:
+ #		2004-10-02 Günter Knab <gknab@asamnet.de>
+ #		 - /etc/adjtzone saves timezone between reboots
  #		2000-01-30 Henrique M. Holschuh <hmh@rcm.org.br>
  #		 - 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
+ 
+ 
+ 
+ 
  



Reply to: