Die Hardware-Uhr und die Software-Uhr laufen normalerweise völlig unabhängig voneinander. Für beide Uhren gibt es auch separate tools, um darauf zuzugreifen.
Die im kernel implementierte Software-Uhr läßt sich mit
dem Kommando date
(1) auslesen und setzen (letzteres
natürlich nur vom super user).
Für den Zugriff auf die Hardware-Uhr existiert
hwclock
(8), das nur vom super user benutzt werden kann.
Sie kann mit
ausgelesen bzw. gesetzt werden. Typischer für die Verwendung vonhwclock --show
undhwclock --set --date=...
hwclock
ist jedoch das Setzen der Software-Uhr mit der
Zeit aus der Hardware-Uhr oder umgekehrt.
Mit
hwclock --systohc [--utc]wird die Systemzeit aus der Software-Uhr im kernel ausgelesen und nach der Umrechnung in Jahr, Monat, ..., Minuten und Sekunden in die Hardware-Uhr geschrieben. Umgekehrt wird mit
hwclock --hctosys [--utc]die Hardware-Uhr ausgelesen, in die Darstellung der Systemzeit konvertiert (d.h. in einen
time_t
umgerechnet) und in die
Software-Uhr geschrieben.
Bei beiden Varianten kann zusätzlich zu --systohc
bzw. --hctosys
noch die Option --utc
angegeben werden. In diesem Fall wird die Zeit in der Hardware-Uhr
als UTC interpretiert bzw. als UTC in die Hardware-Uhr geschrieben.
Anderenfalls wird lokale Zeitrepräsentation angenommen, was eine
korrekte Einstellung der lokalen Zeitzone
erfordert.
Die erste Variante kann z.B. sinnvoll sein, wenn die Systemzeit der Software-Uhr durch Synchronisation mit Rechnern im Netz auf der richtigen Zeit gehalten wird, und man die Hardware-Uhr anpassen möchte, z.B. kurz vor einem reboot, damit der Rechner gleich wieder mit der richtigen Zeit weiterläft.
Die zweite Variante findet man häfig in den boot scripts,
falls die Hardware-Uhr aus irgendeinem Grund nicht auf UTC gestellt
werden soll. Der Unix kernel liest bei jedem Booten von sich aus die
Hardware-Uhr, interpretiert ihren Inhalt als UTC, berechnet einen
passenden time_t
und setzt seine Software-Uhr
entsprechend. Steht die Hardware-Uhr aber auf lokaler
Zeitrepräsentation, ist die Software-Uhr damit nicht richtig
gesetzt. In diesem Fall muß man in den boot scripts die
Software-Uhr nochmal nachträglich richtig setzen mit
hwclock --hctosysohne
--utc
. Bei SuSE Linux passiert dies z.B.,
wenn man in der Konfiguration angibt, daß die Hardware-Uhr nicht
auf UTC gesetzt ist.