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

Re: hwclock



Torsten Hilbrich <torsten.hilbrich@gmx.net>:
>Michael Wagner <micwag@t-online.de> writes:

>> Torsten Hilbrich <torsten.hilbrich@gmx.net> writes:
>>
>>> Kontrolliere den Inhalt von /etc/adjtime (im Zweifelfall die Datei
>>> löschen).
>>
>> Da steht nur: 51.220096 1108293840 0.000000; 1108293840; LOCAL
>> Ist das schon zu viel?

>Dieser Inhalt bedeutet, daß pro Tag die Uhr mittels des
>adjtime-Systemaufrufs um 51.22 Sekunden verstellt wird.

Meines Wissens ist das so nicht richtig: hwclock(8) sagt, dass
der Inhalt der Datei /etc/adjtime dazu verwendet werden kann, mit
hwclock --adjust die systematische Abweichung der BIOS-Uhr zu
korrigieren. Etwas genauer: Wann immer man die BIOS-Uhr mit
hwclock neu stellt, sei es mit

   hwclock --systohc

oder

   hwclock --set

, kann die Ganggeschwindigkeitsabweichung ermittelt werden, weil
jeweils der Zeitpunkt (gemessen an der BIOS-Uhr) der letzten
BIOS-Uhr-Stellaktion in der Datei /etc/adjtimex festgehalten
wird. Diese ermittelte Abweichung wird mit

   hwclock --adjust

korrigiert.

Beispiel: Durch zwei aufeinanderfolgende BIOS-Uhr-Stellaktionen
wurde ermittelt, dass die BIOS-Uhr zwei Sekunden am Tag vorgeht.
Wenn Du nun nach der zweiten BIOS-Uhr-Stellaktion drei Tage
vergehen lässt und gib dann den Befehl

   hwclock --adjust

eingibst, wird damit dann die BIOS-Uhr um 2s/Tag * 3 Tage = 6s
zurückgestellt. Die Operation --adjust empfiehlt sich also immer
unmittelbar, bevor man Zeit von der BIOS-Uhr nehmen will.

Automatisch geht nur was, wenn die automatische
BIOS-Uhr-Synchronisation des Kernels eingeschaltet ist (siehe
hwclock(8)) oder irgendein ntpd dazwischenfunkt.

Wenn man also dem System nicht automatisch mittels NTP genaue
Zeit zuführt sondern man alle paar Tage z.B. von einem Zeitgong
im Radio die Zeit nimmt, ist adjtimex (siehe adjtimex(8)) zu
empfehlen. Dieses Programm erlaubt, sowohl von der Systemuhr als
auch von der BIOS-Uhr jeweils eine Abweichungsstatistik zu
machen, aus der es für die Systemuhr die
Geschwindigkeitsparameter Tick und Frequency und für die BIOS-Uhr
die Drift in Sekunden pro Tag schätzen kann. Mit dem Aufruf

   adjtimex --review --adjust

lassen sich die Parameter Tick und Frequency auf die Schätzwerte
einstellen. Mit --review alleine werden die Schätzwerte (auch der
für die BIOS-Uhr) angezeigt. Den kannst Du von Hand in
/etc/adjtime eintragen, wenn Du willst. Allerdings geht er beim
nächsten Mal hwclock --systohc oder --set wieder verloren. Wenn
der Rechner nicht nur kurzzeitig läuft sondern praktisch
ununterbrochen, kann man adjtimex dazu verwenden, die Systemuhr
zur Raison zu bringen, und die BIOS-Uhr wird automatisch
korrigiert, wenn sie bei jedem Herunterfahren nach der Systemzeit
gestellt wird.

Wenn dann beim Hochfahren unmittelbar vor dem Stellen der
Systemuhr nach der BIOS-Uhr hwclock --adjust ausgeführt wird (ich
glaube das ist auch die Voreinstellung in der
Runlevel-Konfiguration), wird die Systemuhr richtig gestellt,
auch wenn der Rechner ein paar Tage lang nicht am Laufen war.

Sieht Dein Rechnerbetrieb allerdings so aus, dass die Maschine
immer nur kurze Zeitabschnitte läuft (z.B. Laptop), wirst Du mit
adjtimex für die Systemuhr wenig anfangen können, weil die
Messintervalle, die ja niemals länger als das jeweilige Uptime
sein können, sehr kurz sind. Da wäre dann vielleicht zu
überlegen, die Runlevel-Konfiguration so zu ändern, dass die
BIOS-Uhr nicht mehr automatisch beim Herunterfahren nach der
Systemuhr (falsch) gestellt wird.

Stattdessen wäre die BIOS-Uhr mit adjtimex zu beobachten, indem
man (1) vor jeder BIOS-Uhr-Stellaktion das Messintervall mit

   adjtimex --watch
   
beendet, (2) nach jeder BIOS-Uhr-Stellaktion
mit

   adjtimex --watch

ein neues Messintervall beginnt, indem man die Frage nach dem
ununterbrochenen Lauf der BIOS-Uhr mit Nein beantwortet.
Anschließend ist in /etc/adjtimex die von adjtimex geschätzte
Driftkorrektur einzutragen.



Reply to: