Re: UTC vs. localtime

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 30 Jul 2004 10:09:22 +0200 (CEST)

Heino Tiedemann <rotkaps_spam_trap(at)gmx.de> wrote:
> Thomas Flaig <t.gf(at)freenet.de> wrote:
> > Am Donnerstag, 29. Juli 2004 19:38 schrieb Rainer Duffner:
> > > ohne konkreten Anlass - aber interessieren würde mich das schon mal:
> > > Was ist eigentlich der Unterschied zwischen UTC und localtime ?
> >
> > Also bei UTC läuft die HW-Uhr mit der "Weltzeit", d.h. Greenwich-Zeit,
> > ohne Sommer/Winterzeit.

(NB: Es gibt zwischen UTC und GMT subtile Unterschiede,
die sind aber hier nicht von Belang. Genaugenommen ist
UTC nicht mit der Greenwich-Zeit identisch.)

> > Bei localtime läuft die HW-Uhr mit der lokalen Zeit, d.h. in D mit
> > MEZ/MESZ.
> >
> > > Bzw. wann soll mann denn UTC einstellen ?
> >
> > Immer dann wenn man nur Betriebssysteme verwendet, die auch mit UTC
> > klarkommen. Dazu zählen auch alle Arten von Un*xen. Windowssysteme
> > erwarten, daß die HW-Uhr mit der lokalen Zeit läuft.
>
> Welche Nachteile hat man, wenn man statt UTC lokale zeit nimmt?

Das ganze Zeitzonenmanagement wird dann deutlich komplexer;
es gibt mehr potentielle »points of failure«.

Der entscheidende Punkt ist, daß der Kernel (wie bei jedem
UNIX-System) mit UTC läuft und nur mit UTC arbeitet (was ja
auch sinnvoll ist, denn auf einem Rechner können ja durch-
aus mehrere Leute aus verschiedenen Zeitzonen arbeiten).
Die Konvertierung zur lokalen Zeitzone machen Funktionen in
der libc, also auf Userland-Ebene.

Das Problem ist nun aber leider, daß der Kernel trotzdem
Informationen über eine lokale Zeitzone haben muß, nämlich
aus Kompatibilitätsgründen mit dem MS-DOS-Dateisystem.
Dieses speichert nämlich das Datum von Dateien in der loka-
len Zeitzone, im Gegensatz zu nahezu allen anderen Datei-
systemen inkl. UFS/FFS.

Um die Zeitzoneninformation zwischen Kernel und lokaler
CMOS-Uhr abzugleichen, gibt es das Programm adjkerntz(8).
Wenn die lokale Hardware-Uhr mit UTC läuft, hat es nicht
viel zu tun; es wird dann im wesentlichen nur beim Booten
des Rechners aufgerufen, um die Kernel-Zeitzone zu setzen,
sowie beim Wechsel von Sommerzeit/Winterzeit. Wenn aber
die Hardware-Uhr mit lokaler Zeit läuft, muß es erheblich
mehr tun, um sicherzustellen, daß andere Betriebssysteme
auf demselben Rechner (MS-DOS, Windows) die korrekte Uhr-
Zeit sehen. In diesem Fall läuft adjkerntz als Daemon im
Hintergrund weiter -- die genauen Details kann man in der
adjkerntz(8)-Manpage nachlesen.

Dieses ganze Konstrukt ist also nur eine Kompatibilitäts-
krücke, die man braucht, wenn man auf demselben Rechner
auch MS-Betriebsysteme bootet, denn diese gehen dummer-
weise davon aus, daß die CMOS-Uhr mit lokaler Zeit läuft.

> Wenn ich UTC in der Hardware ihr will, muss ich dann einfach im BIOS
> eine Stunde (im Sommer zwei stunden) zurückstellen, und das war es?

Nö, Du brauchst im BIOS eigentlich gar nichts zu verstel-
len; Du brauchst nichtmal zu rebooten. Falls Du ntpd lau-
fen hast, stoppe ihn. Dann lösche einfach die Datei
/etc/wall_cmos_clock, kille den laufenden adjkerntz-Daemon
und setze manuell den sysctl machdep.wall_cmos_clock auf 0.
Schließlich starte den ntpd wieder (mit Option -g), um die
Uhrzeit wieder zu synchronisieren. (Falls Du aus irgend-
einem Grund kein NTP machen kannst, mußt Du die Uhr ggf.
mit /usr/bin/date manuell einstellen.)

Falls Du eh rebooten willst, brauchst Du lediglich vorher
die Datei /etc/wall_cmos_clock zu löschen, das ist alles.
Hinterher solltest Du natürlich wieder auf irgendeine Weise
die Uhr richtig stellen, am besten per ntpd, notfall manu-
ell per /usr/bin/date.

Mit dem Kommando »tzsetup« kannst Du Deine lokale Zeitzone
einstellen (hierzulande CET/CEST), aber ich nehme an, daß
das bei Dir schon richtig eingestellt ist.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"If you aim the gun at your foot and pull the trigger, it's
UNIX's job to ensure reliable delivery of the bullet to
where you aimed the gun (in this case, Mr. Foot)."
        -- Terry Lambert, FreeBSD-hackers mailing list.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 30 Jul 2004 - 10:09:52 CEST

search this site