R: Ora solare che torna legale
Luca Coianiz
lcoianiz a w3.to
Lun 13 Nov 2000 22:15:04 UTC
From: Luca Giuzzi <giuzzi a dmf.bs.unicatt.it>
> L'ora nel clock di sistema dovrebbe essere settata come UTC (=GMT a meno
di
> alcune correzioni). La conversione da ora legale ad ora solare viene
fatta
> a livello userspace in funzione del link /etc/localtime e della variabile
> TZ (timezone).
Ho settato il clock come UTC ed in /etc/localtime (che sulla mia macchina è
un file e non un link), oltre ad una sbrodolata incomprensibile di byte vari
(non è un file ASCII), sono presenti due scritte "CEST CET" (che immagino
stiano per Central Europe Time o simili).
Una cosa che NON ho trovato è la variabile TZ (con un 'set' dovrei vederla
no ?) e nemmeno alcun riferimento a DST (che dovrebbe essere il Daylight
Saving Time che mette a posto tutto).
> D'altro canto questo non piace troppo a windows98...
Non è un problema: Windoze sucks. ;-)
Mi basta che non si metta a scaravoltarmi l'ora come piace a lui, ma
dovrebbe averne poche occasioni: la macchina è dedicata a Linux (tranne
sporadici, sigh, multiplayer LAN).
> Il clock di sistema viene caricato dal comando hwclock (o similare)
durante
> la fase di inizializzazione (guarda in /etc/init.d o /etc/rc/init.d/ se
sei
> su RH).
Trovato... in /etc/rc.d/boot (SuSE)
- - - 8<- - - CUT - - - 8<- - - - - - 8<- - - CUT - - - 8<- - -
# set and adjust the CMOS clock
echo -n Setting up the CMOS clock
ECHO_RETURN=$rc_done
test "$GMT" != "YAST_ASK" && hwclock -s $GMT || ECHO_RETURN=$rc_failed
test -f /etc/adjtime || echo "0.0 0 0.0" > /etc/adjtime
test "$GMT" != "YAST_ASK" -a "$START_XNTPD" != "yes" && {
hwclock -a $GMT || ECHO_RETURN=$rc_failed
}
echo -e "$ECHO_RETURN"
- - - 8<- - - CUT - - - 8<- - - - - - 8<- - - CUT - - - 8<- - -
A parte alcuni giochini basati su $GMT e su $START_XNTPD mi par di capire
che l'RTC venga effettivamente settato.
Non ho ben capito come gestiscono l'adjust (a parte settarlo a "0.0 0 0.0")
ma daltronde non avevo capito nemmeno l'elaborata spiegazione di MAN
HWCLOCK.
> Il clock del bios non viene mai usato quando il sistema e' in
> modo multiuser. Se lo vuoi scrivere (dopo aver aggiornato l'ora), il
> comando e' hwclock -w ...altrimenti i cambiamenti vengono persi al
reboot.
Dallo script mi par di capire che effettuano un --set in base a $GMT (a
meno che non debbano "chiedere a YAST") però $GMT dev'essere valida solo
all'atto del boot: in seguito non ne trovo traccia.
> Critica: l'orologio di sistema DOVREBBE sempre essere settato su UTC a mio
> parere... questo consente di compensare automaticamente a livello user
> space per ora legale/secondi aggiuntivi inseriti per anno (ci sono anche
> quelli!) e a utilities (tipo il planetario xephem) che hanno bisogno di
> conoscere sempre `l'ora solare del posto' di potersela calcolare per
conto
> loro [va bhe'... xephem ha bisogno anche della longitudine, ma deve pur
> sapere che ora segna l'orologio di sistema!].
Ci sto provando... ma continuo a non trovare il punto in cui settare un
eventuale DST.
Non solo: una volta settato il sistema per usare UTC e come timezone
Europe/Rome... se non ci metto mano l'ora mi viene settata in automatico
"due ore avanti".
Ho anche provato a settare l'RTC sull'ora di sistema (hwclock --systohw) ma
dopo il boot rimanevo 1 ora avanti (es. le 11 anzichè le 10).
E' anche vero che non introducevo modifiche relative al DST. :-/
> Esiste un driver
> (clock.sys) che consente di implementare le timezones pure sotto
DOS/Windows.
> Se vuoi te lo posso passare...
Ti ringrazio ma le poche volte che Windoze gira sulla macchina dedicata a
Linux la precisione dell'orario è il minore dei miei problemi (in quesi casi
con il PC ci gioco solo).
> [ultima nota: le man pages da guardare sono: tzfile(5), zic(8), zdump(8),
> hwclock(8), le funzioni *timeofday(2) e la info page di date(1) ]
Ho letto la manpage di hwclock e l'ho trovata piuttosto farraginosa
(soprattutto dove parla dell'adjust del timer) mentre non ho trovato granchè
sul settaggio di DST (automatico o meno).
A questo punto pensavo di continuare a lavorare in UTC e scrivermi uno
script da eseguire al boot (oltre a quello che c'è già) per introdurre la
gestione dell'ora legale: mi pare che si possa calcolare (anche se adesso
non ricordo come) il passaggio in entrambi i sensi e settare di conseguenza
una variabile $DST (e, magari, una $DST_yet_set ;-) per correggere.
Ma non c'è proprio nulla che lo faccia già ?
NON è per ribadire la mia ben nota pigrizia, anzi... tempo permettendo mi
farebbe perfino piacere vedere se riesco a mettere giù 'sto script: è solo
per evitare di scoprire per l'ennesima volta l'acqua calda.
Bye
Sky
Maggiori informazioni sulla lista
Lug
|