Det er absolutt best at hardware-klokka settes til UTC (GMT) og at Linux får beskjed om dette i sin timeconfig. Det er faktisk mulig å gi Windows beskjed om dette også slik at en slipper at klokka er 1-2 timer for sein i Windows ved dual-boot. Opprett en ny verdi i Windows (2000) registry:
HKEY_LOCAL_MACHINE\CurrentControlSet\Control\TimeZoneInformation\ RealTimeIsUniversalDenne opprettes som DWORD og settes til verdien '1' - restart Windows og Voila!
Det er flere løsninger for å holde systemklokka på rett kjøl.
Fra det mest primitive (rdate) til noe mer presist (NTP). Ulempen med NTP er at det i
praksis krever fast tilknytning til internett for best utbytte. For de fleste med
oppringt samband er chrony
antakelig det ideelle alternativet.
Jeg har brukt NTP en tid, men har nå installert chrony.
Jeg skulle gjerne har stilt alle klokkene i maskina til riktig tid. Etter det jeg forstår så er det to klokker i maskina. En system klokke (Linux) og en CMOS/BIOS/Windows klokke. Det jeg lurer på er hvordan jeg kan stille klokka mi når jeg logger på Internett slik at alle klokkene blir stilt riktig? Og hva skal stå i /etc/sysconfig/clock? (RedHat 5.1)
Legg f.eks inn
# Synkroniserer systemklokken /usr/bin/rdate -s login.sol.no # Skriver systemklokken til BIOS /sbin/clock -wi rc.local.
Programmet hentes hos sunsite.dk. Gjeldende versjon (september 2003) er 1.19.99.2 (1.20 testrelease 2).
Last ned filen chrony-1.19.99.2.tar.gz og kjør disse kommandoene:
tar -zxvf chrony-1.19.99.2.tar.gz cd chrony-1.19.99.2 ./configure make su root make install
configure
går usannsynlig kjapt, men så er det lite som testes
(om noe i det hele tatt). Jeg oppdaget at jeg måtte installere
readline-devel
og libncurses5-devel
-pakkene
fordi chrony trengte et par header-filer (MDK 9.2).
Opprett følgende filer med angitt innhold. chrony.conf
og
chrony.keys
skal opprettes på klienten(e) også.
# chrony.conf - LAN-server # server fartein.ifi.uio.no offline server ntp.online.no offline maxupdateskew 100 keyfile /etc/chrony.keys commandkey 1 driftfile /etc/chrony.drift allow 192.168.1 dumponexit dumpdir /var/log/chrony local stratum 7 rtcfile /etc/chrony.rtc rtconutc(Se under NTP for liste over flere NTP-servere. Styr unna stratum 1 servere, da det er helt unødvendig å belaste disse. Stratum 2 og 3 holder i massevis.)
# chrony.conf - LAN-client # server 192.168.1.201 maxupdateskew 100 keyfile /etc/chrony.keys commandkey 1 driftfile /etc/chrony.drift dumponexit dumpdir /var/log/chrony rtcfile /etc/chrony.rtc # HW-clock uses UTC rtconutc'rtconutc' må settes hvis hardwareklokka er satt til UTC (GMT). Dette er anbefalt fordi sommertid og vintertid da handteres helt uproblematisk.
1 hemmelig(Dette betyr at vi benyttes passordet 'hemmelig'.)
/usr/local/bin/chronyc <<EOF password hemmelig online EOF
/usr/local/bin/chronyc <<EOF password hemmelig offline dump writertc EOF
chrony-online
og chrony-offline
er to script som jeg
kaller fra oppkoblingsscriptet mitt. Kallet til chrony-online
plasseres så tidlig som mulig i scriptet, og chrony-offline
tilsvarende til slutt i scriptet.
Nå skal det være klart til å sette tingene i drift. Som root
kan oppstart av chrony settes med kommandoen chkconfig --level 2345 chrony on
.
Dette gjøres både på server og klient.
Første gangs oppstart av chrony bør gjøres manuelt.
Kople opp linje til internett og start chrony med kommandoen
/etc/rc.d/init.d/chrony start
. Start deretter klientprogrammet
/usr/local/bin/chronyc
og utfør denne sesjonen (rød
skrift er dine kommandoer):
chronyc> password Password: hemmelig 200 OK chronyc> online 200 OK chronyc> sources MS Name/IP address Stratum Poll LastRx Last sample ================================================================================== ^~ fartein.ifi.uio.no 2 6 5 +24ms[ +24ms] +/- 141ms chronyc> offline 200 OK chronyc> exitLegg merke til tilde-tegnet på begynnelsen av linjen for serverlisten. Etter et par minutter vil denne endres til en stjerne og synkronisering starter. Vent til klokken begynner å bli noenlunde riktig før du gir kommandoen
offline
og avslutter. For ettertiden vil justering
av tiden foregå via chrony-online/-offline scriptene.
Straks server har fått skikk på klokka, kan chronyd startes på klientene og de vil synkronisere mot server.
Skandinaviske timeservere:
Denne siden forteller det meste: http://www.eecis.udel.edu/~mills/ntp/ Liste over 'public' time-servere: http://www.eecis.udel.edu/~mills/ntp/servers.html
Server/UL>
Kikk på http://www.eecis.udel.edu/~ntp/ , der finner du også en liste.
Alle de andre som har svart til nå, har sagt noe om ntp. Personlig fant jeg ut at jeg syntes ntp var overkill. Klokken på min boks holder seg sånn nogenlunde, og jeg trenger ikke ekstrem presisjon.
Jeg bruker derfor en kombinasjon av 'rdate' og 'hwclock' for å stille klokken i linux, og synce bios-klokken[0]. Jeg har en cronjobb som går én gang i døgnet som ser slik ut:
#!/bin/sh # Fetch correct date and set system clock /usr/bin/rdate -s ntp.uio.no #Adjust hardware clock to match UTC=0 if [ -f /etc/sysconfig/clock ]; then . /etc/sysconfig/clock fi if [ $UTC = "true" ]; then OPTS="-u" fi /sbin/hwclock --systohc $OPTS
Denne funker for meg på (for dette formålet) en standard RedHat 5.0 boks. YMMV. både rdate og hwclock kan naturligvis brukes manuelt.
...Peder...[0] Jeg fant ut at biosklokken hadde mye større drift enn klokken i linux. Det hadde litt rare konsekvenser da boksen bootet pga. strømbrudd etter ca 100 dager. Før strømbruddet gikk klokken omtrent riktig, etter at boksen bootet, var den flere timer feil.
ntp er ordentlig, solid etc, rdate er et hack. Man bruker ikke et hack som rdate når ntpdate er like enkelt å sette opp. Det du trenger er:
ntpdatei crontab.&& clock -u -w
echo -n "Setting time from NTP server ... " if ntpdate -s <server>; then hwclock --utc --systohc echo "done." else echo "failed." fi
Følgende oppsett er laget for hjemmenett med Linux server og Linux
arbeidsstasjon. Opprettet også filen /etc/ntp.drift
, men vet
ikke om NTP bruker denne (ser ikke slik ut hittil)... Etter at jeg endret stratum
til 5 (fra default 10), tror jeg at det funker!
Filen /etc/ntp/step-tickers
gjør at oppstartsscriptet
/etc/rc.d/init.d/xntpd
kjører ntpdate
mot serverne angitt i denne filen før xntpd
startes.
#peer 192.168.1.1 # another machine on the LAN server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 5 # Sett en høy nok stratum for at andre # maskiner på LAN'et godtar server driftfile /etc/ntp/drift multicastclient # listen on default 224.0.1.1 broadcastdelay 0.008 authenticate no
fartein.ifi.uio.no time1.powertech.no aun.uninett.no
server server.acme.com # server on the LAN driftfile /etc/ntp/drift multicastclient # listen on default 224.0.1.1 broadcastdelay 0.008 authenticate no
server.acme.com # eller IP.adressen
I tillegg er det bare å starte xntp ved boot (S55xntp, K10xntp eksisterer antakelig allerede). Men jeg vet ikke helt hvor fornuftig dette oppsettet er...
ntpq> host tid current host set to tid.uio.no ntpq> peers remote refid st t when poll reach delay offset disp ============================================================================== *ulrik.uio.no benoni.Uit.No 2 u 378 1024 377 0.92 5.401 1.54 +tag.uio.no ulrik.uio.no 3 u 220 1024 377 0.95 8.563 1.62 +pierot.uio.no ulrik.uio.no 3 u 414 1024 377 1.08 5.778 1.39 +morgoth.uio.no ulrik.uio.no 3 u 648 1024 377 0.98 15.635 4.70 tid synkroniserer altså mot ulrik (== ntp.uio.no), som igjen snakkar med ei maskin i Tromsø (benoni.Uit.No == time.service.uit.no)
cat adjclock.sh: ================ #!/bin/sh # Show system time and hardware clock date clock --show #echo -n "Stiller klokka fra sol.no ... " #rdate -s login.sol.no echo -n "Stiller klokka fra uio.no ... " if ntpdate -s fartein.ifi.uio.no; then hwclock --utc --systohc echo "done." else echo "failed." fi # Show system time and hardware clock date hwclock --show