Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


Synchronisation

NTP-Server ] [ Synchronisation ] NTP-Client ]


In diesem Unterkapitel wird vorgestellt, welche Möglichkeiten es gibt, um eine bestehenden lokalen NTP-Server möglichst exakt auf die genaue Zeit abzugleichen. In Verlauf dieses Unterkapitels wird auf die Synchronisation mit anderen, z.B. im Internet befindlichen Time-Servern, und die Synchronisation mit dem DCF77-Signal eingegangen.

Synchronisation mit anderen NTP-Server

Bei der Synchronisation mit anderen NTP-Servern ist der zu befragende NTP-Server in der Konfigurationsdatei: 'ntp.conf' hinter dem Schüsselwort: 'server' einzutragen (vgl. Kapitel: NTP-Server). Es können hier ebenfalls mehrere Server angegeben werden.

Auszug aus: /etc/ntp.conf

##
## Outside source of synchronized time
##
server ptbtime1.ptb.de # erster Server der PTB
server ptbtime2.ptb.de # zweiter Server der PTB

Die Einträge für die lokale Uhr (vgl. vorheriges Unterkapitel) sollten weiterhin aktiviert bleiben, das diese eine Fallback-Lösung darstellt, falls die externen Server nicht erreichbar sind.

Synchronisation durch DCF77

Die Physikalisch-Technischen Bundesanstalt in Braunschweig betreibt eine der genausten Cäsium-Atomuhren der Welt. Sie weicht weniger als eine Sekunde in 300.000 Jahren ab. Uhrzeit und Datum werden über den Langwellensender: 'DCF77' auf der Normalfrequenz 77,5 kHz als Zeitinformation in kodierter Form ausgestrahlt. Die Sendeleistung beträgt etwa 50 kW, bei einer ausgestrahlten Leistung von etwa 30 kW in einer Reichweite von ca. 2000 km im Umkreis um Frankfurt/Main bzw. Mainflingen. Für die Nutzung der Zeitinformationen werden für Computer unterschiedliche Lösungen angeboten.

Synchronisation mit PC Funkuhr (PCF)

Bei der PC Funkuhr (PCF) handelt es sich um eine Uhr, die als Kabel zwischen der parallelen Schnittstelle und dem Drucker geschleift wird, das DCF77-Uhrenmodul befindet sich in einen Kästchen in der Mitte des Kabels.  Die Uhr kann bei der Firma: 'Conrad Elektronik' unter der Bestellnummer: 642002-88 bezogen werden.

Für das Auslesen der  PC Funkuhr (PCF) am Parallelport unter Linux kann das Programm: 'pcf' genutzt werden. Die neuste Version kann auf der Homepage des Programmier Joachim König als C-Quellcode herunter geladen werden. Nach dem Kompilieren unter Debian sollte das ausführbare Programm: 'pcf' unter '/usr/sbin' abgelegt werden.

Damit die Funkuhr bei jedem Systemstart ausgelesen wird, sollte das Script: '/etc/init.d/pcf77' erstellt werden.

Auszug aus: /etc/initd.conf (ca. Zeile: 37)

#!/bin/sh

##############################################################################
# PATH: /etc/init.d/pcf77                                                    #
# DESCRIPTION: reads the DCF77-clock                                         #
# USAGE: /etc/init.d/pcf77                                                   #
# AUTHOR: Norbert Eusterholz <norbert@eusterholz.com>                        #
# HISTORY:                                                                   #
# +------------+----------------------------------------------------+------+ #
# | DATE       | CHANGES                                            | NAME | #
# +============+====================================================+======+ #
# | 2001.02.02 | creation (SuSE 7.0)                                | NE   | #
# +------------+----------------------------------------------------+------+ #
# | 2001.10.04 | changes for SuSE 7.2                               | NE   | #
# +------------+----------------------------------------------------+------+ #
##############################################################################

. /etc/rc.config

# Determine the base and follow a runlevel link name.
base=${0##*/}
link=${base#*[SK][0-9][0-9]}

# Force execution if not called by a runlevel directory.
test $link = $base && START_PCF77=yes
test "$START_PCF77" = yes || exit 0

echo -n "Starting DCF77 synchronisation: "
/usr/sbin/pcf > /var/log/pcf.log
PORT=`grep "port" /var/log/pcf.log | awk '{ print $4}'`

if [ -n "$PORT" ]; then
echo "DCF77-clock found on port $PORT"
/sbin/clock -wu
echo -n "Time now is: `date`"
return=$rc_done
else
echo -n "can't find DCF77-clock"
return=$rc_failed
fi

echo -e "$return"
test "$return" = "$rc_done" || exit 1
exit 0

Das Script liest die Funkuhr mit Hilfe des Programms: 'pcf' aus und schreibt die Zeit und Datum in die CMOS-Uhr des Rechners. Wird keine Funkuhr gefunden, so wird eine Fehlermeldung ausgegeben.

Damit der Start in den Runlevel: '2' und '3' erfolgen kann, müssen noch folgende zwei Links erzeugt werden:

ls -sv /sbin/init.d/pcf77 /sbin/init.d/rc2.d/S99pcf77
ls -sv /sbin/init.d/pcf77 /sbin/init.d/rc3.d/S99pcf77

Ist der Zeitabgleich nur beim Systemstart nicht ausreichend, so kann die Funkuhr auch zyklisch durch einen cron-Eintrag abgefragt werden. Der folgende Eintrag in der 'crontab' bewirkt das alle sechs Stunden eine Synchronisation stattfindet.

Auszug aus: crontab

# DCF77-Syncronisation
0 0,6,12,18 * * * /usr/sbin/pcf 0x378 >> /var/log/pcf.log &

Synchronisation mit passiven Funkuhren.

Passiven Funkuhren bestehen im wesentlichen aus einer kleinen Ferritstabantenne für den Empfang des DCF77 Funksignals und einigen Signalkonvertern zur Anpassung des DCF77 Signals in PC kompatibles Format. Diese Funkuhren überlassen einer Software die Auswertung des DCF77 Signals. D.h. die Funksignale müssen von der Software aufbereitet, ausgewertet und geprüft werden. Bei einem Linux-System kann das NTP-Packet für die Integration einer passiven Funkuhr genutzt werden. Passive Funkuhren sind z.B. die 'Expert mouseCLOCK' und der 'Sure RPC-Funkuhr'.

DCF77-Standardempfaenger Expert mouseCLOCK

Nach dem Anschluss der passiven Funkuhr ist zunächst ein symbolischen Link: '/dev/refclock-0', welcher auf das Schnittstellen-Device-File zeigt, zu erzeugen.

ln -sf /dev/ttyS0 /dev/refclock-0

Dabei entspricht die erste serielle Schnittstelle (COM 1) dem Device-File: '/dev/ttyS0' und der zweiten seriellen Schnittstelle (COM 2) dem Device-File: '/dev/ttyS1'.

Als nächstes ist sicherzustellen, das die Funkuhr mit Spannung über die serielle Schnittstelle versorgt wird. Dazu ist nach der Installationsanleitung für Linux für die 'Expert mouseCLOCK' oder 'Sure RPC-Funkuhr' zu verfahren. Ist die Spannung korrekt geschaltet, sollte an den angesprochenen Funkuhren die Leuchtdiode im Sekundentakt blinken.

Damit der NTP-Dämon von der Existenz einer passiven Funkuhr erfährt ist folgende Zeile in der Datei: '/etc/ntp.conf' einzufügen:

Auszug aus: /etc/ntp.conf (Konfiguration für Expert mouseCLOCK)

...

## Generic DCF77 clock on serial port (Expert mouseCLOCK)
## Address: 127.127.8.u
## Serial Port: /dev/refclock-u
##
## (create soft link /dev/refclock-0 to the particular ttyS?)
## for example: "ln -s /dev/ttyS1 /dev/refclock-0"
server 127.127.8.0 mode 14 prefer

...

Die Zeile besagt das die Zeitinformation bevorzugt mit Hilfe eines Treibers Gruppe '14' vom Device: '/dev/reflock-0' geholt werden soll.
Die Zeilen für externe Server im Internet und die rechnerinterne CMOS-Uhr als Zeitinformation sollten weiterhin aktiviert bleiben, da der NTP-Dämon auf diese Information bei Empfangsproblemen zurückgreift.

Anmerkungen

Das Synchronisieren mit externen Time-Servern und DCF77-Empfängern kann einige Minuten dauern. Die korrekte Arbeitsweise kann mit dem Kommando: 'ntpq -c clocklist' geprüft werden:

vision:~# ntpq -c clocklist
assID=0 status=0005 clk_okay, last_clk_baddate,
device="RAW DCF77 CODE (DTR SET/RTS CLR)",
timecode="---###-#--##-##---M-S---8---P---8--P--4----2-12------8----P",
poll=6, noreply=0, badformat=0, baddata=1, fudgetime1=258.000,
stratum=0, refid=DCFa, flags=0,
refclock_time="cb777405.00000000 Tue, Mar 4 2008 7:08:53.000",
refclock_status="TIME CODE; (LEAP INDICATION; ANTENNA)",
refclock_format="RAW DCF77 Timecode",
refclock_states="*NOMINAL: 00:05:12 (83.87%); ILLEGAL DATE: 00:01:00 (16.12%); running time: 00:06:12"

Weitere Infos

Homepage: NTP http://www.ntp.org/
Public ntp time server for everyone http://www.pool.ntp.org/
NTP Pool Project http://www.pool.ntp.org/
http://support.ntp.org/bin/view/Servers/NTPPoolServers
Homepage: Physikalisch-Technische Bundesanstalt (PTB) http://www.ptb.de/
Informationen zu DCF77 http://www.dcf77.de/
Sourcen zu pcf-Uhrenmodul http://home.germany.net/100-5083/index.htm
Detaillierte Installationsanleitung: 'Expert mouseCLOCK' http://www.gudeads.com/main-ntpinfo.html
Installationsanleitung für 'Sure RPC DCF77 Funkuhr' http://www.linum.com/FTPDIR/SUPPORT/XNTP/XNTP.PDF
Informationen zur 'RPC Funkuhr' http://www.3wd.de/rpc-uhr/
Manualseiten zu: ntpd man ntpd
System-Dokumentation: ntp-refclock /usr/share/doc/ntp-refclock
DCF-77 für die serielle Schnittstelle http://www.qsl.net/dk7in/Dcf77Ser.html

Home ] Nach oben ] NTP-Server ] [ Synchronisation ] NTP-Client ]

letzte Änderung: 04. März 2008

 

Copyright © 2004 Norbert Eusterholz