Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Unter Linux muss man prinzipiell zwischen zwei Uhren unterscheiden:
Software-Uhr: das ist die Zeit innerhalb des Linux-Kernels. Sie ist für alle Benutzer und das Betriebssystem selbst von Bedeutung und definiert im laufenden Betrieb die für alle Programme gültige Systemzeit. Sie wird auch manchmal als Betriebssystem-Uhr oder System-Uhr bezeichnet.
Hardware-Uhr: diese Uhr (auch Echtzeituhr, batteriegepufferte Uhr, real time clock (RTC), BIOS clock oder CMOS clock genannt) ist eine Uhr, die unabhängig von allen anderen Komponenten läuft, selbst wenn der Computer heruntergefahren wurde. Im ausgeschalteten Zustand läuft sie weiter und wird beim Systemstart zum Abgleich der Software-Uhr verwendet.
Normalerweise setzt man die Zeitzone während der Installation oder ändert sie mit einem Rechtsklick auf die Anzeige der Uhr im Desktop-Panel. Sollte das einmal nicht klappen oder administriert man einen Server ohne grafische Oberfläche, so kann man mit folgendem Befehl ohne zusätzliche Parameter im Terminal [1] die lokale Zeitzone in einem einfachen textbasierten Dialog neu setzen:
sudo dpkg-reconfigure tzdata
Alternativ kann man auch folgenden Befehl nutzen (ältere Ubuntu-Versionen):
sudo tzselect
Die Einstellung der Zeitzone ist wichtig, um die Systemzeit korrekt in die reale Lokalzeit umzurechnen. Sie hilft auch, die Umstellung auf die Sommerzeit automatisch vorzunehmen.
Die Systemzeit lässt sich mit folgendem Befehl im Terminal [1] anzeigen:
date
Mit Hilfe des Network Time Protocols (NTP) kann man einen Zeitserver im Internet abfragen und die Systemzeit entsprechend manuell anpassen:
sudo ntpdate -u ntp.ubuntu.com
ntpdate sollte nicht genutzt werden, wenn der NTP-Dienst schon läuft. Alternative Zeitserver sind in dieser Tabelle zu finden.
Das Programm zum Stellen der Hardware-Uhr lässt sich im Terminal [1] folgendermaßen aufrufen:
sudo hwclock
Parameter | Beschreibung |
--show | Zeigt den Stand der Hardware-Uhr in lokaler Zeitzone (auch wenn die Hardware-Uhr nach UTC läuft) |
--set --date="9/22/96 16:45:05" | Stelle die Hardware-Uhr auf den 22.9.1996 16:45:05 Lokalzeit |
--hctosys | Stellt die Systemzeit nach der Hardware-Uhr. |
--systohc | Stellt die Hardware-Uhr nach der momentanen Systemzeit. |
Ab Ubuntu 11.10 kann man die Zeitsynchronisation direkt über die Systemeinstellung einstellen. Dafür geht man in die Sitzungsanzeige und klickt auf:
"Systemeinstellungen → Zeit und Datum"
Hier kann mit Hilfe des Kippschalters "Netzwerkzeit" die automatische Zeitsynchronisation aktivieren. Außerdem kann man hier noch die Zeitzone und das Datumsformat festlegen. Einen Server für die Zeitsynchronisation kann man nicht einstellen.
Wer auf eine exakte Systemzeit angewiesen ist, kann sich nicht allein auf Hardware- und Software-Uhr verlassen, da diese nicht mit der nötigen Genauigkeit arbeiten. Die Standardlösung ist der NTP-Systemdienst, der regelmäßig die Uhrzeit automatisch mit einem Zeitserver im Internet abgleicht. Dazu installiert [3] man aus den Quellen folgendes Paket:
ntp
mit apturl
Paketliste zum Kopieren:
sudo apt-get install ntp
sudo aptitude install ntp
Die Konfiguration kann man in GNOME unter
"System → Systemverwaltung → Datum und Uhrzeit"
vornehmen. Dort stellt man neben der Zeitzone auch die Zeitserver ein, von dem die Zeit synchronisiert werden soll. Ebenso kann man direkt die Konfigurationsdatei /etc/ntp.conf mit einem Editor und Root-Rechten [2] anpassen und Zeitserver der eigenen Wahl eintragen.
Es empfiehlt sich, mehrere Zeitserver anzugeben. NTP sucht sich dabei automatisch den genauesten Server heraus und richtet sich nach ihm. Der genaueste Server (Stratum 1) ist der, der sich hierarchisch am nächsten an der Originalzeitquelle (Stratum 0) befindet. Originalzeitquellen (Stratum 0) sollten in der Regel nicht selbst direkt abgefragt werden.
Hier ein paar Vorschläge sinnvoller Zeitserver:
Zeitserver | |
Server | Beschreibung |
ptbtime1.ptb.de | Physikalisch-Technische Bundesanstalt (Braunschweig) |
ptbtime2.ptb.de | wie oben, alternativer Server |
ptbtime3.ptb.de | wie oben, alternativer Server |
time-a.nist.gov | National Institute of Standards and Technology (USA) |
time-b.nist.gov | wie oben, alternativer Server |
pool.ntp.org | wählt bei jedem Neustart per Zufall einen von etwa 1700 empfohlenen Zeitservern aus |
de.pool.ntp.org | wie oben, wählt aber nur deutsche Zeitserver aus |
europe.pool.ntp.org | wie oben, wählt aber nur europäische Zeitserver aus |
ntp.ubuntu.com | Zeitserver von Ubuntu |
Mittels samba ist es möglich das Windows Clients ihre Zeit mit dem Server syncronisieren können, siehe: Samba Server/smb.conf
![]() |
Datum und Uhrzeit |
Unter Xfce erreicht man die Konfiguration über das Anwendungsmenü:
"Applications -> System -> Datum und Uhrzeit" bzw.
"Einstellungen -> Datum und Uhrzeit"
Als Zeitserver sollte man mindestens einen Zeitserver aus der Liste auswählen. Es empfiehlt sich, mehrere Zeitserver anzugeben.
Lubuntu verwendet das gleiche Programm wie Xfce (siehe oben). Der entsprechende Eintrag im Anwendungsmenü lautet:
"Systemwerkzeuge -> Datum und Uhrzeit" (ab Lubuntu 11.04)
"Einstellungen -> Datum und Uhrzeit" (bis Lubuntu 10.10)
Um die Einstellungen zu ändern, muss vorher die Schaltfläche "Entsperren" betätigt und das Root-Kennwort eingegeben werden.
NTP arbeitet mit einer Vielzahl von Zeitquellen (serielle, USB-, PCI-Geräte) zusammen, z.B. DCF- oder GPS-Quellen. Das folgende Beispiel zeigt, wie eine DCF-77 Gude MouseClock II Funkuhr eingebunden wird.
Nach der Installation des NTP-Dienstes wird die externe Funkuhr in der Konfigurationsdatei /etc/ntp.conf angegeben:
#ntp-conf driftfile /var/lib/ntp/ntp.drift # Enable this if you want statistics to be logged. #statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable # GUDE Expert mouseCLOCK server 127.127.8.0 mode 19 prefer fudge 127.127.8.0 flag2 1 stratum 0 refid GUDE # options enable calibrate # By default, exchange time with everybody, but don't allow configuration. restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery # Local users may interrogate the ntp server more closely. restrict 127.0.0.1 # Localhost erlauben restrict 127.127.8.0 restrict ::1 # If you want to provide time to your local subnet, change the next line. # (Again, the address is an example only.) broadcast 192.168.1.255
Die magische Zeile "server 127.127.8.0 ..." ist keine IP-Adresse, sondern die genaue Spezifizierung einer "GUDE Expert mouseCLOCK". Für jede von NTP unterstützte Hardware gibt es hier eine entsprechende vierstellige Zahlenkombination, die wie eine IP-Adresse aufgebaut sind, aber keine ist.
NTP erwartet DCF-Funkuhren unter /dev/refclock-xx
- daher wird eine udev-Regel benötigt, um dem meist seriell oder via USB angeschlossenen Gerät einen festen Namen zuzuweisen. Als Beispiel der Inhalt einer udev-Regel, z.B. /etc/udev/rules.d/05-persistent-dcf.rules, passend zur Gude MouseClock II Funkuhr:
KERNEL=="ttyUSB*", ATTRS{idProduct}=="e88a", SYMLINK+="refclock-%m"
udev-Regel aktivieren und den NTP Dienst neu starten:
sudo udevadm trigger sudo service ntp restart
Nach etwa 3 Minuten sollte eine korrekt ausgerichtete Funkuhr (nach Mainflingen/Hessen) synchronisiert sein. NTP und die Funkuhr können mit watch beobachtet und überprüft werden:
watch -n1 ntpq -c cv -c rv
associd=0 status=0020 , 2 events, clk_unspec, device="RAW DCF77 CODE (Expert mouseCLOCK USB v2.0)", timecode="--#--###---------D--S1-4-1-4p-24---p12----1-4---8--2--1---P", poll=12, noreply=0, badformat=0, baddata=1, fudgetime1=425.000, stratum=0, refid=GUDE, flags=2, refclock_time="d3c5d844.00000000 Fri, Aug 3 2012 4:55:32.000", refclock_status="DST; TIME CODE; (LEAP INDICATION; ANTENNA)", refclock_format="RAW DCF77 Timecode", refclock_states="*NOMINAL: 00:10:33 (88.16%); ILLEGAL DATE: 00:01:25 (11.83%); running time: 00:11:58" associd=0 status=0214 leap_none, sync_lf_radio, 1 event, freq_mode, version="ntpd 4.2.6p3@1.2290-o Tue Jun 5 20:12:08 UTC 2012 (1)", processor="x86_64", system="Linux/3.2.0-29-generic", leap=00, stratum=1, precision=-22, rootdelay=0.000, rootdisp=31.196, refid=GUDE, reftime=d3c5d838.75cb8306 Fri, Aug 3 2012 6:55:20.460, clock=d3c5d844.8f4457f4 Fri, Aug 3 2012 6:55:32.559, peer=44449, tc=6, mintc=3, offset=-43.458, frequency=-3.564, sys_jitter=1.685, clk_jitter=14.366, clk_wander=1.260
In der Ausgabe erkennt man, dass die Funkuhr mit stratum=0
und der zugehörige PC mit dem NTP-Dienst als stratum=1
läuft.
Zusätzlich kann es nötig sein, AppArmor den Zugriff auf das NTP-Gerät (/dev/xxx
) zu erlauben, und zwar nicht nur den Symlink, sondern auch dem seriellen oder USB-Gerät. Die Datei /etc/apparmor.d/usr.sbin.ntpd wird mit Root-Rechten geöffnet und unter der Zeile "@{NTPD_DEVICE} rw," um zwei weitere Zeilen ergänzt:
... @{NTPD_DEVICE} rw, /dev/ttyUSB* rwl, /dev/refclock* rwl, ...
AppArmor muss anschließend neu gestartet werden:
sudo service apparmor restart
Will man herausfinden, um wie weit die Systemzeit von den angegebenen Zeitservern abweicht ("offset"), kann einer der beiden folgenden Befehle im Terminal [1] ausgeführt werden:
# Offset zu jedem einzelnen Zeitserver (in ms) ntpq -p # für NTP relevanter Offset (in s) # nach einem Neustart des NTP-Servers kann einige Zeit vergehen, bis hier ein Wert steht ntpdc -c loopinfo
Hierbei ist allerdings zu beachten, dass die Systemzeit außer bei sehr großen Abweichungen "fließend" bzw. "schleichend" angepasst wird. Das heißt, dass die Systemzeit minimal langsamer oder schneller läuft, als sie eigentlich laufen müsste. Dadurch geht die Synchronisation nur langsam vonstatten, aber es treten keine Fehler durch Zeitsprünge auf. Beim Herunterfahren des Systems wird hingegen die Uhrzeit der Hardware-Uhr mit der vollen Abweichung überschrieben.
Klemmt es beim NTP-Dienst (z.B. unsinnige Ausgabe bei ntpq -p
bzw. ntpdc -c loopinfo
), so hilft ggf. der Befehl [1] zum Neustarten des Dienstes:
sudo /etc/init.d/ntp restart
Eine weitere Problemquelle sind zu große Abweichungen zwischen lokaler und Internet-Zeit. Dann wird zuerst der NTP-Dienst beendet:
sudo /etc/init.d/ntp stop
Nun setzt man die Zeit manuell:
sudo ntpdate -u ntp.ubuntu.com
Zum Schluss wird der NTP-Dienst wieder gestartet:
sudo /etc/init.d/ntp start
Ganz vorsichtige Naturen starten den Rechner nach dieser Prozedur neu, da der auftretende "Zeitsprung" unvorhersehbare Konsequenzen haben kann.
Das System muss neben der Zeitzone auch wissen, wie die Hardware-Uhr konfiguriert ist. Unter UNIX läuft sie standardmäßig nach koordinierter Weltzeit (UTC) , während unter DOS/Windows die Hardware-Uhr nach lokaler Zeit gestellt wird. Dadurch geht in Windows die Zeit um eine (Winter-) bzw. zwei (Sommerzeit) Stunden nach, wenn man sie unter Linux korrekt stellt. Es empfiehlt sich daher, beide Systeme auf die selbe Methode einzustellen. Ab Ubuntu 9.04 konfiguriert sich bei der Parallel-Installation ("Dual Boot") zu einer vorhandenen Windows-Installation die Hardware-Uhr ebenfalls mit lokaler Zeit.
Windows kann man über die Systemregistrierung auf UTC umstellen bzw. mit UTC betreiben. Dazu legt man mit dem Windows-Editor eine Datei namens utc.reg an und fügt folgenden Inhalt ein:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001
Wichtig sind zwei Leerzeilen am Ende der Datei! Danach speichert man die Datei ab und führt sie als Administrator mit einem Doppelklick aus. Teilweise ist ein Neustart erforderlich, damit die Uhrzeit korrekt angezeigt wird.
Alternativ kann auch folgender Windows-Befehl ausgeführt werden:
reg.exe add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1 /f
Alternativ kann man Linux auf lokale Zeit umstellen. Dazu bearbeitet man die Konfigurationsdatei /etc/default/rcS mit einem Editor [2] und Root-Rechten und ändert den Abschnitt:
# Set UTC=yes if your system clock is set to UTC (GMT), and UTC=no if not. UTC=no
entsprechend.
NTP Version 4 Release Notes (David L. Mills, PhD, Professor)
rtcwake - PC zeitgesteuert starten