PLD i DST

Jacek Sobczak jaceksobczak w poczta.onet.pl
Pon, 8 Kwi 2002, 19:00:03 CEST


On Mon, 8 Apr 2002 13:12:00 +0200
Jacek Konieczny <jajcus w bnet.pl> wrote:

> On Mon, Apr 08, 2002 at 01:34:51PM +0200, Krzysztof Drewicz wrote:
> > On Sun, 7 Apr 2002, Jacek Sobczak wrote:
> > 
> > > /usr/share/zoneinfo/posix/Europe/Warsaw. Spodziewałem się że
> > > przełączenie czasu nastąpi tylko na podstawie informacji o strefie
> > 
> > 
> > Jakie przelaczenie? Zegar rtc trzyma sie w utc,
> Niestety na to można sobie pozwolić jedynie, gdy na tej maszynie nie ma
> oprócz Linuksa jakiegoś "chorego systemu" :-(
> A jak jest "chory system", plus "przemądrzały BIOS" to czas może się sam
> przełączyć trzykrotnie, albo i wcale :-)

Ponieważ było mi to z innych powodów potrzebne spłodziłem takie
micro-howto. Jeśli są w tym jakieś bzdury proszę o weryfikację:

Czas systemowy jest zawsze zgodny z Greenwich i jest liczony
niezależnie od zegara zamontowanego w komputerze. Zegarek z komputera
jest właściwie w ogóle niepotrzebny, bo jądro samo zlicza przerwania
zegarowe i odmierza czas. Jakkolwiek po restarcie komputera trzeba
jakoś czas zainicjować i wtedy najczęściej używany jest czas odczytany
z hardware'owego  zegarka (bez inicjalizacji punkt zero to jakaś data
w 1970). Inicjalizacja wykonywana jest u mnie w skrypcie
"/etc/rc.d/rc.sysinit" przez polecenie "hwclock --hctosys". Dodatkowy
parametr "--utc" mówi, że zegarek chodzi według czasu Greenwich, a
parametr "--local", że jest ustawiony na czas lokalny. Z jakim
parametrem skrypt wywołuje "hwclock" ustawiam w pliku
"/etc/sysconfig/clock". Polecenie "hwclock" patrzy na ustawioną strefę
czasową określoną przez odpowiedni link i plik (u mnie link
/etc/localtime wskazuje na plik strefy czasowej
/usr/share/zoneinfo/posix/Europe/Warsaw). Zgodnie z informacjami o
strefie jest inicjalizowany zegar systemowy Linuksa tak, żeby
wskazywał czas Greenwich. Jeżeli zegarek komputera chodzi z tym
czasem, to jest on brany wprost. Takie ustawienie zegarka dla
komputera pracującego z Linuksem jest najbardziej pożądane. Czas
lokalny należy ustawiać na komputerach bootowanych również z Windows,
bo tak ten system wymaga. To że aplikacje pod Linuksem pokazują czas
właściwy dla strefy czasowej wynika z faktu, że funkcja do odczytu
czasu systemowego posługuje się informacjami o strefie czasowej i
dokonuje modyfikacji zwracanego czasu. Żeby czas Linuksa był dokładny
można go synchronizować z serwerami czasu (protokół NTP) poleceniem
"rdate". Można to robić okresowo z crona. Czas zegarka hardwarowego
nie jest przestawiany. Można to zrobić poleceniem "hwclock --systohc"
jak ma się pewność, że zegar Linuksa chodzi dokładnie (np. po
synchronizacji). To tyle wstępu. Jeśli chodzi o meritum, czyli jak
przestawić czas letni automatycznie to w świetle powyższego robi się
to samo z siebie o ile wszystko jest dobrze ustawione :-).

Dzięki
Jacek


-- 

Tego nie znajdziesz w żadnym sklepie!
[ http://oferty.onet.pl ]




Więcej informacji o liście dyskusyjnej pld-users-pl