Wenn man seinen PC nach Tagen wieder einmal hochfährt, “weiß” er trotzdem die genaue Zeit. Warum eigentlich? Und was unterscheidet die Hardwareuhrzeit von der Systemzeit?
Jeder PC besitzt eine Knopfzelle oder einen Akku, der sicherstellt, dass die Hardwareuhr nie die korrekte Zeit verliert. Nach ein paar Jahren (oder wenn man die Knopfzelle für einige Zeit herausnimmt) verliert der PC die Hardwarezeit – und auch die Einstellungen des BIOS (inklusive eines eventuellen BIOS-Passworts).
Die Hardwareuhr und die Systemzeit müssen nicht zwangsläufig gleich sein. Beim Bootvorgang setzt der Kernel die Systemzeit aus der Hardwareuhr. Bezieht ein System danach jedoch z.B. die Zeit durch einen Zeitserverver (Protokoll: ntp), können die Hardwareuhr und die Systemzeit durchaus abweichen. Will man die aktuelle Zeit der Hardwareuhr auslesen, kann man – als privilegierter Benutzer – den Befehl hwclock benutzen. Beispiel auf einem Ubuntu-System:
root@linuxnetz: # hwclock
Do 26 Mär 2009 18:29:00 CET -0.950218 Sekunden
Um zu erfahren, wie hwclock die Hardwareuhrzeit erhält, nutzt man hwclock mit der Option –debug.
root@linuxnetz: # hwclock –debug
hwclock from util-linux-ng 2.14
Benutze /dev interface to clock.
Letzte Abweichungskorrektur vorgenommen bei 1238082413 Sekunden nach 1969
Letzte Kalibrierung vorgenommen bei 1238082413 Sekunden nach 1969
Hardwareuhr geht nach UTC Zeit
Die Hardwareuhr läuft vermutlich in UTC.
Warte auf Uhrtick…
… erhielt Uhrtick
Zeit gelesen aus Hardwareuhr: 2009/03/26 17:31:22
Zeit der Hardwareuhr: 2009/03/26 17:31:22 = 1238088682 Sekunden seit 1969
Do 26 Mär 2009 18:31:22 CET -0.416696 Sekunden
Hier erfahren wir ganz nebenbei, dass seit dem 1. Januar 1970 00:00 h UTC 1238088682 Sekunden vergangen sind. Bis heute zählen Unixsysteme die Sekunden (Unixzeit) seit diesem Datum (EPOCH) , um sie erst dann in ein menschenverständliches Format umzuwandeln.
Um die Systemzeit auszulesen, verwendet man den Befehl date. Beispiel:
guest@linuxnetz:~$ date
Do 26. Mär 18:44:25 CET 2009
Um die Harwareuhrzeit manuell zu setzen, verwendet man die Option –set:
root@linuxnetz: # hwclock --set --date="1/23/88 10:10:10"
root@linuxnetz: # hwclock
Sa 23 Jan 1988 10:10:16 CET -0.880845 Sekunden
Soll die Systemzeit in die (nun auf 1988 gestellte) Hardwareuhr geladen werden – da die Systemzeit die Zeit durch einen Zeitserver bezieht – dann geht dies so:
root@linuxnetz: # hwclock --systohc
Um die Hardwareuhrzeit in die Systemzeit zu laden verwendet man:
root@linuxnetz: # hwclock --hctosys
Weiterführende Infos:
man date
man hwclock

Artikel


