Das cty2k.zip-Paket enthält zur Zeit zwei Programme, cty2ktst und cty2kfix, die zum Testen von PCs auf ihre Jahr-2000-Tauglichkeit und zum Beheben einiger dabei auftretender Probleme dienen. Es geht dabei nur um die rudimentäre Fähigkeit der Hardware. Probleme in Anwendungen und Datenbeständen kann die Software weder aufspüren noch beheben.
Die Verfahren, derer sich diese beiden Programme bedienen, haben wir nach bestem Wissen und Gewissen ausgewählt. Sie spiegeln unseren derzeitigen Erkenntnisstand in bezug auf PC-Hardware und das Jahr 2000 wider. Die Programme treffen keine Aussage darüber, daß ein PC mit aller Hard- und Software tatsächlich "Jahr-2000-fest" ist.
Trotz aller Sorgfalt, können wir weder eine Garantie dafür übernehmen, daß diese Programme alle erdenklichen Fehler aufspüren und beseitigen, noch fehlerfreie Funktion in allen Fällen zusichern. Zur Prävention weisen wir daraufhin, daß es wichtig ist, Sicherheitskopien seiner Daten vorher (!) anzufertigen.
Die Motivation, diese Programme trotz des großen Angebots zu erstellen, lag vor allem darin, die genauen Zusammenhänge zu erkunden und die Funktionsweise zu kontrollieren. Neben dem reinen Funktionstest war uns wichtig zu vermitteln, an welchen Stellen es bei einem PC klemmt.
Deshalb: Sollten uns neue Erkenntnisse vorliegen, die eine Anpassung der Programme erfordern, so werden wir diese nach Möglichkeit umsetzen. Anregungen dazu und Kritik sind jederzeit willkommen (am besten via EMail an cty2k@ct.heise.de). Aktuelle Informationen, sofern sich Abweichungen ergeben, werden wir auf der cty2k-Homepage veröffentlichen:
www.heise.de/ct/Redaktion/ps/cty2k.html
cty2ktst stellt das eigentliche Testwerkzeug dar. Es arbeitet wahlweise unter DOS, kommt aber auch ohne aus. Ein Einsatz unter Windows ergibt keinen Sinn. Das Verfahren, das cty2ktst benutzt, ist in beiden Fällen identisch. Folgende vier Stufen des Tests werden, je nachdem, wie einzelne Tests abschliessen, maximal durchlaufen.
Zuerst stellt cty2ktst die Systemuhr eines PCs kurz vor den Wechsel auf das Jahr 2000. Es wartet einen kurzen Moment und prüft dann, wie die Hardware und das BIOS reagieren. Auf modernen PCs, die bei der Umstellung keine Probleme erwarten lassen, genügt dieser Test (im folgenden BIOS-Test genannt).
Seit der Version 1.3 überprüft
cty2ktst zusätzlich, ob das BIOS einen aktiven Korrekturversuch
unternimmt. Einige moderne PCs bringen einen Korrekturmechanismus mit,
der permanent lauert, ob das Jahr 2000 begonnen hat und dann erst
eingreift. über diese Art der Lösung läßt sich streiten; später mehr
dazu. Sie heißt im folgenden BIOS-Test-2.
Viele ältere, aber auch brandaktuelle PCs meistern weder den ersten noch den zweiten Testschritt. cty2ktst löst in einem solchen Fall einen Hardware-Reset aus. Ein zweiter Start des Programmes liefert Aufschluß, ob das BIOS des Systems den Übergang ins Jahr 2000 jetzt bemerkt und korrigiert hat. Moderne PCs meistern spätestens diesen Test (POST-Test).
Auf alten PCs ist oft noch ein vierter Testdurchgang nötig; cty2ktst löst dazu erneut einen Reset aus. Beim dritten Programmstart (vierten Testschritt) schließlich zeigt sich, ob ein PC grundsätzlich im Jahr 2000 arbeitsfähig bleibt, etwa wenn man die Systemuhr einmal von Hand umstellt (Systeme mit Award-BIOS aus den Jahren 94 bis 96 können das unter Umständen nicht). Ein Großteil der alten PCs hat hierbei aber keine Probleme (Fix-Test).
Bevor cty2ktst einen Reset auslöst, legt es eine zehn Sekunden lange Pause ein, so daß die Möglichkeit besteht, das System für diesen Schritt auch abzuschalten. Nur beim zweiten Testschritt, der ebenfalls eine Wartezeit von fünf Sekunden beinhaltet und auf eine permanent lauernde Korrekturfunktion des BIOS testet, darf das System nicht abgeschaltet werden. Unserer Erkenntnis nach, ist das Abschalten vor dem Reset aber nicht erforderlich. Nach Abschluß der Tests stellt cty2ktst die Einstellung der Real Time Clock (RTC) wieder her, restauriert also Datum und Uhrzeit; eine geringe Abweichung ist aber nicht auszuschließen. Sollte das Restaurieren nicht klappen, gibt das Programm eine entsprechende Warnmeldung aus.
cty2ktst läuft sowohl unter DOS als auch eigenständig ohne Hilfe eines Betriebssystems, indem es sich selbst auf eine formatierte Diskette vervielfältigt und von dort über einen eigenen Boot-Loader startet. Die Vervielfältigungsfunktion arbeitet unter (MS/DR/Caldera/PC-)DOS, Windows 3.1, 95, 98 und NT, Linux (mit dosemu) sowie OS/2 ab 2.x. Sie läßt sich durch einen speziellen Parameter auswählen, den man dem Programm beim Aufruf mitgibt (siehe Optionen).
Der Einsatz des Programms über die produzierte Diskette hat zwei Vorteile: Erstens ist der Test wesentlich schneller absolviert, als wenn noch ein Betriebssystem involviert wäre. Und zweitens muß man nicht erst ein eventuell gar nicht vorhandes Betriebssystem herbeischaffen. Es mag ein Nachteil sein, daß die Disketten-Variante natürlich kein nachträglich lesbares Protokoll anfertigt, sondern das Ergebnis nur auf dem Bildschirm zeigt. Die Ausgaben der DOS-Variante lassen sich dagegen mit der Ausgabeumleitung in einer Datei protokollieren.
Beide Versionen brauchen Schreibzugriff auf den Datenträger, von dem aus sie gestartet wurden. (cty2ktst speichert dort seine Laufzeitdaten und sichert dort auch die beim Erstaufruf angegebenen Optionen.) Das heißt, die Boot-Diskette darf nicht schreibgeschützt sein. Die unter DOS laufende Version schreibt ihre Daten in eine temporäre Datei im aktuellen Verzeichnis des aktuellen Laufwerks. Diese Datei wird bei Testende automatisch gelöscht.
Für den Einsatz der DOS-Version empfiehlt es sich, eine ansonsten nackte Boot-Diskette oder spezielle Bootkonfiguration anzufertigen, da unter Umständen mehrere Durchläufe notwendig sind. Es sollte in jedem Fall sichergestellt sein, daß keine andere Software auf die Real Time Clock (RTC) zugreift. Auch andere DOS-Helferlein sind zu meiden, etwa Speichermanager à la EMM386, da sie unter Umständen das Auslösen eines Reset verhindern (siehe Optionen).
Das Benuzten von cty2ktst ist einfach. Unter DOS sollte sichergestellt sein, daß das Programm automatisch wieder startet, wenn es einen Reset ausgelöst hat. Das läßt sich zum Beispiel bewerkstelligen, indem man den Programmaufruf als erstes Kommando in die autoexec.bat-Datei einer Test-DOS-Bootdiskette aufnimmt.
cty2ktst stellt selbständig fest, ob ein weiterer Programmlauf notwendig ist. Hat es das Testende erreich, setzt es die weitere Ausführung etwa einer autoexec.bat-Datei fort. (Die eigenständig via Boot-Diskette laufende Version hingegen fordert zur Entnahme der Diskette zum Drücken einer Taste auf und löst dann einen Reset aus.)
Die Ausgaben, die die DOS-Version tätigt, lassen sich über die Ein-/Ausgabeumlenkung in eine Datei protokollieren. Je nachdem an welchen Informationen Sie interessiert sind, müssen Sie dazu ein oder mehrere Umlenkzeichen verwenden (eines sorgt dafür, daß die Datei neu erzeugt wird, zwei hängen die Ausgaben Lauf für Lauf aneinander: also "cty2ktst > test.log" oder "cty2ktst >> test.log". Alle hier wiedergegebenen Ausgaben des Programms sind zum Beispiel so entstanden.
Während des Testens gibt cty2ktst Informationen, was es gerade tut und wie einzelne Tests ausgegangen sind. Anschließend an den letzten Testlauf liefert es eine Zusammenfassung der wichtigen Ergebnisse (Ausgaben). Die Zusammenfassung allein genügt, um ein System zu beurteilen. Auf einem System, dessen BIOS geeignete Korrekturmechanismen aufweist, ergibt sich nach dem Aufruf von cty2ktst folgende Ausgabe:
cty2ktst 1.00, (C) c't/ps Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware Test, wie RTC/BIOS den Uebergang von 1999 auf 2000 meistern RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19) 01.01.2000 BIOS korrigiert Jahrhundert - System ist Jahr-2000-fest RTC-klassisch, CMOS-Jahrhundertbyte korrigiert (=20) Zusammenfassung: BIOS korrigiert Jahrhundert - System ist Jahr-2000-fest
Bevor das Programm an der BIOS-Schnittstellte prüft, ob ein System den Übergang ins Jahr 2000 sauber vollzieht, liest es zuerst das Jahrhundertbyte im CMOS-RAM aus. Systeme, die einen modernen RTC-Baustein aufweisen, schaffen den Übergang ins Jahr 2000 ganz ohne BIOS-Hilfe. Sie sind aber auch noch heute eher rar. Die Masse der PCs schafft das nicht ohne das BIOS. Erst der von cty2ktst anschließend eingesetzte BIOS-Aufruf erledigt das gemeinhin. cty2ktst wiederholt deshalb den direkten Zugriff auf das Jahrundertbyte im Anschluß an den BIOS-Aufruf. (In den zuvor angegebenen Beispielausgaben handelt es sich um ein solches System: Das Jahrhundertbyte wird erst angepaßt, wenn das BIOS nach dem aktuellen Datum gefragt wurde.)
Auf einem System, das im BIOS keinen Korrekturcode enthält, sind bis zu drei weitere Tests erforderlich:
cty2ktst 1.00, (C) c't/ps Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware Test, wie RTC/BIOS den Uebergang von 1999 auf 2000 meistern RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19) 01.01.1900 BIOS korrigiert Jahrhundert nicht RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19) Reset-/Abschalt-Test erforderlich ... noch 9 Sekunden
Im ersten Durchlauf bemerkt cty2ktst, daß der BIOS-Code den Überlauf der RTC nicht honoriert. Zur Sicherheit (obwohl praktisch wohl nicht vorkommend) gibt es auch hier ein zweites Mal die Information im CMOS-Jahrhundertbyte preis und startet anschließend das System neu.
Bei einigen BIOS-Versionen, die aktiven Korrekturcode enthalten (also eine permanente Überwachung für den Jahreswechsel von 00 auf 99) konnte man hier bei der zweiten Ausgabe des CMOS-Jahrhundertbyte sehen, daß etwas passiert war. Es stand in der Meldung dann schon auf "20". Leider hat die Version 1.00 das nicht mehr erfasst, sondern erst im nächsten Testschritt die Umstellung bemerkt - dadurch wurde das System grundsätzlich zwar richtig beurteilt, aber zu spät.
Mit der Version 1.3 prüft
cty2ktst speziell auf diesen Korrekturcode: Während der eigentlichen
Umstellung auf das Jahr 2000 schaltet das Programm bestimmte
Interrupt-Quellen ab. Erst wenn der Uebergang vollzogen und das
Jahrhundertbyte freigegeben ist, erlaubt es sie wieder. In einer 5
Sekunden langen Pause gibt es dem BIOS Gelegenheit das Jahrhundertbyte
anzupassen.
cty2ktst 1.3, (C) c't/ps
Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware
Test, wie RTC/BIOS den Uebergang von 1999 auf 2000 meistern
RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)
01.01.1900 BIOS korrigiert Jahrhundert nicht im ersten Durchlauf
CMOS-Jahrhundertbyte erst nachtraeglich vom BIOS manipuliert (=20)
BIOS korrigiert Jahrhundert verpaetet. System ist bedingt Jahr-2000-fest
Zusammenfassung:
BIOS korrigiert Jahrhundert nicht im ersten Durchlauf
BIOS korrigiert Jahrhundert verpaetet. System ist bedingt Jahr-2000-fest
Das Wort "verspaetet" bringt nur die Testabfolge zum Ausdruck. Es stellt keineswegs eine Bewertung darüber dar, daß Korrekturen zu spät ausgeführt werden. Über die Jahr-2000-Festigkeit eines solchen PCs läßt sich indes streiten. Da das für den Testablauf nicht relevant ist, diskutiert ein späterer Abschnitt diese Korrekturmaßnahme für das Jahr 2000.
Der aktive Korrekturcode stellt ebenso wie eine (super-)moderne RTC eher die Ausnahme bei heutigen PCs dar. Da beides allerdings unter Umständen die Testaussagen verfälscht oder sogar dazu führt, daß unterschiedliche Test-Werkzeuge zu unterschiedlichen Ergebnissen kommen, widmet die Version 1.3 diesem Fall Aufmerksamkeit. Wenn ein System weder eine moderne RTC mitbringt noch BIOS-Korrekturcode, überprüft das Programm, ob eventuell aktiver Korrekturcode vorhanden ist. Falls nicht meldet es das entsprechend:
cty2ktst 1.3, (C) c't/ps
Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware
Test, wie RTC/BIOS den Uebergang von 1999 auf 2000 meistern
RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)
01.01.1900 BIOS korrigiert Jahrhundert nicht im ersten Durchlauf
RTC-klassisch, CMOS-Jahrhundertbyte nicht korrigiert (=19)
Keine Softwarekorrektur festgestellt, die Jahrhundertbyte aendert
Reset-/Abschalt-Test erforderlich ... noch 9 Sekunden
Bei einigen unserer Testsysteme kommt cty2ktst im nächsten Schritt (dem POST-Test) zum Ende. Sie korrigieren den Wechsel aufs Jahr 2000 zwar nicht in der BIOS-Routine zum Auslesen der RTC, sehrwohl aber während des Selbsttests (POST):
cty2ktst 1.3, (C) c't/ps Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware RTC-klassisch, CMOS-Jahrhundertbyte vom BIOS korrigiert (=20) 01.01.2000 BIOS korrigiert Jahrhundert im POST - System ist Jahr-2000-fest Zusammenfassung: BIOS korrigiert Jahrhundert nicht im ersten Durchlauf BIOS korrigiert Jahrhundert im POST - System ist Jahr-2000-fest
Ältere Systeme bewältigen die Umstellung aufs Jahr 2000 aber gar nicht von allein. Sie sind manuell am 1.1.2000 oder später umzustellen. Nicht in jedem Fall klappt das. Deswegen stellt cty2ktst via BIOS-Routine das Datum auf einen Tag im Jahr 2000 ein und simuliert so die selbst bei wirklich alten 286ern mögliche manuelle Datumskorrektur:
cty2ktst 1.00, (C) c't/ps Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware RTC-klassisch, CMOS-Jahrhundertbyte vom BIOS korrigiert (=20) 25.03.2000 BIOS erlaubt und behaelt einmalige manuelle Korrektur Zusammenfassung: BIOS korrigiert Jahrhundert nicht BIOS korrigiert Jahrhundert auch nicht im POST BIOS erlaubt und behaelt einmalige manuelle Korrektur
Fazit: Dieses System erfordert eine einmalige Umstellung im Jahr 2000. Es gibt keine Anzeichen dafür, daß es diese Korrektur vergißt oder das manuell erfaßte Datum eigenmächtig verändert. Je nachdem, was für ein Betriebssystem auf dem PC läuft, muß man diese Korrektur nicht einmal von Hand durchführen: Manches Betriebssystem erledigt sie von sich aus. Andere brauchen die Korrektur nicht. Sollte die Korrektur nötig sein, kann sie cty2kfix automatisch übernehmen.
Leider kann es auch anders kommen:
cty2ktst 1.00, (C) c't/ps Programm zum Testen der Jahr-2000-Vertraeglichkeit der PC-Hardware RTC-klassisch, CMOS-Jahrhundertbyte vom BIOS korrigiert (=20) 25.03.2096 BIOS erlaubt keine manuelle Korrektur (Award-Bug!) Zusammenfassung: BIOS korrigiert Jahrhundert nicht BIOS korrigiert Jahrhundert auch nicht im POST BIOS erlaubt keine manuelle Korrektur (Award-Bug!)
Wer eine solche Meldung bekommt, hat Pech. Das Testsystem hat wahrscheinlich ein Award-BIOS aus der Zeit von 94 bis 96. Diese Versionen stolpern über ein korrekt eingestelltes Datum im Jahr 2000. Das BIOS toleriert als Jahrensangaben nur 1996 (manche auch 1994) bis 1999. Sie korrigieren das Jahrzehnt immer auf einen Startwert, egal, ob das Jahrundert auf 19 oder 20 gestellt ist. Ein BIOS-Update ist fällig. Ist das nicht zu bekommen, hilft cty2kfix.
Die Datumsangaben, die cty2ktst in den obigen Beispielen ausgibt (etwa beim letzten Test den 25.03.2000) dienen der Sichtkontrolle. Da wir nicht jede potentielle BIOS-Macke aller Prüflinge im Vorfeld kennen (wir gehen jedenfalls davon aus), erleichtern diese Ausgaben das Eingrenzen eventueller bis jetzt unbekannter Fehler. cty2ktst tätigt diese Ausgaben nur, wenn es mit der Option /v gestartet respektive die Bootdiskette damit produziert wird.
Egal, ob Sie cty2ktst unter DOS oder die eigenständig lauffähige Version benutzen, bleiben die Ausgaben die gleichen. Mit einer Ausnahme: Wird als Testgrundlage ein "modernes" DOS (etwa aus Windows 98) verwendet, kommt der Test bereits im zweiten Schritt zum Abschluß. cty2ktst attestiert dem BIOS-POST-Code dann, daß er das System korrekt umstellt (tatsächlich tut das aber der Start-Code der jeweiligen DOS-Version).
Leider lassen sich die MSDOS-Versionen, die diesen Code enthalten und die übrigen, nicht mit vertretbarem Aufwand unterscheiden, so daß die DOS-Warnmeldung, die cty2ktst unter Umständen ausgibt, nicht zwangsläufig richtig sein muß. Kurzum: Wer tatsächlich den Fähigkeiten seines PCs auf den Zahn fühlen will, nimmt entweder ein altes DOS (kleiner 7) oder die cty2ktst-Bootdiskette.
Eine Reihe weiterer Meldungen zeigen wir an dieser Stelle nicht. Sie sind weitgehend selbsterklärend und können zum Beispiel auftreten, wenn die Testdiskette schreibgeschützt ist (cty2ktst braucht zum Erkennen der Testschritte und zum Merken der Ergebnisse Schreibzugriff auf das aktuelle DOS-Laufwerk und -Verzeichnis respektive seine Testdiskette).
Das Risiko beim Einsatz von cty2ktst ist nach unserer Erfahrung gering. Dennoch wollen wir die durch einen Leser gemachte Erfahrung nicht verschweigen: Ein älteres System (auf 80386-Basis) erzeugte nach dem Umstellen auf das Jahr 2000 (unter DOS) laufend NMIs (nicht maskierbare Interruptanforderungen). Dieser Effekt ließ sich nur abstellen, indem man den Inhalt des CMOS-RAMs zurücksetzte. Vermutlich handelt es sich dabei um einen Fehler im BIOS, der beim Zugriff auf die Register der RTC die NMI-Maske verändert. Eine hieb- und stichfeste Erklärung steht aber noch aus.
In der Version 1.3 sind alle
Zugriffe auf das CMOS-RAM (auf die RTC-Register selbst greift cty2ktst
ohnehin nicht zu) durch das Sperren von Interrupts geschützt. Dieser
eigentlich selbstverständliche Handgriff fehlte in der Version 1.00
leider. Es ist möglich, daß der zuvor geschilderte Fehler damit in
Zusammenhang stand. Das allerdings wäre zumindest beim Einsatz der
Bootdiskette sehr bedenklich. Denn warum sollten parallele Zugriff auf
die CMOS-Register stattfinden, während der Test läuft.
Aus den Ergebnissen der von cty2ktst unternommenen Tests lassen sich folgende Handlungsanweisungen ableiten: Besteht ein PC den ersten, zweiten oder dritten Test, muß man nichts weiter tun (BIOS-, BIOS-1- oder POST-Test). Klappt es erst im vierten Testschritt, so muß das Datum und gegebenenfalls die Uhrzeit beim ersten Einschalten im Jahr 2000 einmalig korrigiert werden. Das gilt aber nur, wenn Sie ein Betriebssystem einsetzen, das auf das BIOS zugreift (siehe Tabelle unter Interna).
Die einmalige Korrektur kann man sich sparen, wenn das Betriebssystem ohnehin nur auf die RTC zugreift (etwa Linux). Unterbleiben kann sie auch, wenn auf dem PC Windows 98, das aktuelle Caldera OpenDOS und IBMs PC-DOS 2000 laufen. Diese DOS-Versionen beinhalten Korrekturcode, der den Eingriff übernimmt. Für ältere DOS-Versionen kann cty2kfix helfen; es führt diese Korrektur, wenn es in der autoexec.bat beim Rechnerstart aufgerufen wird, zur rechten Zeit automatisch aus.
Fällt ein System beim letzten Test durch, gibt es zwei Möglichkeiten: Entweder Sie entschließen sich, die Systemuhr mit Beginn des Jahres 2000 asynchron zur tatsächlichen Zeit laufen zu lassen (cty2kfix hilft dabei) oder bemühen sich um ein BIOS-Update, das, sofern verfügbar, mit ziemlicher Sicherheit diesen BIOS-Fehler behebt. Da dieser Fehler nur im Zusammenhang mit bestimmten Versionen des Award-BIOS erwähnt wird, haben wir ihn so getauft.
Was sich angesichts der Vielfalt des PC-Marktes nicht ausschließen läßt, ist, daß die Tests auf eine andere Merkwürdigkeit stoßen. Wir haben durch Plausibilitätstests dafür gesorgt, daß solche Ausnahmen erkannt und gemeldet werden. In solchen Fällen sind wir gern bereit, das Problem zu untersuchen. Um uns das zu vereinfachen, möchten wir Sie darum bitten, das Protokoll eines Durchlaufs mit der Option "/v" mitzuliefern (siehe Option).
(Es genügt, die Optionen /vep beim ersten Aufruf anzugeben, sie wirken auf die folgenden Läufe bis zum Testabschluss; die Optionen /vp wirken auf eine via /i erzeugte Boot-Diskette; die Reihenfolge spielt keine Rolle; der Slash "/" kann entfallen; Leerzeichen und Tab(s) werden überlesen; alle anderen Zeichen liefern eine kurze Hilfestellung).
Testwerkzeug für PCs ist eigentlich falsch: Erst mit dem AT hat sich eine Real Time Clock (RTC) durchgesetzt. Entsprechend funktionieren sowohl cty2ktst als auch cty2kfix erst auf AT-kompatiblen 286ern und Nachfolgern (bis hin zu topaktuellen PCs).
NT überprüft vor dem Beschreiben einer Diskette, ob es den Medien-Typ kennt. Es liest dazu den Boot-Sektor einer Diskette ein. Da cty2ktst keinen regulären Boot-Sektor schreibt, meldet NT beim Versuch, eine nicht (FAT-vor-)formatierte Diskette zu beschreiben, einen Fehler und beendet cty2ktst. Als Abhilfe genügt es, die Diskette unter NT erneut zu formatieren.
Linux scheint mitunter ebenfalls Schwierigkeiten zu haben, aus dosemu heraus eine ct2yktst-Boot-Diskette zu erzeugen. Das hängt offenbar damit zusammen, daß manche Linux-Installation den Treiber für Zugriffe aufs Diskettenlaufwerk dynamisch (via kerneld) lädt. Der erste Schreibversuch geht dadurch schief. Im zweiten Anlauf (oder mit statisch geladenem oder in den Kernel eingebundenen floppy-Moddul) klappt es beim ersten Versuch.
Soll cty2ktst Systeme untersuchen, die Netzwerk-Client-Software laufen lassen, so ist Vorsicht angebracht, wie diese Software auf die Systemuhr wirkt, insbesondere, wenn cty2ktst den Rechner neu starten muß. Ältere Novell-Client-Software hat sich bei unseren Versuchen als extrem hartnäckig erwiesen. Zudem sollte man prüfen, ob der Einsatz des Programms auf Systemen überhaupt Sinn ergibt, die sich ohnehin die Zeit von einem Server holen.
Das direkte Beschreiben der Boot-Diskette könnte Viren-Wächter auf den Plan rufen, da cty2ktst neuen Boot-Code auf der Diskette ablegt. Das ist in diesem Fall aber gewünscht. Gegebenenfalls muß man diese Wächter-Option vorübergehend abschalten.
Der Boot-Code setzt stillschweigend voraus, daß der Prüfling mindest 640 KByte Hauptspeicher hat. Ansonsten landet der Boot-Code im Leeren. Eine Überprüfung findet nicht statt.
Es gibt diverse Wege, einen PC zu einem Neustart zu bewegen. cty2ktst benutzt dazu den Tastatur-Controller. Auf Systemen, die latente Restart-Probleme haben (zum Beispiel auch unter Windows), kann das versagen; das heißt, das System tut nach dem Reset-Countdown nichts. Der Test kann durch manuellen Druck auf Reset oder kurzes Aus- und Einschalten des PC dann aber fortgesetzt werden.
Da das Testen der Jahr-2000-Verträglichkeit kaum eine Geheimsache ist, sondern eigentlich eine Trivialität, die der Allgemeinheit zu Gute kommt, wollen wir kein Geheimnis aus unserer Rezeptur machen. cty2ktst und cty2kfix bedienen sich keiner undokumentierten Funktionen und wenden auch keine besonderen Tricks an:
Der Zugriff auf die Real Time Clock (RTC) erfolgt generell über das BIOS, das auch DOS und Windows 3.x bis 9x benutzen. cty2ktst liest zusätzlich das im CMOS abgelegte Byte aus, das die Jahrhundertinformation enthält. Dieses Auslesen dient nur der Plausibilitätprüfung.
Die Version 1.3 verwendet
zusätzlich zu den Funktionen zum Setzen und Lesen von Datum und
Uhrzeit eine weitere BIOS-Funktion. Sie dient zum Setzen des
BIOS-Zeitzählers. DOS ruft diese Funktion auf, um bei einer Änderung
der Uhrzeit den BIOS-Zeitzähler an die geänderten Verhältnisse
anzupassen.
Einige BIOS-Versionen setzen ihren aktiven Korrekturcode genau hier an: Läuft der BIOS-Tageszähler über, prüfen Sie. ob eventuell das Jahr 2000 angebrochen ist und aktualisieren das Jahrundertbyte im CMOS-RAM. Andere BIOS-Varianten überwachen diese Änderungen permanent und sind nicht auf den BIOS-Zähler angewiesen. Um den aktiven Korrekturcode in jedem Fall zu erkennen, setzt cty2ktst den BIOS-Zähler geeignet.
Der aktive Korrekturcode ist nicht gerade
eine Errungenschaft: Er funktioniert nur, solange ein Betriebssytem
den Prozessor im Real Modus oder im virtuellen 8086-Modus
betreibt. Das heißt, nur DOS, Windows 3.1 und 9x profitieren davon
(die Windows Zeitrechnung hängt von DOS ab). Andere Betriebssysteme
haben von einer solchen Lösung nichts.
Zudem ist diese Art der Jahr-2000-Korrektur nicht ganz
ungefährlich: Wird ein PC etwa für Steuerungsaufgaben eingesetzt, kann
es passieren, daß er durch direktes Auslesen der RTC Informationen
erhält, die veraltet sind (während der Umstellung ins Jahr
2000). Nämlich dann, wenn die RTC schon auf 1.1.00 steht, das
Jahrhundertbyte im CMOS-RAM vom aktiven Korrekturcode noch nicht
umgestellt wurde (das ist bei gesperrten Interrrupts etwa nicht
auszuschließen).
cty2ktst nennt Systeme mit aktivem Korrekturcode deshalb nur
"bedingt Jahr-2000-fest". Je nach Ausfertigung der Korrektur ist nicht
in jedem Fall sichergestellt, daß das Jahrhundertbyte angepaßt
wird. Andere Korrekturmechanismen (etwa über den Selbsttest oder die
BIOS-Funktionen zum Auslesen des Datums) greifen zu einem definierten
Zeitpunkt garantiert. Für den Großteil der Anwendungsfälle genügt das.
Das BIOS respektive die Betriebssystemfunktionen sind der bequeme Weg,
den nicht nur die (Anwendungs-)Programmierer bei Microsoft, sondern
auch der (vernünftige) Rest der Welt für den Zugriff auf Zeit- und
Datumsinformationen wählt. Ein direkter Zugriff auf die RTC ist zwar
möglich, aber umständlich, da für eine zuverlässige Funktion dabei die
Update-Zyklen der Uhr beachtet werden müssen.
Im Gegensatz zu Anwendungen und oben genannten Systemen greift
manches Betriebssystem direkt auf die RTC zu. Während sich das bei den
freien Betriebssystemen durch einen Blick in die Quelltexte
feststellen läßt, ist das bei kommerziellen Systemen nicht ganz so
einfach. Microsoft hat das von NT benutze Verfahren inzwischen
immerhin offengelegt, nachdem ein entsprechendes White
Paper für mehrere Monate vom Web-Server verschwunden war.
Der Aufruf von cty2kfix gehört in die DOS-autoexec.bat-Datei. Beim
Start liest es das aktuelle Datum via BIOS-Funktion aus. Stößt es
dabei auf eine Jahresangabe kleiner als 1980 (nicht von sich aus
Jahr-2000-fähiges BIOS), dann korrigiert es das Jahr auf 20xx. Wie man
sich mit cty2ktst vorher versichern kann, hat sich damit die
Jahr-2000-Problematik für den PC selbst erledigt. Der Fix funktioniert
selbst dann, wenn man den PC erst 2002 das erste Mal wieder
einschaltet. cty2kfix sollte als eines der ersten Programme in der
autoexec.bat geladen werden.
Darüber hinaus erlaubt es cty2kfix, die Systemuhr (RTC) asynchron zur
tatsächlichen Zeit zu betreiben. Das ist für PCs interessant, die vom
Award-Bug betroffen sind: Bei Ihnen arbeitet die Uhr nur im Zeitraum
von 1994/6 bis 1999 korrekt. Nach einer Korrektur auf 2000 meldet der
PC beim nächsten Einschalten 2094/6. Der Haken: Man muß das Datum
(etwa im BIOS-Setup) einmal auf 1996 stellen. Fürderhin liefert
cty2kfix als TSR-Programm an der BIOS-Schnittstelle die Jahre 2000 bis
2002.
cty2kfix korrigiert als TSR-Programm die DOS-Zeit. Windows 3.1, 95
und 98 übernehmen diese Zeit, und selbst die Funktion zum
Ändern des Datums funktionieren mit cty2kfix zwischen BIOS und
DOS als Zeitvermittler (in den dann verschobenen Grenzen von 2000 bis
2002 inklusive). Der Versatz, mit dem die Systemuhr läuft,
beträgt genau vier Jahre, um mit den gängigen
Schaltjahresregeln in Einklang zu bleiben.
Im Jahr 1999 installiert macht sich cty2kfix beim DOS-Start nur mit
einer Meldung bemerkbar:
Steht das Datum auf 1996 bis 1998, schaltet sich cty2kfix als
TSR-Programm zwischen die BIOS-Datums-Funktionen:
Der Aufruf der DOS-Datumsfunktionen liefert nach der Installation
dann statt des im BIOS-Setup eingetragenen Datums 1.1.1996 folgende
Angabe:
Die zweite cty2kfix-Funktion liegt darin, Systemen auf die Sprünge
zu helfen, deren BIOS keinen Korrektur-Code fürs Jahr 2000
enthält. Bemerkt es, daß das BIOS das Jahr 1900 liefert, korrgiiert es
das und setzt bei der Gelegenheit auch die DOS-Zeit neu, die zu diesem
Zeitpunkt dann schon auf den 4.1.1980 zurückgefallen ist. cty2kfix
erledigt also die auf alten Systemen nötige manuelle Korrektur
automatisch. Zur Sicherheit fordert es auf, beim nächsten Systemstart
das Datum zu überprüfen (Award-Bug); hat cty2ktst dem PC eine
funktionierende manuelle Korrektur attestiert, ist dieser Schritt
nicht nötig.
Ohne jedwede Funktionsgarantie zu geben, sind diese Werkzeuge
frei. Das heißt, sie dürfen frei weitergegeben werden, solange die
Copyright-Vermerke und der Originallieferumfang beibehalten
werden. Eine kommerzielle Nutzung im Sinne des Verkaufs selbst in
Teilen ist ausdrücklich untersagt. Das Aufbringen auf CD-ROM und
andere Medien, sofern keine Arbeitskopie, selbst zur kostenlosen
Verteilung bedarf des schriftlichen Einverständnisses des
Urhebers/Autors. Einer Weitergabe in elektronischen Medien (Internet
oder Mailboxen) wird explizit zugestimmt. Zurückentwickeln (Reverse
engineering), Dekompilieren sowie Entassemblieren der Software sind
nicht nötig; die Quelltexte sind unter der Heimat-URL (siehe oben) zu
bekommen ;-)
cty2kfix
cty2kfix 1.00, (C) c't/ps
Programm korrigiert gaengige PC-BIOS-Fehler im Jahr 2000
Noch nichts zu tun (1999)
cty2kfix 1.00, (C) c't/ps
Programm korrigiert gaengige PC-BIOS-Fehler im Jahr 2000
Residenter Teil zur Datumskorrektur installiert.
RTC laeuft um vier Jahre versetzt (2000=1996 ff)
Aktuelles Datum: Sa, 01.01.2000
Neues Datum (TT.MM.JJ):
cty2kfix 1.00, (C) c't/ps
Programm korrigiert gaengige PC-BIOS-Fehler im Jahr 2000
Einmalige Korrektur des Jahrhunderts via BIOS
Verifzieren Sie beim naechsten Systemstart das Datum
Lizenz
(C) Copyright c't
Verlag Heinz Heise
Autor: Peter Siering
Helstorfer Str. 7
30625 Hannover
Germany
Fon +49 511 53 52 - 3 00
Fax +49 511 52 52 - 4 17
Peter Siering
Version 1.3,
Last modified: Tue Aug 10 18:31:41 CEST 1999