Mailinglist Archive: opensuse-de (7975 mails)

< Previous Next >
Re: probleme mit uhrzeit
  • From: Thomas Templin <thomas.templin@xxxxxxxx>
  • Date: Fri, 12 Apr 2002 12:38:03 +0200
  • Message-id: <3C9E442F003935F1@xxxxxxxxxxxxx> (added by postmaster@xxxxxxxxxxxxx)
Freitag, 12. April 2002 00:47 eric berthold wrote:
[...]
ich habe mal eine Grundlegende Frage zum Thema Uhrzeit:

Ich habe auf meinem System die Systemzeit und die Hardwarezeit
(den Unterschied verstehe ich schon nicht) nach meiner lokalen
Zeit eingestellt.

In yast habe ich dann die Zeitzone auf Europe/Berlin gestellt.
Mails, die über den Server verschickt werden, tragen die richtige
Uhrzeit. Aber wenn ich z.B. eine Datei per FTP hochlade, dann hat
die ne andere Uhrzeit. Die liegt dann 2 Stunden zurück.
[...]
Hallo Eric
Die Mail von Dieter erklärt Dir genau wie die Zeit definiert wird.
Gut zu lesen, da kann man kaum noch etwas hinzufügen.

Probleme gibt es immer wieder mit der Unterschiedlichen Behandlung
der Uhrzeit auf deinem Motherboard, man spricht von der real time
clock (rtc), durch das jeweilige Betriebssystem.
Dabei wird von Betriebssystemen aus dem Evil Empire beim booten
diese Zeit einfach ausgelesen und als die Systemzeit des
Betriebssystemes übernommen.
Also: rtc Zeit = systime
Damit bestimmt die rtc-time auch die Zeitzone in der Du dich
befindest. Man schaut also einfach auf seine Armbanduhr und trägt
diese Zeit im BIOS Setup ein.

Früher musste man dann bei jeder Sommer/Winterzeit Umstellung die
Zeit wieder neu einstellen, reichlich nervig. Mitlerweile können NT
und W2k/XP selber eine Umstellung nach Winter/Sommerzeit. Dazu
verwenden sie Tabellen in denen die Umstellungen vorgegeben werden.

Auf vernünftigen Betriebssystemen wird das schon seit ewigen Zeiten
anders gehandhabt. Wir nemen einmal ein Unix System *grins*
Die rtc, wir wissen damit ist die Hardware Clock auf dem Board
gemeint, wird auf UTC (früher nannte man das GMT) eingestellt.
Im Betriebssystem wird die Zeitzone definiert, in der sich der
Rechner gerade befindet. Also in unserem Fall Europe/Berlin oder
UTC+1. UTC+1 ist unsere normale Zeitzone also MEZ.

Wie wird die Zeit jetzt aber von einem Unix System interpretiert?
Das wird etwas komplexer und weitaus pfiffiger als auf der Systemen
aus dem Evil Empire ausgewertet.

Das System bootet und holt sich die Zeit aus der rtc. Wie Dieter ja
schon sagte wird jetzt erst einmal eine feste Spanne für die lokale
Zeit hinzugefügt, normalerweise eine Stunde. Diese Informationen
und die Informationen über Umstellungen während des Jahres wie die
Sommer/Winterzeit Umstellung ist hinterlegt in der Datei
/usr/share/zoneinfo/Europe/Berlin.

---nur falls interessiert
Im Verzeichnis /usr/share/zoneinfo werden daneben auch noch eine
Datei mit den ISO 3166 2-letter country codes , definiert z.B. das
DE für Deutschland, iso3166.tab und eine Datei mit Angaben zu
Längen und Breitengraden einiger Städte wie Berlin , zone.tab
---ende

Damit wird schon einmal die aktuelle Zeitdifferenz zur rtc grob
vorgegeben, jetzt wird das noch genauer eingegrenzt.
Dieter hat ja bereits geschrieben, dass die Board Uhren nicht als
sehr genau gelten, alle gehen mehr oder minder vor oder nach, man
spricht vom sogenannten time-shift.
Um auch noch diese Ungenauigkeiten zu eleminieren gibt es die Datei
/etc/adjtime dort wird ein Korrekturfaktor für Deine rtc angegeben.
Allerdings nur, wenn Du sie irgendwann einmal nachgestellt haben
solltest und das auch nur dann wenn Du es mit hwclock gemacht hast.
Aber dazu etwas später.
Solch eine Datei kann folgendermassen aussehen:
---/etc/adjtime---
-3.127072 1018601965 0.000000
1018601965
UTC
---/etc/adjtime---
Und damit kann auch eine kleinere Ungenauigkeit der rtc bei jedem
booten des Systemes wieder korrigiert werden.
Die so bestimmte Systemzeit gilt jetzt als das "Mass aller Dinge"
bis zum nächsten boot Vorgang des Systemes und das kann ewig dauern.

Kurz gefasst:
Booten - rtc auslesen - Timezone auslesen - timeshift auslesen -
Unix Systemzeit ermitteln

Soviel zur Zeit eines Unix Systemes oder Systemzeit.

Jetzt zum Nachstellen der Zeit von einem Zeitserver aus dem
Internet:
Es gibt von der Physikalisch technischen Bundesanstalt in
Braunschweig einige Zeitserver die Ihre Urzeit wieder aus der/?den?
Atomuhren der PTB beziehen. Mit einer Genauigkeit von
Sekunde/Jahrmillion soweit ich mich erinnern kann.
Die kann man z.B. bei jeder Verbindung, die man mit dem Modem
aufbaut automatisch zur korrektur der Systemzeit und auch der rtc
heranziehen.
Dazu wird eine eigene Datei /etc/ppp/ip-up.local erstellt in der
folgende Zeilen einzutragen sind:
\\ ist ein Zeilenumbruch
---/etc/ppp/ip-up.local---
# Timeserver aufruf, ptba Braunschweig
echo "Netdate aufgerufen" 1> /dev/xconsole
netdate -l 1 tcp ptbtime1.ptb.de ptbtime2.ptb.de \\
127.0.0.1 1> /dev/xconsole
hwclock --systohc
---/etc/ppp/ip-up.local---
Mit netdate wird einer der Zeitserver ermittelt der ausgelesen wird.
Die 127.0.0.1 sollte man unbedingt einfügen damit es keinen Ärger
gibt. Falls die Zeitserver mal nicht erreichbar sind wird deine
eigene Zeit genommen.

Mit "hwclock --systohc" wird die rtc auf die systime neu gestellt.
Und dabei wird auch ein eintrag in die Datei /etc/adjtime
geschrieben.

Das wars, puhh.
Ich glaub viel mehr gibts dazu nicht zu sagen.
Damit solltest Du schon einmal in der Lage sein deine Zeit zu
bestimmen*grins*

Was das Problem mit Deinen ftp-Transfers angeht, da kann es mehrere
Probleme geben.
1. Welches ftp-Programm
2. Welche Zeit hat der ftp-Server von dem die Daten geholt werden,
viele laufen unter UTC

Ich vermute mal stark es ist Punkt 2.
Aber schon mal Schulterklopf das Dir das aufgefallen ist, die
meisten hätten das wahrscheinlich nicht einmal bemerkt.
Tschüss,
Thomas

< Previous Next >
References