Rendszeridő

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page System time and the translation is 100% complete.


A rendszeridő alatt értjük azt, amit a rendszeróra támogat. Az UNIX rendszerekben használják az idő követésére. Egy beépített hardveres órával vagy egy külső időszerver segítségével állítható be.

Előszó

Szoftveres óra vs. hardveres óra

A kernel által biztosított rendszeróra az 1970. január 1. 00:00:00 UTC óta eltelt másodpercek számának egyszerű számlálásaként van megvalósítva. Ezt nevezik Unix időnek.

A hardveres óra (más néven valós idejű óra vagy RTC (Real Time Clock)) általában az alaplap egyik összetevője. Megállás nélkül működik — még akkor is, ha a számítógép áramellátása megszakad.

UTC idő vs. helyi idő

A rendszeridő mindig a felhasználó időzónája szerint van beállítva a helyi időre, figyelembe véve a nyári időszámítást (daylight saving time (DST)).

A hardveres óra ideje módosítható a helyi idő vagy a koordinált világidő (UTC) megjelenítésére. Az UTC (Coordinated Universal Time) a preferált, mert független az időzónától és a nyári időszámítástól. Kivétel tehető a kettős rendszerindítású (dual boot) rendszer használatakor, amennyiben a másik operációs rendszer nincs úgy konfigurálva, hogy a hardveres órát UTC-ként értelmezze. Például a Windows rendszerre gondoljunk itt. (Ez módosítható. Tekintse meg a Kettős rendszerindítás Windows rendszerrel című részt).

Konfiguráció

Időzóna

Az idő megfelelő betartása érdekében válassza ki a megfelelő időzónát, hogy a rendszer tudja, hol található.

OpenRC

Tekintse meg az Időzóna (AMD64 kézikönyv) leírást.

systemd

A systemd tartalmazza a timedatectl parancsot az időzóna kezelésére:

Az aktuális zóna ellenőrzéséhez:

user $timedatectl

Az elérhető zónák felsorolásához:

user $timedatectl list-timezones

Az időzóna megváltoztatásához, pl. Magyarország számára:

root #timedatectl set-timezone Europe/Budapest

LC_TIME

Ez a környezeti változó határozza meg a dátumok és időpontok formázását. További részletekért tekintse meg a The GNU C Library leírást.

Rendszeróra

Általában a rendszer óráját a hardver órája állítja be rendszerindításkor. Alternatívaként lehetőség van a rendszeróra manuális beállítására vagy egy hálózati időkiszolgáló használatára.

A date paranccsal kezelhető a rendszer óra:

A szoftveres-óra aktuális ellenőrzéséhez:

user $date

A rendszeróra beállításához, például a 2016. május 6., 12:34 időhöz:

root #date 050612342016

Időszerver

Az időkiszolgálók használatával kapcsolatos információkért tekintse meg az NTP vagy Chrony cikket.

systemd

A systemd tartalmazza a timedatectl parancsot a rendszeróra beállításához:

A szoftveres aktuális óra ellenőrzéséhez:

user $timedatectl

A rendszeróra beállításához:

root #timedatectl set-time "2012-12-17 12:30:59"

Hardveres óra

Hardveres órához a következő kernel opciókat kell aktiválni:

KERNEL Szükséges kernel opciók egy hardveres órához
    Device Drivers --->
      [*] Real Time Clock --->
            [ ]   Set system time from RTC on startup and resume
            [ ]   Set the RTC time based on NTP synchronization
            [*]   /sys/class/rtc/rtcN (sysfs)
            [*]   /proc/driver/rtc (procfs for rtc0)
            [*]   /dev/rtcN (character devices)
            <*>   PC-style 'CMOS'

Futásidőben a hardver aktuális óraidejének az ellenőrzéséhez:

root #hwclock --show

A hardveres-órát beállítani az aktuális rendszerórára idejére:

root #hwclock --systohc

Hardveres-óra és a rendszeridő szinkronizálása

Általában a hardveres órát használják a rendszeróra beállítására rendszerindításkor. Ezt megteheti maga a kernel vagy egy rendszerindító szolgáltatás (init script). A kernel vagy egy szolgáltatás leállításkor is ráírhatja a szoftveres órát a hardver órájára. Ez segít a rendszernek abban, hogy a rendszerindításkor a megfelelő időpontban legyen.

Kernelen belüli módszer

Egy megfelelően modern kernelen (3.9 vagy újabb) a Linux beállítható úgy, hogy automatikusan kezelje a rendszeridő beállítását. Ehhez engedélyezze a Rendszeridő beállítása az RTC-ből induláskor és folytatáskor (CONFIG_RTC_HCTOSYS) és az RTC-idő beállítása az NTP-szinkronizálás (CONFIG_RTC_SYSTOHC) kernelbeállításai alapján:

KERNEL Hagyni a kernelnek, hogy szinkronizálja a rendszerórát
    Device Drivers --->
      [*] Real Time Clock --->
            [*]   Set system time from RTC on startup and resume
            (rtc0)  RTC used to set the system time
            [*]   Set the RTC time based on NTP synchronization
            (rtc0)  RTC used to synchronize NTP adjustment
            [*]   /sys/class/rtc/rtcN (sysfs)
            [*]   /proc/driver/rtc (procfs for rtc0)
            [*]   /dev/rtcN (character devices)
            <*>   PC-style 'CMOS'

Az RTC idő beállítása NTP szinkronizálás alapján kernel opciót jelenleg a chrony[1], az NTP és az OpenNTPD támogatja az 5.9p1[2] verzió óta.

Annak ellenőrzéséhez, hogy a hardveridő frissült-e, telepítse a net-misc/adjtimex fájlt, és futtassa:

root #adjtimex --print | grep status

A jelentett szám 6. bitjének nem beállított értéknek (0) kell lennie. További információk olvashatóak a hwclock man súgójában (keressen rá a súgóban a '11 minute mode' kifejezésre).

OpenRC

Az OpenRC használatának az esetében a hwclock init szkript beállíthatja a rendszer óráját a rendszerindításkor, és szinkronizálhatja a rendszeridőt a hardver órájával a rendszerleállításkor. A szolgáltatás alapértelmezés szerint engedélyezve van, és le kell tiltani a fent említett kernelen belüli módszer javára. A hwclock parancsfájlt nem szabad futtatni, ha a kernel valós idejű óráját használjuk.

root #rc-update delete hwclock boot
Note
Előfordulhat azonban, hogy a hwclock egy másik rc-szolgáltatás függőségeként indul el, pl. sysklogd. Ebben az esetben az rc-szolgáltatás osclock-ot ugyanarra a futási szintre kell felvenni, mint amelyen a függőségi rc-szolgáltatás is rajta van.

Ha azonban szükség van az OpenRC használatára, akkor állítsa a clock_hctosys és a clock_systohc paramétert is YES értékre az /etc/conf.d/hwclock fájlban. Alapértelmezés szerint a szolgáltatás UTC időszabványra van konfigurálva. A helyi időre váltáshoz adja hozzá a clock="local" kifejezést.

FILE /etc/conf.d/hwclockHardveres óraszinkronizálás hozzáadása
clock_hctosys="YES" 
clock_systohc="YES"
# clock="local"

Indítsa újra a hwclock szolgáltatást, és futtassa le a hardveres óra init szkriptjét a rendszerindításkor:

root #rc-service hwclock restart
root #rc-update add hwclock boot

systemd

A systemd segítségével beállítható a rendszeróra a rendszerindításkor. A timedatectl használatával kezelheti a hardveres órát:

A hardver aktuális órájának az ellenőrzéséhez:

user $timedatectl | grep "RTC time"

A hardveres óra beállítása az aktuális rendszerórára (UTC időszabvány):

root #timedatectl set-local-rtc 0

A hardveres óra beállítása az aktuális rendszerórára (helyi idő időszabvány):

root #timedatectl set-local-rtc 1

Hibaelhárítás

Kettős indítás Windows rendszerrel (Dual boot)

A másik operációs rendszerrel kettős rendszerindítású rendszerek, mint például a Windows, általában küzdenek a hardver órajelével. Ha azt szeretné, hogy a Windows ne állítsa vissza a hardver óráját a helyi időre, adja hozzá a következő beállításjegyzék-bejegyzést.

64 bites Windows esetén nyissa meg a regedit programot, majd keresse meg a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation mappát. Hozzon létre egy új QWORD bejegyzést RealTimeIsUniversal néven, majd állítsa be az értékét 1-re. Indítsa újra a rendszert. Az órának most UTC-időben kell lennie. 32 bites Windows esetén kövesse a 64 bites utasításokat, kivéve a DWORD használatát a QWORD helyett.

További olvasnivaló a témában

Külső források

Hivatkozások

  1. Comparison of NTP implementations, chrony, March 1st, 2017. Retrieved on July 11th, 2017.
  2. OpenNTPD. OpenNTPD 5.9p1, OpenNTPD, March 29th, 2016. Retrieved on July 11th, 2017.