Eddig úgy tartottam, hogy a BIOS-beli beállítások csak annyiban hatnak a Linuxra, hogy honnan induljon a rendszer - ha egyszer egy linux kernel átvette az irányítást, akkor már tökmindegy, mi van a BIOS-ban. Nos, tévedtem.
Mindezt az NTP kapcsán. A helyzet a következő (úgy tűnik, már csak volt): frugalware(-current, tehát most éppen 2.6.15-ös kernel) alatt a gépem órája egy perc alatt kb. egy másodpercet siet - még akkor is, ha valamilyen ntpd (akár openntpd, akár ntp.org-féle) fut. Ha ugyanezen a gépen ubuntut indítok, akkor viszont nem kell neki ntpd se: bootkor ntpdate-tel szépen szinkronizálja magát, és utána szinkronban is marad, gyakorlatilag bármennyi ideig.
Tehát a 2.6.8-as kernellel jó a dolog, 2.6.15-tel meg nem. (Egyébként már 2.6.13-mal sem.) Sokszor sokakat rángattam az őrület felé (lévén magamat is kergettem) azzal, hogy mitől van, miért van, hogyan lehetne megjavítani. Csakhogy hosszú ideig senki sem tudta reprodukálni. Később akadt egy IroNiQ (aztán több is), aki igen - és mindannyiunknak valamilyen AthlonXP-je van. Tehát akkor AMD, vagy Athlon-specifikus a probléma az újabb kernelekben.
Nos, mint kiderült, ez sem igaz. VMiklos szerint volt egy srác a fw-users-hu listán, akinél a "noapic" kernel paraméter megoldotta a problémát. Mondom ennek utánanézek, mi is ez a "noapic" valójában. Ugyan erre a kérdésre nem találtam választ, de megerősítést nyert, hogy ez a noapic-dolog nem disztribúció-függő. Viszont igazából nem ez a probléma gyökere; a programozható megszakításvezérlő kernelbeli kezelése ugyan lehet, hogy nem tökéletes, mégsem ott kell (lehet?) legegyszerűbben megoldani a problémát.
Kiderült ugyanis, hogy alaplapi lapkakészlettől és BIOS-beállítástól függ, hogy az óra siet-e... Nosza lássuk, hát valóban, az én alaplapom is nVidia nForce2 lapkakészlettel bír; nosza lássuk, és hát valóban, az én ISA hidam is MCP2-es; nosza lássuk, és hát valóban, a BIOS-ban az FSB Spread Spectrum "0.50%"-ra volt állítva.
Átnyomtam hát "disabled" állapotba, elindítottam a gépet, leállítottam az openntpd-t, szinkronizáltam az órát, elindítottam az openntpd-t, és láss csodát, végre nem siet elfele az órám, hanem egyre pontosabb:
Feb 16 23:54:31 localhost ntpd[2502]: adjusting local clock by 0.947996s Feb 16 23:58:44 localhost ntpd[2502]: adjusting local clock by 0.819979s Feb 17 00:03:03 localhost ntpd[2502]: adjusting local clock by 0.626713s Feb 17 00:06:55 localhost ntpd[2502]: adjusting local clock by 0.369939s
Azért persze kíváncsi leszek, hogy holnap (és egy hét múlva) is ilyen jó lesz-e a helyzet...
Frissítés: Kifelejtettem, hogy korábban mindkét ntpd azt mondta frugal alatt, hogy állítja az órát -x, -(x+y), -(x+y+z) értékkel, de nem tette. Mostanáig azonban úgy tűnik, hogy az FSB SS letiltása megoldotta a problémát:
Feb 17 00:06:55 localhost ntpd[2502]: adjusting local clock by 0.369939s Feb 17 09:12:36 localhost ntpd[2502]: adjusting local clock by 0.170461s Feb 17 09:22:35 localhost ntpd[2502]: adjusting local clock by -0.155062s
Ha nem felejtem el, egy hét múlva megint nyomok egy "tail -n 10000 /var/log/messages | grep ntp.*adjust" parancsot, és beszámolok az eredményről.