sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #16656
Re: System ur og cmos ur - y2k korrigering?
In <386487F4.7151FDA6@xxxxxxxxxxxxxx> Peter Wood <peter.wood@xxxxxxxxxxxxxx> writes:
>Jeg har læst et eller andet sted at det skulle være muligt at lave en
>script som lægger et bestemt antal dage til cmos uret når jeg boote
>maskinen. Sådan at system uret er rigtigt selv om cmos uret har
>sprunget tilbage til 1980 ved årtusindskiftet. Det drejer sig om en
>(rigtig) gamle laptop med Debian 2.1 installeret.
Som Frank m.fl. har illustreret, så kan det gøres med et simpelt shell-script.
Men som Perl folkene siger : "There is more than one way to do it". Jeg ville
nok pille i Linux-kernen's rutine, som læser CMOS uret - så er det ligegyldigt
om cmos-årstallet er rigtigt: Når blot kernen gør "det rigtige" følger resten
af systemet med.
Det er ikke så svært, som man måske skulle tro. I Linux 2.2 kernen skal man
have fat i /usr/src/linux/arch/i386/kernel/time.c . Omkring linie 500 findes
rutinen "get_cmos_time", der aflæser CMOS uret og returnerer en standard
Unix tid (sekunder siden 0:00 GMT 1/1/1970). Umiddelbart inden denne rutine
returnerer - d.v.s. inden kaldet af "mktime" - ændrer man blot det årstal
som er aflæst fra cmos-uret. F.eks. hvis man sætter CMOS uret til 1972 i
år 2000 (eller 1971 endnu her i 1999), altså 28 år førend den virkelige tid:
if ((year += 1900) < 1970)
year += 100;
year += 28; /* <<<------ Tilføj denne linie */
return mktime(year, mon, day, hour, min, sec);
Voila - cmos uret siger "72" men Linux kernen justerer så det bliver
aflæst som 1972+28=2000.
Jeg har ikke lige en 2.0 kerne-source ved hånden, men der er formentlig ikke
sket den store forandring i denne del af koden, så det skulle være over-
kommeligt at lave denne ændring også på ældre kerne-versioner.
--
Henrik Storner | "Software engineering is a race between engineers
<storner@xxxxxxxx> | who try to create foolproof software and the
| universe which is trying to create bigger fools.
| So far, the universe is winning..."
Follow ups
References