Ein umfassender Leitfaden, wie man die Hardware-Uhr auf Linux-Systemen programmatisch einstellt, um eine genaue Systemzeit und BIOS-Synchronisation sicherzustellen.
---
Dieses Video basiert auf der Frage https://stackoverflow.com/q/202116/ gestellt von dem Nutzer 'Kristopher Johnson' ( https://stackoverflow.com/u/1175/ ) sowie auf der Antwort https://stackoverflow.com/a/202170/ bereitgestellt von dem Nutzer 'Zan Lynx' ( https://stackoverflow.com/u/13422/ ) auf der Website 'Stack Overflow'. Vielen Dank an diese großartigen Nutzer und die Stackexchange-Community für ihre Beiträge.
Besuchen Sie diese Links, um den Originalinhalt und weitere Details zu sehen, z. B. alternative Lösungen, aktuelle Entwicklungen zum Thema, Kommentare, Versionsverlauf usw. Der ursprüngliche Titel der Frage lautete beispielsweise: How Do You Programmatically Set the Hardware Clock on Linux?
Außerdem steht der Inhalt (außer Musik) unter der Lizenz CC BY-SA https://meta.stackexchange.com/help/l...
Der ursprüngliche Fragenbeitrag steht unter der Lizenz 'CC BY-SA 2.5' ( https://creativecommons.org/licenses/... ), und der ursprüngliche Antwortbeitrag steht unter der Lizenz 'CC BY-SA 4.0' ( https://creativecommons.org/licenses/... ).
Falls Ihnen irgendetwas auffällt oder Unstimmigkeiten bestehen, schreiben Sie mir bitte an vlogize [AT] gmail [DOT] com.
---
Wie man die Hardware-Uhr unter Linux programmatisch einstellt
Die Zeitmessung in Computern ist ein kritischer Aspekt, besonders bei der Verwaltung von Systemen, die ein hohes Maß an Genauigkeit erfordern. Im Linux-Betriebssystem müssen die Systemzeit und die Hardware-Uhr häufig synchronisiert werden, um einen reibungslosen Ablauf zu gewährleisten. In diesem Blogbeitrag wird erläutert, wie man die Hardware-Uhr unter Linux programmatisch einstellt, damit Ihr System auch nach Stromausfällen oder Herunterfahren die korrekte Zeit beibehält.
Das Problem verstehen
Wenn Sie unter Linux die Systemzeit mit dem stime(2)-Aufruf setzen, stellen Sie möglicherweise fest, dass die Hardware-Uhr – auch bekannt als BIOS-Uhr – nicht automatisch aktualisiert wird, um die neu eingestellte Zeit widerzuspiegeln. Obwohl Linux Mechanismen bietet, die Hardware-Uhr beim Herunterfahren und in periodischen Abständen mit der Systemzeit zu synchronisieren, gibt es Situationen, in denen die Synchronisation nicht durchgeführt werden kann. Ein Stromausfall oder ein plötzliches Herunterfahren kann dazu führen, dass die Hardware-Uhr veraltet bleibt, was beim Neustart des Systems zu Zeitabweichungen führt.
Warum ist das wichtig?
Exakte Protokollierung: Zeitgestempelte Logs werden unzuverlässig, wenn die Uhrzeit falsch ist.
Geplante Aufgaben: Cronjobs und andere geplante Aufgaben sind auf präzise Zeiteinstellungen angewiesen.
Netzwerkdienste: Zeitabweichungen können Netzwerkoperationen beeinträchtigen, insbesondere in verteilten Systemen.
Um diese Probleme zu vermeiden, ist es wichtig, die Hardware-Uhr jedes Mal zu setzen, wenn Sie die Systemzeit aktualisieren. Schauen wir uns an, wie Sie das programmatisch umsetzen können.
Schritte zum Einstellen der Hardware-Uhr
Hier ist ein einfacher Ablauf, um die BIOS-Hardware-Uhr unter Linux programmatisch zu aktualisieren. Die folgenden Anweisungen setzen voraus, dass Sie Root-Zugriff haben, da das Ändern der Hardware-Uhr administrative Rechte erfordert.
1. Notwendige Bibliotheken einbinden
Sie müssen spezifische Header einbinden, um mit der RTC (Real-Time Clock) unter Linux zu arbeiten. Verwenden Sie hierzu folgende Bibliotheken:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Diese Bibliotheken bieten die notwendigen Werkzeuge, um mit der Hardware-Uhr zu interagieren und Ein-/Ausgabesteuerungen zu verwalten.
2. Die RTC-Zeitstruktur definieren
Definieren Sie eine struct, die die Zeitkomponenten enthält, die Sie einstellen möchten. Diese Struktur sollte Sekunden, Minuten, Stunden, Tag, Monat und Jahr umfassen:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
3. Das RTC-Gerät öffnen
Als nächstes öffnen Sie das RTC-Gerät, das sich üblicherweise unter /dev/rtc befindet:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Dieser Befehl gibt Ihnen Zugriff auf das Echtzeituhr-Gerät für weitere Operationen.
4. Die korrekten Werte setzen
Bevor Sie die Zeit tatsächlich einstellen, stellen Sie sicher, dass Sie Ihre rtc_time-Struktur mit den genauen Werten füllen, die dem Datum und der Uhrzeit entsprechen, die Sie setzen möchten. Zum Beispiel:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
5. Die RTC-Zeit setzen
Mit der ausgefüllten Struktur verwenden Sie die Funktion ioctl, um die Hardware-Uhrzeit zu setzen:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Dieser Befehl synchronisiert die Hardware-Uhr mit den in Ihrer Struktur angegebenen Werten.
6. Das RTC-Gerät schließen
Zum Schluss schließen Sie das Gerät, um Systemressourcen freizugeben:
[[Siehe Video, um diesen Text o
Информация по комментариям в разработке