hwclock(8) die Hardware-Uhr (RTC) abfragen oder einstellen

ÜBERSICHT

hwclock [Funktion] [Option…]

BESCHREIBUNG

hwclock ist ein Werkzeug, mit dem Sie auf die Hardware-Uhr zugreifen können. Sie können die aktuelle Zeit anzeigen, die Hardware-Uhr auf eine angegebene Zeit stellen, die Hardware-Uhr nach der Systemzeit stellen lassen oder umgekehrt.

Sie können hwclock auch periodisch ausführen, um Zeit zur Hardware-Uhr hinzuzufügen oder davon abzuziehen. Dadurch können Sie eine systematische Abweichung ausgleichen (wenn die Uhr um einen konsistenten Betrag von der realen Zeit abweicht).

FUNKTIONEN

Sie benötigen genau eine der folgenden Optionen, um hwclock mitzuteilen, welche Funktion ausgeführt werden soll:

-r, --show
liest die Hardware-Uhr und schreibt die Zeit in die Standardausgabe. Die angezeigte Zeit ist stets die lokale Zeit, selbst wenn Sie die Hardware-Uhr auf die Weltzeit (UTC) eingestellt haben, siehe die Option --utc. Die Anzeige der Zeit der Hardware-Uhr ist die Vorgabe, wenn keine sonstigen Funktionen angegeben sind.

--set
stellt die Hardware-Uhr auf die Zeit, die mit der Option --date angegeben wird.
-s, --hctosys
stellt die Systemzeit auf die Zeit der Hardware-Uhr.

Außerdem wird der Zeitzonenwert des Kernels auf die durch die Umgebungsvariable TZ und/oder /usr/share/zoneinfo gegebenen Werte festgelegt, wenn tzset(3) diese auswerten würde. Das veraltete Feld tz_dsttime des Kernel-Zeitzonenwerts wird auf DST_NONE gesetzt. Details zur ehemaligen Bedeutung dieses Feldes finden Sie in settimeofday(2).

Dies ist eine gute Option für die Ausführung in einem der Startskripte des Systems.

-w, --systohc
stellt die Hardware-Uhr auf die aktuelle Systemzeit.
--systz
setzt die Kernel-Zeitzone und setzt die Systemzeit zurück, basierend auf der aktuellen Zeitzone.

Die Systemzeit wird nur beim ersten Aufruf nach dem Systemstart zurückgesetzt.

Außerdem wird der Zeitzonenwert des Kernels auf die durch die Umgebungsvariable TZ und/oder /usr/share/zoneinfo gegebenen Werte festgelegt, wenn tzset(3) diese auswerten würde. Das veraltete Feld tz_dsttime des Kernel-Zeitzonenwerts wird auf DST_NONE gesetzt. Details zur ehemaligen Bedeutung dieses Feldes finden Sie in settimeofday(2).

Dies ist eine alternative Option zu --hctosys, welches nicht die Hardware-Uhr liest. Es kann in Startskripten des Systems für für aktuelle 2.6-Kernel verwendet werden, wo Sie wissen, dass die Systemzeit die Zeit der Hardware-Uhr enthält. Läuft die Hardware-Uhr bereits in UTC, wird diese nicht zurückgesetzt.

--adjust
fügt Zeit zur Hardware-Uhr hinzu oder zieht diese ab, um eine systematische Abweichung seit dem letzten Setzen oder Anpassen der Hardware-Uhr auszugleichen. Siehe nachfolgende Erklärungen.
--getepoch
gibt den Epoch-Wert der Hardware-Uhr des Kernels in die Standardausgabe aus. Dies ist das Jahr, auf dass sich der Nullwert der Hardwareuhr bezieht. Wenn Sie zum Beispiel die Konvention verwenden, dass die Jahreszählung in der Hardware-Uhr die Anzahl der vollen Jahre seit 1952 enthält, dann muss der Epoch-Wert der Hardware-Uhr des Kernels auf 1952 gesetzt werden.

Dieser Epoch-Wert wird verwendet, wenn hwclock die Hardware-Uhr ausliest oder stellt.

--setepoch
setzt den Epoch-Wert der Hardware-Uhr des Kernels auf den durch die Option --epoch angegebenen Wert. Siehe die Option --getepoch für Details.

--predict
sagt voraus, welche Zeit die Echtzeituhr (RTC) zur mit der Option --date angegebenen Zeit anzeigen wird, basierend auf der adjtime-Datei. Dies ist beispielsweise dann sinnvoll, wenn Sie einen in ferner Zukunft auszulösenden Alarm einstellen und die Abweichung der Uhr berücksichtigen lassen wollen.
-c, --compare
Periodically compare the Hardware Clock to the System Time and output the difference every 10 seconds. This will also print the frequency offset and tick.
-h, --help
zeigt eine Hilfe an und beendet das Programm.
-V, --version
zeigt Versionsinformationen an und beendet das Programm.

OPTIONEN

Die ersten zwei Optionen beziehen sich lediglich auf wenige spezifische Funktionen, während die anderen auf die meisten Funktionen anwendbar sind.

--date=Datumszeichenkette
Sie benötigen diese Option, wenn Sie die Funktionen --set oder --predict angeben, anderenfalls wird sie ignoriert. Sie gibt die Zeit an, auf welche die Hardware-Uhr gesetzt werden soll, oder die Zeit, für die die Anzeige der Hardware-Uhr vorhergesagt werden soll. Der Wert dieser Option ist ein Argument für das Programm date(1). Beispiel:

hwclock --set --date="2011-08-14 16:45:05"

Das Argument muss in lokaler Zeit angegeben werden, selbst wenn Sie Ihre Hardware-Uhr auf Weltzeit (UTC) eingestellt haben. Siehe Option --utc.

--epoch=Jahr
legt das Startjahr des Epoch-Wertes der Hardware-Uhr fest. Dies ist die Anzahl der Jahre bis zum aktuellen Jahr ausgehend vom Nullwert in der Jahreszählung der Hardware-Uhr. Dies wird zusammen mit der Option --setepoch verwendet, um den Epoch-Wert der Hardware-Uhr des Kernels zu setzen, oder anderenfalls zum Angeben des Epoch-Wertes für den direkten ISA-Zugriff.

Beispiel für einen Digital-Unix-Rechner:

hwclock --setepoch --epoch=1952

-u, --utc
--localtime
gibt an, dass die Hardware-Uhr auf Weltzeit bzw. lokale Zeit gestellt ist. Es ist Ihnen überlassen, ob Sie das eine oder das andere Zeit bevorzugen, aber nichts in der Uhr deutet darauf hin, wie Sie sich entschieden haben. Sie übergeben also mit dieser Option die nötige Information hierzu an hwclock.

Falls Sie die falsche aus diesen Optionen angeben (oder gar keine und die falsche Vorgabe wählen), werden sowohl das Setzen als auch das Abfragen durcheinandergebracht.

Falls Sie weder --utc noch --localtime angeben, wird als Vorgabe jenes übernommen, was beim letzten Aufruf zum Setzen der Hardware-Uhr mit hwclock verwendet wurde (das heißt, als hwclock erfolgreich mit den Optionen --set, --systohc oder --adjust aufgerufen wurde). Diese Einstellung ist in der adjtime-Datei gespeichert. Falls die adjtime-Datei nicht existiert, wird die UTC-Zeit als Vorgabe verwendet.

--noadjfile
deaktiviert die von /etc/adjtime bereitgestellten Leistungen. hwclock liest oder schreibt nicht in diese Datei, wenn diese Option angegeben ist. Entweder --utc oder --localtime müssen mit dieser Option angegeben werden.

--adjfile=Dateiname
übergeht die vorgegebene Datei /etc/adjtime.

-f, --rtc=Dateiname
übergeht den vorgegebenen Dateinamen für /dev. Dies ist /dev/rtc auf vielen Plattformen, kann aber auch /dev/rtc0, /dev/rtc1 usw. sein.

--directisa
Diese Option ist nur auf einer ISA- oder Alpha-Maschine von Bedeutung, wobei Letztere einfach ausgedrückt auch eine ISA-Maschine für die Zwecke von hwclock ist. Auf anderen Maschinen hat dies keine Auswirkungen. Diese Option weist hwclock explizit an, E/A-Anweisungen für den Zugriff auf die Hardware-Uhr vorzunehmen. Ohne diese Option versucht hwclock das Gerät /dev/rtc zu verwenden, wobei angenommen wird, dass dieses mit dem RTC-Gerätetreiber läuft. Falls es nicht möglich sein sollte, das Gerät (zum Lesen) zu öffnen, werden die expliziten E/A-Anweisungen dennoch angewendet.

--badyear
gibt an, dass die Hardware-Uhr unfähig ist, Jahresangaben außerhalb des Bereiches 1994-1999 korrekt zu speichern. In einigen BIOS-Versionen gibt es ein Problem (fast alle Award-BIOS zwischen dem 26.04.1994 und dem 31.05.1995), das die korrekte Verarbeitung der Jahre nach 1999 verhindert. Falls Sie versuchen, das Jahr der Jahrhundertwende auf weniger als 94 (bzw. 95 in einigen Fällen) zu setzen, dann wird der tatsächliche Wert auf 94 (oder 95) gesetzt. Sollten Sie eine dieser Maschinen betreiben, dann ist hwclock nicht in der Lage, das Jahr nach 1999 korrekt zu setzen, daher kann dieser Wert der Uhr nicht als wirkliche Zeit verwendet werden.

Um dies zu kompensieren (ohne BIOS-Aktualisierung, was definitiv zu bevorzugen wäre), verwenden Sie stets --badyear auf einer solchen Maschine. Wenn hwclock weiß, dass es mit einer solchen eingeschränkten Uhr arbeiten muss, dann wird die Jahresangabe des Wertes der Hardware-Uhr ignoriert. Stattdessen wird das Jahr auf der Grundlage des zuletzt kalibrierten Datums in der adjtime-Datei »erraten«. Dabei wird angenommen, dass dieses Datum im letzten Jahr liegt. Damit dies funktioniert, müssen Sie hwclock --set oder hwclock --systohc mindenstens einmal im Jahr ausführen!

Obwohl hwclock die Jahresangabe beim Lesen der Hardware-Uhr ignoriert, wird dennoch der Jahreswert eingefügt, wenn die Uhr eingestellt wird. Er wird auf 1995, 1996, 1997 oder 1998 gestellt, je nachdem, welches davon die gleiche Position im Schaltjahreszyklus wie das tatsächliche Jahr hat. Auf diese Weise fügt die Hardware-Uhr Schalttage ein, wo sie hingehören. Und wieder: Falls Sie die Hardware-Uhr länger als ein Jahr laufen lassen, ohne sie einzustellen, kann dieses Schema scheitern und Sie können einen Tag verlieren.

hwclock warnt Sie, dass Sie möglicherweise --badyear benötigen, falls die Hardware-Uhr auf 1994 oder 1995 gesetzt ist.

--srm
Diese Option ist gleichbedeutend mit --epoch=1900 und wird zum Setzen des üblichsten Epoch-Wertes auf Alpha-Rechnern mit SRM-Konsole verwendet.
--arc
Diese Option ist gleichbedeutend mit --epoch=1980 und wird zum Setzen des üblichen Epoch-Wertes auf Alpha-Rechnern mit ARC-Konsole verwendet (aber die Ruffian-Boards haben den Epoch-Wert 1900).
--jensen
--funky-toy
Diese beiden Optionen geben die Art der verwendeten Alpha-Maschine an. Sie sind unzulässig, falls Sie keine Alpha-Maschine betreiben und selbst dann nicht erforderlich, denn hwclock sollte in der Lage sein, selbständig herauszufinden, worauf es läuft, mindestens dann, wenn /proc eingehängt ist. Falls Sie feststellen, dass Sie eine dieser Optionen benötigen, damit hwclock läuft, kontaktieren Sie den Betreuer dieses Programms. Möglicherweise lässt sich das Programm so verbessern, dass Ihr System automatisch erkannt wird. Die Ausgaben von »hwclock --debug« und »cat /proc/cpuinfo« dürften dabei von Interesse sein.

Die Option --jensen gibt an, dass Sie ein Jensen-Modell betreiben, --funky-toy bedeutet, dass auf Ihrer Maschine in der Hardware-Uhr das UF-Bit anstelle des UIP-Bits verwendet werden muss, um den Zeitübergang zu erkennen. »Toy« im Namen der Option bezieht sich auf die »Time Of Year«-Einrichtung der Maschine.

--test
führt alles aus, außer die tatsächliche Aktualisierung der Hardware-Uhr oder etwas Anderes. Dies ist speziell zusammen mit --debug sinnvoll, wenn Sie mehr über hwclock lernen wollen.
--debug
zeigt ausführliche Informationen dazu an, wie hwclock intern arbeitet. Teile dieser Funktionalität sind recht komplex, so dass diese Ausgabe Ihnen helfen kann, zu verstehen, wie das Programm funktioniert.

ANMERKUNGEN

Uhren in einem Linux-System

Es gibt zwei Hauptuhren in einem Linux-System:

Die Hardware-Uhr: Diese Uhr läuft unabhängig von einem steuernden Programm auf der CPU, selbst wenn der Rechner ausgeschaltet ist.

Auf einem ISA-System wird diese Uhr als Teil des ISA-Standards spezifiziert. Das Steuerprogramm kann diese Uhr in ganzen Sekunden stellen oder auslesen, aber es kann auch die Signalübergänge der Ein-Sekunden-Impulse erkennen, so dass die Uhr über virtuell unendliche Präzision verfügt.

Diese Uhr wird allgemein die Hardware-Uhr, die Echtzeituhr, die RTC, die BIOS-Uhr oder die CMOS-Uhr genannt. Der Begriff Hardware-Uhr wurde für hwclock gewählt, da alle anderen Namen unangemessen oder irreführend sind.

Zum Beispiel haben einige Nicht-ISA-Systeme ein paar Echtzeituhren, wobei nur eine davon ihre eigene Energieversorgung hat. Ein sehr energiesparender externer I2C- oder SPI-Uhrchip könnte mit einer Stützbatterie als Hardware-Uhr fungieren, um eine funktionellere integrierte Echtzeituhr zu initialisieren, die für die meisten anderen Zwecke verwendet wird.

Die Systemzeit: Dies ist die Zeit, die von einer Uhr im Linux-Kernel bereitgestellt und durch einen Timer-Interrupt gesteuert wird (auf einer ISA-Maschine ist der Timer-Interrupt Teil des ISA-Standards). Sie ist nur von Bedeutung, solange Linux auf der Maschine läuft. Die Systemzeit wird als die Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00:00 Uhr Weltzeit ausgedrückt, oder anders formuliert, die Anzahl der seit 1969 vergangenen Sekunden. Die Systemzeit ist dennoch keine Ganzzahl. Sie hat virtuell unbegrenzte Präzision.

Die Systemzeit ist die Zeit, auf die es ankommt. Der grundlegende Zweck der Hardware-Uhr in einem Linux-System ist die Erhaltung der Zeit, wenn Linux nicht läuft. Sie initialisieren die Systemzeit aus der Zeit der Hardware-Uhr beim Start von Linux und verwenden die Hardware-Uhr danach nicht wieder. Beachten Sie, dass in DOS, wofür der ISA-Standard entworfen wurde, die Hardware-Uhr die einzig verfügbare Echtzeituhr ist.

Es ist wichtig, dass die Zählung der Systemzeit nicht unterbrochen wird, zum Beispiel wenn Sie mit dem Befehl date(1L) die Systemzeit setzen, während das System läuft. Sie können dennoch im laufenden Betrieb mit der Hardware-Uhr tun, was Sie wollen, und beim nächsten Linux-Start wird die Zeit der Hardware-Uhr entsprechend angepasst.

Ein Linux-Kernel verwaltet ein Konzept einer lokalen Zeitzonen für das System. Aber lassen Sie sich nicht in die Irre führen – beinahe niemand interessiert sich dafür, was der Kernel meint, in welcher Zeitzone er sich befindet. Stattdessen müssen Programme, für die die Zeitzone wichtig ist (um Ihnen beispielsweise die lokale Zeit anzuzeigen), fast immer einen etwas traditionelleren Weg wählen, um die Zeitzone zu ermitteln: Sie benutzen die TZ-Umgebungsvariable und/oder das Verzeichnis /usr/share/zoneinfo, wie in der Handbuchseite zu tzset(3) erklärt. Jedoch nutzen einige Programme und Teile des Linux-Kernels dessen Zeitzonenwert, zum Beispiel Dateisysteme. Ein Beispiel hierfür ist das vfat-Dateisystem. Ist der Zeitzonenwert im Kernel falsch gesetzt, werden vom vfat-Dateisystem falsche Zeitstempel gemeldet und gesetzt.

hwclock setzt den Kernel-Zeitzonenwert auf den durch die Umgebungsvariable TZ angegebenen und/oder aus /usr/share/zoneinfo ausgelesenen Wert, wenn Sie die Systemzeit mit der Option --hctosys setzen.

Der Zeitzonenwert besteht aus zwei Teilen: erstens dem Feld »tz_minuteswest«, das die Anzahl der Minuten angibt, die die lokale Zeit (nicht an Sommer-/Winterzeit angepasst) gegenüber der Weltzeit zurückbleibt, und zweitens dem Feld »tz_dsttime«, welches angibt, ob am entsprechenden Ort gerade Sommer- oder Winterzeit herrscht. Dieses zweite Feld wird unter Linux nicht genutzt und wird stets auf 0 gesetzt (siehe auch settimeofday(2)).

Benutzerzugriff und setuid

Sometimes, you need to install hwclock setuid root. If you want users other than the superuser to be able to display the clock value using the direct ISA I/O method, install it setuid root. If you have the /dev/rtc interface on your system or are on a non-ISA system, there's probably no need for users to use the direct ISA I/O method, so don't bother.

In any case, hwclock will not allow you to set anything unless you have the superuser real uid. (This is restriction is not necessary if you haven't installed setuid root, but it's there for now).

Art des Zugriffs von hwclock auf die Hardware-Uhr

hwclock nutzt mehrere verschiedene Wege, die Werte der Hardware-Uhr auszulesen und zu setzen. Der normalste Weg ist der über Ein- und Ausgaben der speziellen Gerätedatei /dev/rtc, wobei davon ausgegangen wird, dass diese über den RTC-Gerätetreiber angesprochen werden kann. Jedoch ist diese Methode nicht immer verfügbar. Zum einen ist dieser RTC-Treiber relativ neu in Linux, ältere Systeme haben ihn nicht. Weiterhin gibt es durchaus Versionen, die auf DEC-Alphas funktionieren, aber auf weitaus mehr Alpha-Maschinen funktioniert der RTC-Treiber nicht (häufiges Symptom ist ein hängengebliebenes hwclock). Außerdem verfügen neuere Linux-Systeme über generischere Unterstützung für RTCs, sogar jene mit mehreren solchen Echtzeituhren. Daher kann es notwendig sein, die Vorgabe außer Kraft zu setzen, indem Sie stattdessen /dev/rtc0 oder /dev/rtc1 verwenden.

Auf älteren Systemen hängt die Art des Zugriffs auf die Hardware-Uhr von der Art der Systemhardware ab.

Auf einem ISA-System kann hwclock direkt über Ein- und Ausgaben der Ports 0x70 und 0x71 auf die CMOS-Speicherregister zugreifen, welche die Uhr darstellen. Es werden E/A-Anweisungen verwendet, was konsequenterweise nur funktionieren kann, wenn diese mit der effektiven Benutzerkennung des Superusers aufgerufen werden. Auf einer Jensen-Alpha-Maschine gibt es für hwclock keine Möglichkeit, diese E/A-Anweisungen auszuführen, daher wird stattdessen die spezielle Gerätedatei /dev/port verwendet, welche fast eine Low-Level-Schnittstelle zum E/A-Subsystem bereitstellt.

Dies ist eine recht armselige Methode, auf die Uhr zuzugreifen, vor allem deshalb, weil Programme auf Anwenderebene generell nicht dafür bestimmt sind, direkte E/A-Vorgänge auszuführen und Interrupts zu deaktivieren. Hwclock bietet dies an, weil es auf ISA- und Alpha-Systemen die einzige Methode ist, die auch funktioniert, wenn RTC-Gerätetreiber nicht verfügbar sind.

Auf einem m68k-System kann hwclock mit dem Konsolentreiber auf die Uhr über die spezielle Gerätedatei /dev/tty1 zugreifen.

hwclock versucht, /dev/rtc zu verwenden. Falls es für einen Kernel kompiliert wurde, der diese Funktion nicht bietet oder sich /dev/rtc nicht öffnen lässt (oder die alternative Spezialdatei, die Sie in der Befehlszeile angegeben haben), greift hwclock auf eine andere Methode zurück, falls möglich. Auf ISA- und Alpha-Maschinen können Sie hwclock zwingen, die CMOS-Speicherregister direkt zu manipulieren, sogar ohne /dev/rtc, indem Sie die Option --directisa angeben.

Die Adjust-Funktion

Die Hardware-Uhr ist üblicherweise nicht sehr genau. Jedoch lässt sich die Genauigkeit recht gut vorhersagen – sie geht jeden Tag die gleiche Zeit vor oder nach. Dies nennt man die Systemabweichung. Mit der »adjust«-Funktion von hwclock können Sie die Systemabweichung ebenso systematisch korrigieren.

Es funktioniert folgendermaßen: hwclock verwaltet die Datei /etc/adjtime, in der einige historische Informationen gespeichert sind. Diese Datei wird adjtime-Datei genannt.

Nehmen wir an, Sie beginnen ohne adjtime-Datei. Sie rufen den Befehl hwclock --set auf, um die Hardware-Uhr auf die tatsächliche aktuelle Zeit zu stellen. Hwclock legt die adjtime-Datei an und zeichnet darin die Zeit als jene der letzten Kalibrierung der Uhr auf. Fünf Tage später geht die Uhr 10 Sekunden vor, und Sie rufen hwclock --set erneut auf, um die Uhr 10 Sekunden zurückzustellen. Hwclock aktualisiert die adjtime-Datei, zeichnet wiederum die aktuelle Zeit als den Zeitpunkt der letzten Kalibrierung auf, wobei diesmal 2 Sekunden pro Tag als systematische Abweichung protokolliert werden. 24 Stunden später rufen Sie den Befehl hwclock --adjust auf. Hwclock befragt die adjtime-Datei und stellt fest, dass die Uhr, wenn sie nicht korrigiert wird, 2 Sekunden pro Tag vorgeht. So zieht es die 2 Sekunden von der Zeit der Hardware-Uhr ab, da die Uhr genau 24 Stunden nicht korrigiert wurde. Die aktuelle Zeit wird auch wieder als die Zeit der letzten Kalibrierung aufgezeichnet. Noch einmal 24 Stunden später funktioniert der Befehl hwclock --adjust wieder auf die gleiche Weise: Hwclock zieht 2 Sekunden ab und aktualisiert die adjtime-Datei mit der aktuellen Zeit als letztem Kalibrierungszeitpunkt der Uhr.

Jedes Mal beim Kalibrieren (Stellen) der Uhr mittels --set oder --systohc berechnet hwclock die systematische Abweichung erneut, basierend auf der Zeitspanne seit der letzten Kalibrierung und der letzten Korrektur, der Annahme der systematischen Abweichung bei den zwischenzeitlichen Korrekturen und der Größe der Abweichung, die die Uhr derzeit hat.

Kleinere Fehler schlummern in hwclock bei jedem Korrekturvorgang der Uhr, so wird keine Korrektur vorgenommen, wenn die Abweichung weniger als eine Sekunde beträgt. Wenn Sie zu einem späteren Zeitpunkt erneut die Uhr stellen wollen, wird die aufgesammelte Abweichung nun mehr als eine Sekunde betragen und hwclock führt die Korrektur aus.

Es ist empfehlenswert, den Befehl hwclock --adjust direkt vor hwclock --hctosys beim Systemstart auszuführen, eventuell auch über Cron in periodischen Abständen bei laufendem System.

Die adjtime-Datei, die wegen ihres früheren ausschließlichen Zwecks der Steuerung des Abgleichs so benannt wurde, enthält außerdem Informationen, die hwclock für spätere Aufrufe speichert.

Die adjtime-Datei verwendet folgendes Format, in ASCII:

Zeile 1: Drei Zahlen, durch Leerzeichen getrennt: 1) die systematische Abweichung in Sekunden pro Tag als dezimale Fließkommazahl; 2) die sich ergebende Anzahl der Sekunden seit 1969 Weltzeit gemäß der letzten Anpassung oder Kalibrierung als dezimale Ganzzahl; 3) Null (zwecks Kompatibilität zu clock(8)) als dezimale Ganzzahl.

Zeile 2: eine Zahl: die sich ergebende Anzahl der Sekunden seit 1969 Weltzeit gemäß der letzten Kalibrierung. Dies ist Null, falls noch keine Kalibrierung ausgeführt wurde oder eine frühere Kalibrierung fehlschlug (zum Beispiel wurde die Hardware-Uhr seit der Kalibrierung zwar gefunden, enthielt aber keine gültige Zeit). Dies ist eine dezimale Ganzzahl.

Zeile 3: »UTC« oder »LOCAL«. Dies gibt an, ob die Hardware-Uhr auf lokale Zeit oder Weltzeit eingestellt ist. Sie können diesen Wert stets mit den Befehlszeilenoptionen zu hwclock außer Kraft setzen.

Sie können eine adjtime-Datei, die früher bereits mit dem Programm clock(8) genutzt wurde, auch mit hwclock verwenden.

Automatischer Abgleich der Hardware-Uhr durch den Kernel

Es gibt auf einigen Systemen einen weiteren Weg, die Hardware-Uhr synchron zu halten. Der Linux-Kernel verfügt über einen Modus, in dem in Abständen von 11 Minuten die Systemzeit in die Hardware-Uhr kopiert wird. Dieser Modus ist sinnvoll, wenn Sie etwas Fortschrittliches wie NTP verwenden, um die Systemzeit synchron zu halten. (NTP bezeichnet die Synchronisation der Systemzeit entweder über einen Zeitserver im Netzwerk oder über eine an Ihrem System angeschlossene Funkuhr, siehe RFC 1305.)

Dieser Modus (nennen wir ihn Elf-Minuten-Modus) ist inaktiv, bis er durch etwas aktiviert wird. Beispielsweise kann ihn der ntp-Daemon xntpd aktivieren. Sie können diesen Modus abschalten, indem Sie irgendetwas ausführen, auch hwclock --hctosys, welches die Systemzeit auf die althergebrachte Weise setzt.

Wenn Ihr System mit aktiviertem Elf-Minuten-Modus läuft, verwenden Sie hwclock --adjust oder hwclock --hctosys nicht. Sie werden nur ein Chaos verursachen. Es ist lediglich akzeptabel, hwclock --hctosys beim Systemstart zu verwenden, um eine ordentliche Systemzeit zu haben, bis Ihr System die Zeit aus der externen Quelle beziehen und den Elf-Minuten-Modus starten kann.

Jahrhundertwert der ISA-Hardware-Uhr

Es gibt eine Art von Standard, der das CMOS-Speicherbyte 50 auf einer ISA-Maschine als Anzeiger für das aktuelle Jahrhundert verwendet. hwclock nutzt oder setzt dieses Byte nicht, da es einige Maschinen gibt, die das Byte nicht auf diese Weise definieren und es sowieso unnötig ist. Das year-of-century leistet gute Arbeit beim Ermitteln des aktuellen Jahrhunderts.

Falls Sie einen echten Anwendungsfall für das CMOS-Century-Byte haben, kontaktieren Sie den Betreuer von hwclock, eine Option könnte hier zweckdienlich sein.

Beachten Sie, dass dieser Abschnitt nur relevant ist, wenn Sie die »Direct ISA«-Methode für den Zugriff auf die Hardware-Uhr verwenden. ACPI bietet eine standardisierte Zugriffsmöglichkeit auf die Jahrhundertwerte an, sofern diese von der Hardware unterstützt werden.

UMGEBUNGSVARIABLEN

TZ

DATEIEN

/etc/adjtime /usr/share/zoneinfo/ (/usr/lib/zoneinfo auf älteren Systemen) /dev/rtc /dev/rtc0 /dev/port /dev/tty1 /proc/cpuinfo

AUTOREN

Geschrieben von Bryan Henderson, September 1996 ([email protected]), basierend auf dem clock-Programm von Charles Hedrick, Rob Hooft und Harald Koenig. Im Quellcode finden Sie die vollständige Geschichte einschließlich der Danksagungen.

VERFÜGBARKEIT

Der Befehl hwclock ist Teil des Pakets util-linux und kann von ftp://ftp.kernel.org/pub/linux/utils/util-linux/ heruntergeladen werden.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <[email protected]> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <[email protected]>.