linux user group brescia

immagine del castello

Archivio della mailing list

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