Das Jahr 2000-Problem
Das »Jahr-2000-Problem«, bekannt auch als »Y2K-Problem«, ist besonders problematisch für die Bereiche Telekommunikation, Elektrizität, geschäftliche Transaktionen sowie EDV.
Für PCs stellt sich das Problem bei der RTC (Real Time Clock). Dort wird nicht nur das aktuelle Datum und die Zeit gespeichert, sondern auch mit der Zeit gerechnet.
Das Format des Datums war seinerzeit (ca. 1980) durch IBM eingeführt worden. Da die Ressourcen damals sehr knapp waren, mußte man jedes mögliche Bit einsparen, und so speicherte man das Jahr nur zweistellig ab. Der nächste Kardinalfehler der Programmierer war, das Datum in Form von ASCII-Zeichen zu speichern. In diesem Fall benötigt man für die Darstellung von nur zwei Ziffern schon zwei Byte.
Wäre man damals auf die glorreiche Idee gekommen, das Datum als Binärzahl abzubilden, so könnte man in einem Byte die Jahre 1980 bis 2235 darstellen.
Das sollte aber noch nicht alles sein.
Das Schlimmste ist die Tradition und die damals festgelegten Standards. Noch vor ca. sieben Jahren hat mich mein »Fortran«-Lehrer gelehrt, das Datum in allen Programmen in Form Jahr/Monat/Tag darzustellen, z.B. 990206 für 6 Feb. 1999. Das ist auch die alte Sünde der COBOL-Programmierer.
Aus diesem Grund wird nach dem zweistelligen Jahr 1999 nach Addition von 1 nicht 2000, sondern 1900. Es gibt aber Chips, z.B. von Dallas Semiconductor, die das fehlende 1900 berücksichtigen.
Das war ein bißchen Geschichte und Theorie zur diesem Thema.
Uns interessiert aber hier primär, wie sich Linux in ein paar Monaten verhält.
Die Antwort ist auch nicht so einfach. Fast jedes Betriebssystem liest die Daten, die in RTC gespeichert sind, nur einmal, und zwar beim Booten. Als nächstes wertet es das Datum aus und verzichtet auf die Jahrhundert-Ausgabe.
Linux ist dabei keine Ausnahme und wertet auch beim Start die Daten des RTC aus. Wenn der Wert aus dem RTC kleiner als 70 ist, dann wird die Zahl 2000 addiert, wenn der Wert aus RTC größer als 70 ist, wird 1900 addiert. Und das geschieht unabhängig vom verwendeten Chip und BIOS, egal ob das BIOS das Jahr 2001 oder 1901 liefert. Hier ein paar Tests, die ich am meinem Rechner durchgeführt habe:
| Testnr. | Einstellung im BIOS [hh:mm; tt.mm.jjjj] | Ausgabe in Linux mit date [Tag Mon tt hh:mm:ss MET jjjj] |
|---|---|---|
| 1 | 01:39; 07.02.1999 | Sun Feb 7 02:39:42 MET 1999 |
| 2 | 01:46; 07.02.1994 | Mon Feb 7 02:47:14 MET 1994 |
| 3 | 02:46; 07.02.2000 | Mon Feb 7 03:47:15 MET 2000 |
| 4 | 02:11; 07.02.2002 | Thu Feb 7 03:12:20 MET 2002 |
| 5 | 14:15; 07.02.2035 | Wed Feb 7 15:16:31 MET 2035 |
| 6 | 07:54; 07.02.2041 | Mon Jan 2 08:54:41 MET 1905 |
| 7 | 19:36; 07.02.2065 | Tue Jan 1 20:37:03 MET 1929 |
| 8 | 01:50; 07.02.2070 | Sat Feb 7 02:50:25 MET 1970 |
| 9 | 01:44; 07.02.2079 | Wed Feb 7 02:44:07 MET 1979 |
Ich hatte leider keine Möglichkeit, folgende Daten zu testen:
- 1960 bis 1969
- 1970 bis 1994
- 2080 bis ...
Mein BIOS unterstützt nur Jahreszahlen im Zeitraum 1994 bis 2079. Ich hoffe, daß ich einige Rückmeldungen bekomme, die ich auswerten und natürlich in die Tabelle eintragen kann. Die E-Mails bitte an die Adresse paweld@pro-linux.de zuschicken mit Subject: »Y2000-Linux«. Für jede Nachricht bedanke mich schon jetzt und garantiere volle Anonymität. Anonyme Mails werden nicht bearbeitet und sofort gelöscht.
Wie man sieht, ist die Tabelle in zwei Bereiche geteilt, weil Linux genauso wie alle anderen UNIX-Derivate am 19.01.2038 um 3:14 die sogenannte C-Time erreicht. Das System-Datum für Linux ab dem Jahr 2038 ist ungültig. Der Kalender für Linux ist nur im Zeitraum 13.12.1901 bis 19.01.2038 gültig, deshalb wird bei einem Systemdatum ab 19.01.2038 ein unsinniger Datumswert zurückgeliefert (wir hoffen, daß sich Linus bis zum Jahr 2038 etwas einfallen läßt). Das kann mit folgendem Test bewiesen werden:
Als root anmelden und System-Datum mit dem Befehl date ändern (nur der Systemadministrator hat diese Rechte):
# date -s 02/07/1901 date: invalid date `02/07/1901' # date -s 02/07/2039 date: invalid date `02/07/2039' # date -s 02/07/1999 Sun Feb 7 00:00:00 MET 1999
Das Systemdatum hat bei Linux keinen Einfluß auf das RTC- und BIOS-Datum. Als ich das Systemdatum veränderte und den PC neu gestartet habe, ist die Zeit wieder auf das Datum, welches vorher im BIOS eingestellt wurde, zurück gesprungen. Im Klartext bedeutet das, daß beim Booten die RTC neu ausgelesen und ausgewertet wird. Darüber habe ich am Anfang schon geschrieben.
Das war eine kurze Zusammenfassung zum Thema Linux und Jahr 2000, aber es gibt noch eine andere Seite dieses Problems.
Das Verhalten von Software, die auf unserem PC installiert ist, stellt ein ganz anderes Thema dar. Diese Problematik muss man sehr individuell betrachten.
Hier nur ein paar Stichworte. Besonders wichtig ist »Y2K« bei Datenbanken, automatischen Backups, Serienbriefen, Tabellenkalkulationen mit automatischen Datumseintragungen bzw. -berechnungen und so weiter. Auch sollte man die Y2K-Stellungnahmen der Softwarefirmen zur Kenntnis nehmen.
Microsoft glänzt in dieser Materie. Es werden folgende Daten bereitgestellt: detaillierte Beschreibung, wie sich ein Produkt bei der Jahreswende verhält, Verweise auf mögliche Bugfixes, Beschreibung, warum das Produkt nicht »Y2K«-konform ist.
Corel erklärt, daß Corel Draw 6.0 nicht untersucht wurde, und man nicht wisse, ob die Applikation das Jahr 2000 besteht.
Star Division: eine Pauschalerklärung: »die Produkte funktionieren noch im Jahr 2000.«
Und was ist mit einer Reihe älterer, weniger bekannten Anwendungen?.
Das kann man nur selber mit Tests ausprobieren. Weiter muß auch berücksichtigt werden, nicht nur das Jahr 2000 (01.01.2000), sondern auch:
- 09.04.1999 - 99. Tag des Jahres (vielleicht als Steuerzeichen für EOF (End of File) verwendet)
- 09.09.1999 - es kann sein, daß auch das als Steuerzeichen für EOF (End of File) verwendet wird
- 29.02.2000 - Schaltjahr, es wird nicht unbedingt von allen Kalenderalgorithmen berücksichtigt, wodurch es am 29. Februar 2000 interessant werden könnte.
- 29.02.2004 - Schaltjahr
Ich muß nochmal betonen, daß für Privatanwender das »Y2K-Problem« nur »symbolische« Bedeutung hat. Für Firmen kann das Y2K-Problem eine sehr große Bedrohung darstellen. Alle Systemadministratoren sollten sich hierzu ein wenig tiefer in diese Materie einarbeiten.
Literatur
Für diejenigen, für die das Thema interessant ist, kann ich folgende Literatur empfehlen:
- Dr. Joern Loviscach, Dr. Wolfgang Stiler »Zeitbombe«: c't -1/99; Seite 60
- Peter Siering »Aufgeweckt«: c't -1/99; Seite 66
- Peter Siering »Durchgecheckt«: c't -1/99; Seite 70
- Andreas Bleul, Dr. Joern Loviscach »Operation 2000«: c't-1/99; Seite 76
Dort findet man auch Verweise zu anderen Quellen.

