  The Clock Mini-HOWTO
  Ron Bean, rbean@execpc.com
  v2, Luglio 1999

  Come regolare e mantenere preciso l'orologio del tuo computer.

  1.  Introduzione

  I chip Real-Time-Clock (RTC, orologio in tempo reale) usati sulle
  schede madri dei PC (perfino delle workstation pi costose) sono
  notoriamente inaccurati, visto che di solito guadagnano o perdono una
  quantit consistente di tempo ogni giorno. Linux fornisce un modo
  semplice per correggere questo problema via software, il che pu
  rendere l'orologio *molto* preciso, anche senza una fonte d'orario
  esterna. Tuttavia, la maggior parte delle persone non sa come
  impostarlo, e questo per molte ragioni:

    Non  menzionato nella maggior parte della documentazione generale
     del tipo "how to set up linux", e non pu essere impostato
     automaticamente senza una fonte di orario esterna, perci
     l'impostazione predefinita  di non usarlo;

    Se si digita "man clock" si ottiene la pagina man per clock(3), che
     non  quello che si vuole (si provi con "man 8 clock" o "man 8
     hwclock"-- alcune distribuzioni cercano seguendo l'ordine  numerico
     se non si specifica un numero di sezione, altre cercano con
     l'ordine specificato in /etc/man.config).

    La maggioranza sembra non curarsi di che ora sia.

    Quei pochi a cui importa spesso preferiscono sincronizzare
     l'orologio di sistema ad una sorgente esterna, come un server di
     orario di rete o un orologio radio. Questo rende l'accuratezza
     dell'RTC irrilevante.

  Questo mini-HOWTO descrive l'approccio low-tech (che pu essere
  ugualmente molto accurato), e fornisce indicazioni a molte strade pi
  sofisticate. Nella maggioranza dei casi la documentazione  stilata
  molto bene, quindi non ripeter quelle informazioni qui, ma alla fine
  ho incluso istruzioni dettagliate per il vecchio programma clock(8)
  per chiunque stia ancora usando un vecchio sistema.


     Nota
        Devi essere utente "root" per avviare qualsiasi programma che
        interessi l'RTC o l'orario di sistema. Tienilo a mente quando
        utilizzi i programmi descritti qui.


     Nota
        Se usi pi di un sistema operativo sul tuo PC, dovresti
        permettere ad uno solo di essi di regolare l'orologio CMOS,
        cosicch non si confondano l'un l'altro. Questo include
        l'aggiustamento per l'ora legale operato due volte l'anno.

  Se usi un sistema dual-boot che avvia Windows per molto tempo,
  potresti voler dare un'occhiata a qualche software disponibile per
  quell'OS. Segui i collegamenti dal sito web dell'NTP su
  <http://www.eecis.udel.edu/~ntp/software.html>. Molti degli orologi
  radio nominati qui includono software per Windows.


     Nota
        Per la traduzione italiana Germano Rizzo, manomano@ciaoweb.it


  2.  Modalit base per mantenere l'orario preciso sotto Linux

  Un sistema Linux ha effettivamente due orologi: uno  il "Real Time
  Clock", alimentato a batteria (conosciuto anche come "RTC", "CMOS
  clock", o "Hardware clock") che scandisce il tempo quando il sistema 
  spento ma non  utilizzato quando  funzionante. L'altro  l'"orologio
  di sistema" (chiamato anche "orologio del kernel" o "orologio
  software") che  un contatore software basato sugli interrupt del
  timer. Non esiste quando il sistema non  in funzione, per cui deve
  essere inizializzato dall'RTC (o da qualche altra fonte) al boot. I
  riferimenti all'"orologio" nella documentazione di ntpd riguardano
  quello di sistema, non l'RTC.

  I due orologi deviano dall'ora reale a ritmi differenti, perci
  gradualmente i rispettivi orari differiranno sempre pi tra loro, ed
  anche dal tempo "reale". Il modo pi semplice per mantenerli precisi 
  di misurare i tassi di deviazione e applicare dei fattori di
  correzione nel software. Poich l'RTC  usato solo quando il sistema
  non  attivo, il fattore di correzione  applicato quando l'orario 
  letto all'avvio, usando clock(8) o hwclock(8). L'orologio di sistema 
  corretto regolando la quantit di tempo di cui l'orologio di sistema 
  portato avanti ad ogni interrupt del timer, usando adjtimex(8).

  Una rude alternativa ad adjtimex(8)  far avviare clock(8) o
  hwclock(8) a cron periodicamente per sincronizzare l'orario di sistema
  all'RTC (corretto). Questa strada   raccomandata nella pagina man
  clock(8) e funziona se lo si fa abbastanza spesso da non causare
  grossi "salti" nell'orario di sistema, ma adjtimex(8)  comunque una
  soluzione pi elegante. Alcune applicazioni potrebbero lamentarsi se
  l'orario salta all'indietro.

  Il prossimo passo verso l'accuratezza  utilizzare un programma come
  ntpd per leggere l'orario da un server di orario di rete o da
  un'orologio radio, ed aggiustare continuamente il passo dell'orologio
  di sistema cosicch i tempi corrispondano costantemente. Se hai una
  connessione ad una rete sempre attiva all'avvio del tuo sistema, puoi
  ignorare completamente l'RTC e usare ntpdate (incluso nel pacchetto
  ntpd) per inizializzare l'orologio di sistema dal server -- o un
  server locale su LAN, o un server remoto su Internet. Ma se qualche
  volta non hai una connessione di rete, o se ti serve che l'ora sia
  precisa durante la sequenza di avvio e prima della connessione alla
  rete, allora dovrai mantenere preciso anche l'RTC.

  Potrebbe sembrare ovvio che in questo caso si debba sincronizzare
  l'RTC al (corretto) orologio di sistema. Ma questa risulta essere una
  cattiva idea se il sistema star spento per pi di pochi minuti,
  perch questa procedura interferir coi programmi che applicano il
  fattore di correzione all'RTC all'avvio.

  Se il sistema  attivo 24 ore su 24 e 7 giorni su 7 ed  sempre
  riavviato immediatamente dopo essere stato eventualmente spento, puoi
  semplicemente regolare l'RTC dall'orologio di sistema giusto prima di
  spegnere la macchina. L'RTC non devier significativamente nel tempo
  che ci vuole per il riavvio, perci non ti servir conoscere il tasso
  di deviazione.

  Naturalmente il sistema potrebbe bloccarsi imprevedibilmente, cos
  alcune versioni del kernel sincronizzano l'RTC all'orologio di sistema
  ogni 11 minuti se quest'ultimo  stato riaggiustato da un altro
  programma. L'RTC non devier abbastanza in 11 minuti da fare alcuna
  differenza, ma se il sistema  spento abbastanza a lungo da far
  deviare significativamente l'RTC, allora hai un problema: i programmi
  che applicano le correzioni dei tassi di deviazione hanno bisogno di
  sapere *esattamente* quando l'RTC  stato resettato l'ultima volta, ed
  il kernel non registra questa informazione da nessuna parte.

  Alcuni "tradizionalisti" di unix potrebbero chiedersi perch qualcuno
  potrebbe lasciare attivo un sistema linux per meno di 24 ore al giorno
  e sette giorni alla settimana, ma alcuni di noi utilizzano un sistema
  dual-boot, con un altro OS in funzione per un certo tempo, o avviano
  Linux su portatili che devono essere spenti per preservare le batterie
  quando non sono utilizzati. Altre persone, semplicemente, non vogliono
  lasciare i PC attivi senza sorveglianza per lunghi periodi di tempo
  (anche se abbiamo sentito ogni sorta di argomentazioni in favore di
  questa linea). Perci l'"ogni 11 minuti" diventa un bug.

  Questa "caratteristica/bug" sembra comportarsi in maniera differente
  in diverse versioni del kernel (e probabilmente anche in diverse
  versioni di xntpd e ntpd), cos se stai usando sia ntpd che hwclock,
  potrebbe essere necessario controllare cosa il tuo sistema realmente
  fa. Se non puoi trattenere il kernel dal resettare l'RTC, potresti
  dover far funzionare il sistema senza un fattore di correzione.

  La parte del kernel che controlla questo pu essere reperita in
  /usr/src/linux-2.0.34/arch/i386/kernel/time.c (dove il numero di
  versione nel percorso sar la versione del kernel che si utilizza). Se
  la variabile time_status  impostata su TIME_OK allora il kernel
  scriver l'orario di sistema sull'RTC ogni 11 minuti, altrimenti lo
  lascer stare. Chiamate a adjtimex(2) (ad esempio effettuate da ntpd e
  timed) possono attivarlo. Chiamate a settimeofday(2) imposteranno
  time_status su TIME_UNSYNC, che dice al kernel di non riaggiustare
  l'RTC. Non ho trovato alcuna reale documentazione su questo.

  Se non ti serve un'accuratezza a meno di un secondo, hwclock(8) e
  adjtimex(8) potrebbero essere tutto ci che ti serve.  facile essere
  presi dagli orologi radio e simili, ma io ho usato il programma
  clock(8) per anni con eccellenti risultati. D'altro canto, se hai
  molte macchine su una LAN potrebbe risultare comodo far loro
  sincronizzare gli orologi automaticamente l'una con l'altra.

  3.  Software

  3.1.  Clock(8) e Hwclock(8)

  Tutte le distribuzioni linux installano o il vecchio clock(8) o il pi
  recente hwclock(8), ma senza un fattore di correzione. Alcune
  potrebbero anche installare adjtimex(8), o includerlo nel CD come
  optional (o puoi comunque scaricarlo dai soliti archivi). Alcune
  distribuzioni includono anche un programma grafico di regolazione
  dell'orologio che funziona in X-window, ma questi programmi sono
  concepiti per un uso interattivo, ed il sistema installer comunque
  clock(8) o hwclock(8) per l'uso negli script di avvio.

  Clock(8) ti richiede di calcolare il fattore di correzione a mano,
  mentre hwclock(8) lo calcola automaticamente quandunque lo usi per
  resettare l'orologio (usare un altro programma per impostare l'orario
  interferir con la correzione della deriva, perci usa sempre lo
  stesso programma se stai utilizzando il fattore di correzione. Se hai
  un sistema pi datato che usa ancora clock(8) e vuoi aggiornarlo, puoi
  trovare hwclock(8) nel pacchetto "util-linux", versione 2.7 o
  successiva. Consulta la pagina man per maggiori informazioni.


     Nota
        La pagina man di hwclock(8) pu esser chiamata "clock" per
        compatibilit all'indietro, perci prova entrambi i nomi.
        Hwclock(8) risponder ai comandi scritti per clock(8), ma il
        risultato potrebbe non essere lo stesso -- in particolare,
        "hwclock -a" non  proprio identico a "clock -a", perci se stai
        aggiornando a hwclock ti suggerirei di sostituire tutti i
        riferimenti a "clock" nei tuoi script di avvio in modo che usino
        i comandi propri di hwclock.
  Gli script di avvio variano da una distribuzione all'altra, perci
  potrai dover cercare un po' per trovare dove impostano l'orologio.
  Locazioni tipiche sono /etc/rc.local, /etc/rc.d/rc.sysinit,
  /etc/rc.d/boot, o simili. Il fattore di correzione per l'RTC 
  archiviato in /etc/adjtime.

  Quando stai regolando l'orologio per determinare il tasso di
  deviazione, tieni a mente che il tuo annuncio telefonico dell'orario
  locale pu essere accurato o meno. Se non hai una radio ad onde corte
  o un ricevitore GPS, puoi ascoltare il segnale audio della WWV
  chiamando lo (01)(303)499-7111 ( una chiamata a pagamento a Boulder,
  Colorado). Il servizio ti sconnetter dopo tre minuti, ma dovrebbe
  essere abbastanza per regolare l'orologio. Anche l'USNO e il CHU del
  Canada hanno servizi telefonici, ma io preferisco quello del WWV
  perch passa pi tempo tra l'annuncio ed il "beep".

  Se ottieni risultati bizzarri dall'uso dell'RTC potresti avere un
  problema hardware. Alcuni chip RTC comprendono una batteria al litio
  che pu scaricarsi, e alcune schede madri hanno la possibilit di
  collegare una batteria esterna (assicurati che i ponticelli siano
  impostati correttamente). La stessa batteria mantiene la RAM CMOS, ma
  l'orologio consuma pi potenza ed  probabile che ceda prima.
  Risultati bizzarri dall'orologio di sistema possono significare anche
  che c' un problema con gli interrupt.

  3.2.  Adjtimex(8)

  Adjtimex(8) permette all'utente di regolare le variabili dell'orario
  del kernel, e perci cambiare la velocit dell'orologio di sistema
  (devi avere l'accesso come "root" al sistema per farlo).  progettato
  in modo intelligente affinch compari l'orologio di sistema all'RTC
  usando lo stesso fattore di correzione utilizzato da clock(8) o
  hwclock(8), come archiviato in /etc/adjtime. Perci, una volta che hai
  stabilito il tasso di deriva dell'RTC,  abbastanza semplice
  correggere anche l'orologio di sistema. Quando otterrai che funzioni
  alla giusta velocit, potrai aggiungere una linea agli script d'avvio
  per regolare le variabili corrette del kernel al momento dell'avvio.
  Poich adjtimex(8)  stato progettato per lavorare con clock(8) o
  hwclock(8), include una soluzione per il bug dell'"ogni 11 minuti".

  Dopo che hai installato adjtimex(8) puoi aver maggiori informazioni su
  come regolarlo digitando "man 8 adjtimex" (c' anche una pagina man
  adjtimex(2), ma non  ci che serve) e leggendo il file README
  reperibile a /usr/doc/adjtimex-1.3/README (dove il numero di versione
  nel percorso sar la versione corrente di adjtimex(8)).

  3.3.  Xntpd e ntpd: il Network Time Protocol

  Xntpd (NTPv3)  stato sostituito da ntpd (NTPv4); la versione pi
  vecchia non viene pi aggiornata.

  Ntpd  il programma standard per sicronizzare orologi in una rete, ed
   corredato di una lista di server di orario pubblici a cui puoi
  connetterti. Pu essere un po' pi complicato da configurare degli
  altri programmi descritti qui, ma se sei interessato a questo tipo di
  cose, ti raccomando vivamente di dargli un'occhiata comunque. La "casa
  base" per le informazioni su ntpd  il sito web dell'NTP a
  <http://www.eecis.udel.edu/~ntp/> che include pure collegamenti a
  tutti gli altri generi di cose riguardanti il tempo (compreso software
  per altri OS). Alcune distribuzioni Linux includono ntpd nei CD.

  Una caratteristica relativamente nuova in ntpd  il "burst mode",
  progettato per macchine che hanno solo un accesso intermittente ad
  Internet.


  Ntpd include driver per abbastanza pochi orologi radio (e pare che
  alcuni siano meglio supportati di altri). La maggior parte degli
  apparecchi di questo tipo sono progettati per l'utilizzo commerciale e
  costano migliaia di dollari, ma ci sono alcune alternative pi
  economiche (esaminate in successive sezioni). Nel passato erano
  ricevitori WWV o WWVB, ma ora la maggior parte sembra essere di tipo
  GPS. NIST mantiene un file PDF sul proprio server che elenca i
  fabbricanti di orologi radio, a
  <http://www.boulder.nist.gov/timefreq/links.htm> (vicino alla fine
  della pagina). Anche il sito web di NTP include molti collegamenti ai
  produttori, a  <http://www.eecis.udel.edu/~ntp/hardware.htm> e
  <http://www.eecis.udel.edu/~mills/ntp/refclock.htm>. Ogni lista pu
  essere aggiornata, come non esserlo :-). La lista dei driver per ntpd
   a  <http://www.eecis.udel.edu/~ntp/ntp_spool/html/refclock.htm>.

  Ntpd include anche driver per molti servizi di orario telefonici. Sono
  tutte chiamate a lunga distanza, perci assicurati di calcolarne
  l'effetto sulla tua bolletta prima di usarli!

  3.4.  Chrony

  Xntpd  stato scritto originariamente per sistemi provvisti di una
  connessione a tempo pieno ad un server d'orario di rete o a un
  orologio radio. In teoria pu essere anche usato con macchine che sono
  connesse solo a tratti, ma Richard Curnow non  mai riuscito a farlo
  funzionare come voleva... perci ha scritto "chrony", perch fosse
  un'alternativa per quelli di noi che hanno accesso in rete solo quando
  sono collegati ad un provider (il "burst mode" di ntpd  stato
  progettato appunto per risolvere questo stesso problema). La versione
  corrente di chrony comprende la correzione della deriva per l'RTC, per
  macchine che sono spente per un lungo periodo di tempo.

  Puoi avere maggiori informazioni dal sito web di Richard Curnow a
  <http://www.rrbcurnow.freenet.co.uk/chrony/index.html>. Il programma 
  distribuito solo come sorgente, ma la Debian ha incluso una
  distribuzione binaria nel suo archivio "non stabile". Il file sorgente
   disponibile anche negli archivi linux usuali.

  4.  Orologi radio

  4.1.  CHU ed il "Gadget Box"

  CHU, l'emittente d'orario ad onde corte situato presso Ottawa, 
  simile al WWV negli USA, ma con un'importante differenza: in aggiunta
  ad annunciare l'ora sia in inglese che in francese, trasmette pure
  l'orario corrente una volta al minuto usando i vecchi toni da modem
  "Bell 103" (300 baud). Questi toni sono molto facili da decodificare,
  e Bill Rossi si  reso conto che non ti serve neppure un modem: tutto
  ci che serve  una radio ad onde corte ed una scheda audio. Se puoi
  ricevere il segnale dal CHU, questo potrebbe risultare il pi
  economico orologio radio disponibile. La ricezione a onde corte varia
  nell'arco della giornata, ma Bill afferma che cambiando le frequenze
  due volte al giorno (mattino e sera) ottiene una copertura per quasi
  tutte le 24 ore. CHU trasmette su 3.33, 7.335 e 14.670 MHz.

  Per maggiori informazioni vedi il sito web di Bill Rossi a
  <http://www.rossi.com/chu/>. Il file sorgente  disponibile anche
  presso gli archivi Linux abituali. Per informazioni sui servizi
  d'orario della CHU vedi  <http://www.nrc.ca/inms/time/ctse.html>.

  Il sito web di NTP ha un progetto di un "gadget box" che decodifica il
  segnale orario CHU usando un economico chip di un modem da 300 baud e
  una qualsiasi radio ad onde corte, a
  <http://www.eecis.udel.edu/~ntp/ntp_spool/html/gadget.htm>. I piani
  includono un'immagine Postscript di un circuito stampato, a due
  faccie, ma devi realizzartela da solo (o trovare qualcuno che lo
  faccia per te).

  Ntpd include un driver (type 7) per i ricevitori CHU, che funziona sia
  con modem come il "gadget box", sia immettendo il sonoro direttamente
  nella presa del microfono di una SPARCstation Sun (o qualsiasi altra
  macchina con "driver audio compatibili").

  4.2.  WWV e l'"orologio pi accurato"

  Puoi aver sentito parlare del "Most Accurate Clock" (l'"orologio pi
  accurato", appunto), della Heatkit, che riceveva e decodificava il
  segnale orario della WWV e aveva una porta seriale opzionale per
  essere connesso ad un computer. La Heatkit cess di vendere questi kit
  molto tempo fa, ma continuarono a vendere la versione costruita in
  fabbrica fino al 1995, quando anche questa linea fu interrotta. Per i
  nostalgici dell'Heatkit (ma senza l'orologio), si veda
  <http://www.heathkit-museum.com>. La compagnia esiste ancora, e vende
  materiale educativo. Vedi  <http://www.heathkit.com>.

  Secondo Dave Mills, il brevetto della Heatkit sull'"orologio pi
  accurato" dovrebbe scadere presto, perci forse qualcuno l fuori
  potrebbe voler replicarlo su un IC a chip unico.

  Il sito web dell'NTP ha un programma DSP (e un file PDF che lo
  descrive) disponibile a
  <http://www.eecis.udel.edu/~mills/resource.htm> che decodifica il
  segnale orario del WWV utilizzando una radio ad onde corte e il
  TAPR/AMSAT DSP-93, un kit DSP che non  pi disponibile. Era basato
  sul chip TMS320C25 DSP chip della Texas Instruments. Il sito web del
  TAPR a  <http://www.tapr.org> contiene molte informazioni sulla
  programmazione DSP casalinga.

  Ntpd include un driver (type 6) per i codici d'orario IRIG-B e IRIG-E,
  che utilizza il /dev/audio di Sun SPARCstation, ma una nota dice che 
  "probabilmente portabile su altri sistemi". Il WWV usa il codice IRIG-
  H.

  Il WWV  gestito dal NIST, che ha un sito web a
  <http://www.boulder.nist.gov/timefreq/index.html>. Questo sito
  comprende il testo della "Special Publication 432", che descrive i
  loro servizi di orario e frequenze, a
  <http://www.boulder.nist.gov/timefreq/pubs/sp432/sp432.htm>. Il WWV
  trasmette sui 2.5, 5, 10, 15, e 20 Mhz.

  4.3.  GPS e l'"orologio totalmente accurato"

  Il segnale GPS include l'orario preciso, e alcuni ricevitori GPS hanno
  porte seriali. Ntpd comprende driver per molti ricevitori GPS. La
  caratteristica 1PPS ("One Pulse Per Second", una pulsazione per
  secondo, richiesta per un'elevata accuratezza) di solito richiede
  un'interfaccia separata per connetterli al computer.

  TAPR ("Tuscon Amateur Packet Radio") fabbrica un kit per
  un'interfaccia chiamata "TAC-2" (sta per "Totally Accurate Clock",
  orologio totalmente accurato) che si collega a una porta seriale e
  funziona con qualsiasi ricevitore GPS che possa fornire un uscita
  1PPS-- compresi alcuni modelli "bare board" ("solo scheda"), che
  possono esser montati direttamente alla scheda dei circuiti. Per
  maggiori informazioni, vedi il loro sito a  <http://www.tapr.org>. Il
  prezzo (a Giugno 1999)  attorno ai 140$, escluso il ricevitore GPS.
  Il kit non comprende alcun dispositivo di montaggio.

  Il "gadget box" del CHU (descritto in un'altra sezione) pu essere
  anche usato come interfaccia per il segnale 1PPS. Il sito dell'NTP
  contiene una discussione di questo argomento a
  <http://www.eecis.udel.edu/~ntp/ntp_spool/html/pps.htm>.
  4.4.  Segnali orari a bassa frequenza: DCF77, MSF(Rugby), WWVB

  Queste stazioni a bassa frequenza trasmettono un codice orario
  semplicemente accendendo o spegnendo la linea portante. Ogni stazione
  usa il proprio schema di codifica, le cui specifiche sono disponibili
  sul sito dell'NTP a  <http://www.eecis.udel.edu/~mills/ntp/index.htm>
  (vicino alla fine della pagina). DCF77 in Germania trasmette sui
  77.5kHz. MSF in Inghilterra (chiamata anche "Rugby", che si riferisce
  apparentemente alla sua locazione) e WWVB in Colorado trasmettono
  entrambe sui 60 kHz.

  Sembra che in Europa siano disponibili ricevitori economici che si
  possono collegare a una porta seriale. L'Ntpd include driver per un
  paio di ricevitori MSF.

  Parecchie compagnie negli USA vendono orologi relativamente economici
  (compresi molti orologi analogici da parete) che hanno dei ricevitori
  WWVB incorporati, ma sono al corrente solamente di due che possano
  esser collegati ad un computer:

  L'Ultralink Model 320, venduto per circa 120$ (a Giugno 1999), ha
  un'interfaccia seriale e un semplice set di comandi ASCII, perci non
  dovrebbe essere troppo difficile da programmare. Trae 1mA dalla porta
  seriale per l'alimentazione. L'antenna pu essere distante fino a 30
  metri dal computer, e l'unit contiene un suo orologio per tenere il
  tempo se perde il segnale. Vendono anche una versione "bare board"
  version per circa 80$ che  progettata per funzionare coi
  microcontroller delle serie "BASIC Stamp". Vedi
  <http://www.ulio.com/timepr.html>.

  L'Arcron Technology vende un orologio da tavolo per circa 130$,
  comprendente del software per Windows. Vedi  <http://www.arctime.com>

  La ricezione del WWVB varia, ma ci sono progetti di incrementare il
  suo potere trasmittente, in alcune fasi. Puoi seguire lo stato del
  processo sul sito del NIST, a
  <http://www.boulder.nist.gov/timefreq/wwvstatus.html>.

  5.  Istruzioni dettagliate per clock(8)

  Questa sezione  derivata dalla versione precedente di questo mini-
  HOWTO, ed  riportata per chi usasse ancora il vecchio programma
  clock(8). Tutto ci che ti serve sapere  nella pagina man, ma la
  seguente discussione ti guider nei vari passi del processo.


     Nota
        Devi avere i privilegi di root per lanciare "clock", o qualsiasi
        altro programma che intervenga sull'orario di sistema o
        sull'orologio CMOS.

  5.1.  Verificare l'installazione

  Cerca nei tuoi file di avvio del sistema un comando tipo "clock -a" o
  "clock -ua". A seconda di quale distribuzione stai usando, potrebbe
  essere in /etc/rc.local, o /etc/rc.d/rc.sysinit, o qualche luogo
  simile.

  Se dice "clock -s" o "clock -us", cambia la "s" in una "a", e poi
  verifica se hai il file /etc/adjtime, che contiene una singola linea
  simile a:


       0.000000 842214901 0.000000


  Questi numeri sono il fattore di correzione (in secondi al giorno), il
  momento in cui l'orologio  stato corretto per l'ultima volta (in
  secondi dal 1 Gennaio 1970) e il secondo parziale che  stato
  arrotondato quella volta. Se non hai quel file, fai un login come root
  e crealo, con una singola linea che appaia cos (tutti zero):


       0.0 0 0.0




  Poi lancia "clock -a" o "clock -ua" manualmente dalla shell per
  aggiornare il secondo numero (usa "u" se il tuo orologio  regolato
  sul tempo universale invece che sul locale).

  5.2.  Misurare la deriva dell'orologio

  Per prima cosa, ti serve sapere che ora  :-).  Il tuo tempo locale
  pu essere accurato o no. Il mio metodo preferito  chiamare il
  servizio telefonico allo (303)499-7111 (NdT: per l'Italia  il 161 e
  costa due scatti). Se hai accesso a un network time server, puoi usare
  il programma ntpdate dal pacchetto xntpd (usa l'opzione -b per
  prevenire che il kernel faccia confusione nell'orologio CMOS).
  Altrimenti usa "date -s hh:mm:ss" per regolare manualmente l'orario
  del kernel, e poi "clock -w" per sincronizzare da esso l'orologio
  CMOS. Dovrai ricordarti quando hai regolato l'orologio per l'ultima
  volta, perci annotati l'informazione da qualche parte. Se hai usato
  ntpdate, dai "date +%s" e annotati il numero dei secondi dal 1Gennaio
  1970

  Torna dopo un po' di tempo e controlla quanto ha deviato l'orologio.
  Se l'avevi regolato a mano, raccomando di aspettare almeno due
  settimane, e di limitarti a calcolare la deriva alla prima cifra
  decimale di secondo al giorno (alcuni pretendono maggiore accuratezza
  qui, ma io sono abbastanza conservatore). Se hai usato ntpdate non
  dovrai aspettare cos tanto, ma in ogni caso potrai regolare con
  maggiore precisione pi tardi.

  Puoi fare eseguire a cron il comando "clock -a" a intervalli  regolari
  per tenere l'orologio di sistema sincronizzato con quello CMOS. Questo
  comando sar anche eseguito dal tuo file d'avvio ogni volta che fai il
  boot, quindi se lo fai spesso (come molti di noi), questo dovrebbe
  essere sufficiente.

  Nota che alcuni programmi potrebbero lamentarsi se l'orario salta di
  pi di un secondo, o se viene spostato all'indietro. Se hai di questi
  problemi, puoi usare xntpd o ntpdate per correggere l'orario con
  maggiore gradualit.

  5.3.  Un esempio

  5.3.1.  Regolare l'orario

  Fai il login come root.  Componi il 161, e ascolta la comunicazione.
  Poi scrivi:


       date -s hh:mm:ss




  ma non premere Invio finch non scatta il minuto (puoi usare "ntpdate"
  qui, al posto di "date", e risparmiarti la telefonata). Questo regola
  il "kernel time" (orario del kernel). Poi scrivi:
       clock -w




  Questo regola l'orologio CMOS in modo che si sincronizzi all'orario
  del kernel. Poi scrivi:


       date +%j




  (o "date +%s" se hai usato "ntpdate" al posto di "date", qui sopra) e
  annotati il dato fornito, per la prossima volta.

  5.3.2.  Reimpostare l'orario e controllare la deriva

  Ritrova la data che ti eri annotato l'ultima volta.  Fai il login come
  root, e poi scrivi:


       clock -a




  Questo regola l'orario del kernel per sincronizzarlo a quello CMOS.
  Componi il 161 e ascolta l'annuncio; poi scrivi:


       date




  e premi Invio quando scatta il minuto, ma mentre aspetti scriviti
  l'orario annunciato, e non riappendere ancora. Questo ti dice che ora
  la macchina pensava fosse, quando avrebbe dovuto scattare precisamente
  il minuto.  Adesso scrivi:


       date hh:mm:00




  usando il minuto *dopo* quello che  appena stato annunciato, e premi
  Invio quando senti di nuovo che il minuto scatta (adesso puoi riappen
  dere).  Per hh usa l'ora locale.  Questo regola il "kernel time".  Poi
  digita:


       clock -w




  che scrive il nuovo (e corretto) orario nell'orologio CMOS.  Adesso
  immetti:


       date +%j


  (o "date +%s" se hai usato questo, pi sopra)

  Adesso hai tre numeri (due date e un orario) che ti permetteranno di
  calcolare la deriva.

  5.3.3.  Calcolare il fattore di correzione

  Quando hai avviato "date" sul cambio di minuto, la tua macchina era in
  ritardo o in anticipo? Se era in anticipo, dovrai sottrarre alcuni
  secondi, quindi annotateli come un numero negativo. Se era in ritardo,
  fai il contrario.

  Adesso sottrai le due date. Se hai usato "date +%j", il numero
  rappresenta il giorno dell'anno (1-365, o 1-366 in quelli bisestili).
  Se hai operato a cavallo del 1 Gennaio, aggiungi 365 (o 366) al
  secondo numero. Se hai usato "date +%s" allora il tuo numero  in
  secondi, e dovrai dividerlo per 86400 per avere i giorni.

  Se hai gi un fattore di correzione in /etc/adjtime, dovrai tenere
  conto dei secondi che saranno gi stati corretti. Se hai corretto in
  eccesso, questo numero avr segno opposto di quello che hai appena
  misurato; se hai corretto in difetto, avr lo stesso segno. Moltiplica
  il vecchio fattore di correzione per il numero di giorni, e aggiungi
  il nuovo numero di secondi (addizione con segno: se i due numeri hanno
  lo stesso  segno, otterrai un numero pi grande, altrimenti pi
  piccolo).


  Poi dividi il numero totale di secondi per i giorni per ottenere il
  nuovo fattore di correzione, ed immettilo in /etc/adjtime al posto del
  vecchio. Annotati la nuova data (in secondi o giorni) per la prossima
  volta.

  Questo  come appare il mio /etc/adjtime:


       -9.600000 845082716 -0.250655




  (nota che 9.6 secondi al giorno sono quasi 5 minuti al mese!)
























