File: Clock

package info (click to toggle)
doc-linux-it 2000.01-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 8,136 kB
  • ctags: 19
  • sloc: perl: 249; makefile: 50; sh: 42
file content (330 lines) | stat: -rw-r--r-- 11,548 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
  The Clock Mini-HOWTO
  Ron Bean, rbean@execpc.com
  v, Dicembre 1996

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

  1.  Introduzione

  I chip RTC (NdT: Real-time-clock, orologio in tempo reale) usati sulle
  piastre madri dei PC (ed anche delle workstation pi costose) sono
  notoriamente imprecisi. Linux fornisce un mezzo semplice per rimediare
  a questo via software, rendendo l'orologio potenzialmente *molto*
  preciso anche senza bisogno di sincronizzarlo continuamente a una
  fonte esterna. Ma la maggior parte delle persone non sembrano saperlo,
  per molte ragioni:

  1. Non  menzionato nella maggior parte dei documenti su come
     impostare Linux, e sarebbe difficile (sebbene non impossibile in
     teoria, se hai un modem) regolare automaticamente tali impostazioni
     all'installazione.

  2. Se consulti ``man clock'' otterrai clock(3), che non  ci che ti
     serve (prova ``man 8 clock'').


  3. La maggior parte della gente non sembra essere interessata a che
     ora sia.


  4. Quei pochi cui interessa spesso usano il pacchetto xntpd da
     louie.udel.edu per sincronizzarsi ad una fonte esterna, come un
     network time server o un orologio radio.

  Questo mini-HOWTO descrive l'approccio low-tech.  Se sei maggiormente
  interessato a questi argomenti, ti raccomando caldamente di spendere
  un po' di tempo su  <http://www.eecis.udel.edu/~ntp/>, che comprende
  molte cose interessanti, incluse informazioni complete su xntpd e
  collegamenti a NIST and USNO (aggiunger un paio di commenti su xntpd
  alla fine).


     Note
        Se hai pi di un sistema operativo sulla tua macchina, dovresti
        permettere ad uno solo di modificare l'orario dell'orologio
        CMOS, cos che non si confondano l'un l'altro.  Se usi
        regolarmente sia Linux che Windows sullo stesso computer,
        potresti provare uno dei programmi shareware di gestione
        dell'orologio interno che sono disponibili per windows (segui i
        collegamenti dall'URL qui sopra).

  2.  Usare il programma `` clock ''

  Tutto ci che ti serve sapere  nella pagina del manuale clock(8), ma
  questo mini-HOWTO ti guider lungo la procedura.


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

  2.1.  Verificare la correttezza dell'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 che sembra qualcosa del genere:


       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).

  2.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 1
  Gennaio 1970

  Poi 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.

  2.3.  Un esempio



  2.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 ``ntp
  date'' 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.

  2.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
  riappendere).  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.

  2.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!)


  3.  Alcune parole su xntpd

  Il tuo sistema ha effettivamente due orologi: il ``real time clock''
  (orologio in tempo reale) alimentato a batteria, che tiene il tempo
  quando il sistema  spento (conosciuto anche come ``CMOS clock'',
  ``Hardware clock'', o ``RTC'') ed il ``kernel time'' (orologio del
  kernel, qualche volta chiamato ``software clock'' o ``system clock''),
  che  basato sul timer interrupt ed  inizializzato dall'orologio CMOS
  al momento dell'avvio del sistema. Questi deviano con tassi diversi,
  quindi divergeranno gradualmente l'uno dall'altro, e anche dal tempo
  reale.

  Tutti i riferimenti all'``orologio'' (the clock) nella documentazione
  di xntpd si riferiscono a quello del kernel. Quando avvii xntpd o
  timed (o qualsiasi altro programma che usi la chiamata di sistema
  adjtimex), il kernel di Linux assume che il 'suo' orologio sia pi
  accurato di quello del CMOS, e reimposta quest'ultimo ogni 11 minuti
  da quel momento in poi (finch non si riavvia la macchina).  Questo
  significa che ``clock'' non sa pi quando l'orologio CMOS  stato
  regolato l'ultima volta, quindi non pu usare il fattore di correzione
  in /etc/adjtime.  Puoi usare ntpdate nel tuo file di avvio per
  regolare l'orologio da un timeserver prima di avviare xntpd.  Se non
  hai un accesso continuo a un'accurata fonte di orario quando avvii la
  macchina, questo pu essere un po' problematico: xntpd non 
  propriamente progettato per  essere usato in tali situazioni.

  xntpd include i driver per molti orologi radio, e pu anche essere
  impostato per chiamare il servizio telefonico di NIST a intervalli
  regolari (assicurati di calcolare l'effetto sulla bolletta telefonica
  quando decidi l'intervallo tra le chiamate) (NdT: soprattutto se
  chiami dall'Italia!).  Pu anche applicare un fattore di correzione
  all'orologio del kernel se questo perde contatto con le sue sorgenti
  esterne per un certo periodo di tempo.

  La maggior parte degli orologi radio costano $3-4000, ma puoi
  facilmente ottenere gli schemi di un poco costoso ``gadget box''
  (effettivamente un modem a 300 baud) che stia tra il tuo computer e
  una qualunque radio ad onde corte regolata sul segnale orario della
  stazione del CHU in Canada (vedi
  <ftp://ftp.udel.edu/pub/ntp/gadget.tar.Z>).  L'Heathkit WWV receiver
  (l'``Orologio pi accurato'')  pure ancora disponibile (NdT: si parla
  del 1996), sebbene non sia un kit, e costa attorno ai $4-500.  I
  segnali GPS contengono inoltre informazioni sull'orario, e alcuni
  ricevitori GPS possono essere collegati alla porta seriale. Questa
  potrebbe diventare la soluzione pi a basso costo nel futuro.

  In teoria, qualcuno potrebbe usare il segnale orario telefonico della
  NIST per calcolare automaticamente la deriva dell'orologio CMOS e di
  quello del kernel. Non conosco nessun programma singolo che lo faccia,
  ma probabilmente la maggior parte del codice potrebbe essere presa a
  prestito da xntpd.

  Tradotto da Germano Rizzo, germano@geocities.com