Beim Systemstart, wenn der Kernel bootet, wird die aktuelle
Uhrzeit aus der Echtzeituhr des Computers ausgelesen. Diese ist
in einem Baustein auf dem Mainboard angebracht. Man erkennt
diesen kleinen schwarzen Käfer oft an einer kleinen Uhrengrafik
und der Beschriftung RTC (Real Time Clock, englisch für
Echtzeituhr). Da dieser über eine Batterie gepuffert wird,
stimmt bei einem Neustart also auch die Systemzeit in etwa.
Um die Zeit genau einzustellen, gibt es das Tool ntpdate. Dieses
Programm nimmt Verbindung mit einem oder mehreren Timeservern auf
und stellt die Systemuhrzeit ein. Dabei werden etliche Packete
verschickt und empfangen und anschließend wird das halbe
Antwortzeitmittel von der Uhrzeit abgezogen. Der Aufruf ist
denkbar einfach: lediglich ein paar Servernamen sind als
Parameter notwendig. Bei den Einstellungen sind die Standardwerte
meistens passend.
Um die Zeit einzustellen, muß man über root-Rechte verfügen. Man
schreibt dann beispielsweise:
root@linux ~#
ntpdate clock.isc.org ptbtime1.ptb.de ntps1-0.cs.tu-berlin.de
12 Jan 21:12:38 ntpdate[2382]: adjust time server 192.53.103.103 offset 3.493504 sec
|
ntpdate hat die Linux-Kerneluhr eingestellt, und dabei die
Uhrzeit um dreieinhalb Sekunden vorgestellt. Wenn man das
Kommando jetzt noch ein paarmal ausführt, gewinnt man einen
Eindruck, wie präzise dieser Mechanismus ist: in der Regel wird
die Zeit dann nur noch um wenige Millisekunden verstellt, so
genau funktioniert das! Um die Genauigkeit zu halten, könnte man
ntpdate alle paar Stunden laufen lassen.
Nun kann man diese Uhrzeit noch in die BIOS-Echtzeituhr
eintragen, damit man nach dem nächsten Neustart eine genauere
Zeit hat. Dazu gibt es das Tool hwclock. Mit dem Parameter
--systohc schreibt man die Systemzeit in die hardware clock
(bei PCs also in den RTC des Mainboards). Der Aufruf sieht dann
so aus:
root@linux ~#
hwclock --systohc
|
Das dauert ein paar Sekunden, dann stimmt die Zeit in der
Echtzeituhr.
Mit dieser Methode kann man also schon eine Genauigkeit
erreichen, die für Heimanwender ausreichend ist. Hier hat man oft
Internetwählverbindungen. Da bei Linux bei einer PPP Anwahl das
Script /etc/ppp/ip-up ausgeführt wird, paßt hier ein Aufruf von
ntpdate gut rein. Beispielsweise kann man hier einfügen:
Datei /etc/ppp/ip-up (Auszug)
|
#Ein paar Server, die zur Synchronisation verwendet werden
# können. Bitte nicht unbedingt diese verwenden, sondern andere
# aus http://www.eecis.udel.edu/~mills/ntp/ auswählen
/usr/sbin/ntpdate -bs \
clock.isc.org \
ptbtime1.ptb.de \
ntps1-0.cs.tu-berlin.de
|
Die Option -s gibt ab, dass man syslog für die Ausgaben
verwenden möchte. Oft sieht man hier zusätzlich den Schalter
-b, dieser gibt an, dass hier mit der Zeit gesprungen werden
darf und sollte angegeben werden, wenn man ntpdate nur selten
startet.
|