HWCLOCK(8) Systemadministration HWCLOCK(8) NAMN hwclock - verktyg for tidsklockor SYNOPSIS hwclock [function] [option...] BESKRIVNING hwclock ar ett administrationsverktyg for tidsklockorna. Det kan: visa maskinvaruklockans tid; stalla in maskinvaruklockan till en angiven tid; stalla in maskinvaruklockan fran systemklockan; stalla in systemklockan fran maskinvaruklockan; kompensera for drift av maskinvaruklockan; korrigera systemklockans tidsskala; stalla in karnans tidszon, NTP-tidsskala och epok (endast Alpha); och forutsaga framtida varden for maskinvaruklockan baserat pa dess drifthastighet. Sedan v2.26 har viktiga andringar gjorts i funktionen --hctosys och flaggan --directisa, och en ny flagga --update-drift har lagts till. Se deras respektive beskrivningar nedan. FUNKTIONER Foljande funktioner ar omsesidigt uteslutande, endast en kan anges at gangen. Om ingen anges ar standardvardet --show. -a, --adjust Lagg till eller dra ifran tid fran hardvaruklockan for att ta hansyn till systematisk drift sedan klockan senast stalldes in eller justerades. Se diskussionen nedan under Justeringsfunktionen. --getepoch; --setepoch Dessa funktioner ar endast avsedda for Alpha-maskiner och ar endast tillgangliga via RTC-drivrutinen i Linux-karnan. De anvands for att lasa och stalla in karnans epokvarde for maskinvaruklockan. Epoch ar det antal ar in i AD som ett nollarsvarde i maskinvaruklockan hanvisar till. Om maskinens BIOS t.ex. staller in arsraknaren i maskinvaruklockan sa att den innehaller antalet hela ar sedan 1952, maste karnans epokvarde for maskinvaruklockan vara 1952. Funktionen --setepoch kraver att man anvander flaggan --epoch for att ange artalet. Till exempel: hwclock --setepoch --epoch=1952 RTC-drivrutinen forsoker gissa sig till ratt epokvarde, sa det kanske inte ar nodvandigt att stalla in det. Detta epokvarde anvands nar hwclock laser av eller staller in maskinvaruklockan pa en Alpha-maskin. For ISA-maskiner anvander karnan den fasta epoken for maskinvaruklockan 1900. --param-get=parameter; --param-set=parameter=varde Las och stall in RTC:s parameter. Detta ar anvandbart for att t.ex. hamta RTC:ns funktion eller stalla in RTC:ns backup-omkopplingslage. parameter ar antingen ett numeriskt RTC-parametervarde (se Kernels include/uapi/linux/rtc.h) eller ett alias. Se --help for en lista over giltiga alias. parameter och varde, om de foregas av 0x, tolkas som hexadecimala varden, annars som decimala varden. --param-index number Select an instance of the same RTC parameter with it's index number. The default value for number is 0. --predict Forutse vad maskinvaruklockan kommer att visa i framtiden baserat pa den tid som anges med flaggan --date och informationen i /etc/adjtime. Detta ar anvandbart, till exempel for att ta hansyn till drift nar du staller in en vackning (aven kallat larm) av maskinvaruklockan. Se rtcwake(8). Anvand inte den har funktionen om maskinvaruklockan andras av nagot annat an det aktuella operativsystemets hwclock-kommando, t.ex. i "11-minuterslage" eller om du dubbelstartar ett annat operativsystem. -r, --show; --get Las av maskinvaruklockan och skriv ut dess tid till standardutdata i formatet ISO 8601. Tiden som visas ar alltid i lokal tid, aven om du haller maskinvaruklockan i UTC. Se flaggan --localtime. Showing the Hardware Clock time ar standardinstallningen nar ingen funktion anges. Funktionen --get tillampar ocksa driftkorrigering pa den avlasta tiden, baserat pa informationen i /etc/adjtime. Anvand inte den har funktionen om maskinvaruklockan modifieras av nagot annat an det aktuella operativsystemets hwclock-kommando, t.ex. i "11-minuterslage" eller genom att dubbelstarta ett annat operativsystem. -s, --hctosys Stall in systemklockan fran maskinvaruklockan. Den tid som avlases fran maskinvaruklockan kompenseras for systematisk drift innan den anvands for att stalla in systemklockan. Se diskussionen nedan under Justeringsfunktionen. Systemklockan maste stallas in pa UTC-tidsskalan for att datum- och tidstillampningar ska fungera korrekt tillsammans med den tidszon som har konfigurerats for systemet. Om maskinvaruklockan halls i lokal tid maste den tid som lases fran den flyttas till UTC-tidsskalan innan den anvands for att stalla in systemklockan. Funktionen --hctosys gor detta baserat pa informationen i filen /etc/adjtime eller kommandoradsargumenten --localtime och --utc. Observera: ingen justering for sommartid gors. Se diskussionen nedan under LOCAL vs UTC. Karnan haller ocksa ett tidszonsvarde, funktionen --hctosys staller in det till den tidszon som konfigurerats for systemet. Systemets tidszon konfigureras av miljovariabeln TZ eller filen /etc/localtime, som tzset(3) skulle tolka dem. Det foraldrade faltet tz_dsttime i karnans tidszonsvarde satts till noll. (For detaljer om vad det har faltet brukade betyda, se settimeofday(2) Nar funktionen --hctosys anvands i ett startskript och blir den forsta funktionen som anropar settimeofday(2) fran start, kommer den att stalla in NTP:s tidsskala '11 minute mode' via karnvariabeln persistent_klocka_is_local. Om konfigurationen av hardvaruklockans tidsskala andras kravs en omstart for att informera karnan. Se diskussionen nedan under Automatisk synkronisering av maskinvaruklockan via karnan. Det har ar en bra funktion att anvanda i ett av systemets startskript innan filsystemen monteras for lasning/skrivning. Den har funktionen ska aldrig anvandas pa ett system som kors. Att hoppa over systemtiden kommer att orsaka problem, t.ex. korrupta tidsstamplar i filsystemet. Om nagot har andrat hardvaruklockan, som NTP:s "11-minuterslage", kommer --hctosys att stalla in tiden felaktigt genom att inkludera driftkompensation. Driftkompensering kan forhindras genom att driftfaktorn i /etc/adjtime satts till noll. Denna installning kommer att vara bestaende sa lange flaggan --update-drift inte anvands med --systohc vid avstangning (eller nagon annanstans). Ett annat satt att forhindra detta ar att anvanda flaggan --noadjfile nar du anropar funktionen --hctosys. En tredje metod ar att radera filen /etc/adjtime. Hwclock kommer da som standard att anvanda UTC-tidsskalan for maskinvaruklockan. Om maskinvaruklockan tickar lokal tid maste den definieras i filen. Detta kan goras genom att anropa hwclock --localtime --adjust; nar filen inte finns kommer detta kommando inte att justera klockan, men det kommer att skapa filen med lokal tid konfigurerad och en driftfaktor pa noll. En situation dar det kan vara onskvart att inhibera hwclock:s driftkorrigering ar nar man dubbelstartar flera operativsystem. Om ett annat operativsystem andrar hardvaruklockans varde medan den har Linux-instansen ar stoppad, kommer den driftkorrigering som tillampas att vara felaktig nar den har instansen startas igen. For att hwclock:s driftkorrigering ska fungera korrekt ar det absolut nodvandigt att inget andrar hardvaruklockan nar dess Linux-instans inte kors. --set Stall in hardvaruklockan pa den tid som anges av flaggan --date och uppdatera tidsstamplarna i /etc/adjtime. Med flaggan --update-drift (om)beraknar du aven driftfaktorn. Prova utan flaggan om --set misslyckas. Se --update-drift nedan. --systz Detta ar en flagga till funktionen --hctosys som inte laser av hardvaruklockan eller staller in systemklockan; foljaktligen sker ingen driftkorrigering. Den ar avsedd att anvandas i ett uppstartsskript pa system med karnor over version 2.6 dar du vet att systemklockan har stallts in fran maskinvaruklockan av karnan under uppstarten. Den gor foljande saker som beskrivs ovan i funktionen --hctosys: o Korrigerar systemklockans tidsskala till UTC efter behov. Men istallet for att gora detta genom att stalla in systemklockan, informerar hwclock helt enkelt karnan som hanterar andringen. o Staller in karnans NTP-tidsskala for "11-minuterslage". o Staller in kernelns tidszon. De tva forsta ar endast tillgangliga vid det forsta anropet av settimeofday(2) efter uppstart. Foljaktligen ar denna flagga bara meningsfullt nar det anvands i ett startskript. Om konfigurationen av tidsskalan for hardvaruklockor andras kravs en omstart for att informera karnan. -w, --systohc Stall in hardvaruklockan fran systemklockan och uppdatera tidsstamplarna i /etc/adjtime. Med flaggan --update-drift (om)beraknar du aven driftfaktorn. Prova utan flaggan om --systohc misslyckas. Se --update-drift nedan. --vl-read, --vl-clear Vissa RTC-enheter kan overvaka spanningen i reservbatteriet och pa sa satt ge anvandaren mojlighet att veta att batteriet bor bytas ut. Funktionen --vl-read hamtar Voltage Low-informationen och avkodar resultatet till lasbar form for manniskor. Funktionen --vl-clear aterstaller Voltage Low-informationen, vilket ar nodvandigt for vissa RTC-enheter efter ett batteribyte. Se karnans include/uapi/linux/rtc.h for mer information om vilka delar av informationen som kan returneras. Observera att inte alla RTC-enheter har den har overvakningsmojligheten och att alla drivrutiner inte nodvandigtvis stoder lasning av informationen. -h, --help Visa hjalptext och avsluta. -V, --version Visa version och avsluta. FLAGGOR --adjfile=filename Asidosatt standardfilsokvagen /etc/adjtime. --date=date_strang Denna flagga maste anvandas tillsammans med funktionerna --set eller --predict, annars ignoreras det. hwclock --set --date='16:45' hwclock --predict --date='2525-08-14 07:11:05' Argumentet maste vara i lokal tid, aven om du haller din hardvaruklocka i UTC. Se flaggan --localtime. Darfor bor argumentet inte innehalla nagon tidszonsinformation. Det bor inte heller vara en relativ tid som "+5 minuter", eftersom hwclock:s precision beror pa korrelationen mellan argumentets varde och nar enter-tangenten trycks in. Brakdelar av sekunder faller bort. Den har flaggan kan forsta manga tids- och datumformat, men de foregaende parametrarna bor foljas. --delay=seconds This option overrides the default delay used when setting the clock time. The default is 0.5 (500 ms) for rtc_cmos; for other RTC types the delay is 0. If the RTC type cannot be determined (from sysfs), then the delay defaults also to 0.5 to be backwardly compatible. The 500 ms default is based on the commonly used MC146818A-compatible (x86) hardware clock. This Hardware Clock can only be set to an integer time plus one half second. The integer time is required because there is no interface to get or set a fractional second. The additional half second is because the Hardware Clock updates to the following second precisely 500 ms after setting the new time. Unfortunately, this behavior is hardware specific and in some cases a different delay is required. -D, --debug Anvand --verbose. Flaggan --debug har utgatt och kan komma att ateranvandas eller tas bort i en framtida version. --directisa Denna flagga ar meningsfull for ISA-kompatibla maskiner i x86- och x86_64-familjen. For andra maskiner har det ingen effekt. Den har flaggan talar om for hwclock att anvanda explicita I/O-instruktioner for att komma at maskinvaruklockan. Utan den har flaggan kommer hwclock att anvanda enhetsfilen rtc, som antas drivas av Linux RTC-enhetsdrivrutin. Fran och med v2.26 anvands inte langre automatiskt directisa nar rtc-drivrutinen inte ar tillganglig; detta orsakade ett osakert tillstand som kunde gora det mojligt for tva processer att komma at maskinvaruklockan samtidigt. Direkt hardvaruatkomst fran userspace bor endast anvandas for testning, felsokning och som en sista utvag nar alla andra metoder misslyckas. Se flaggan --rtc. --epoch=year Denna flagga kravs nar du anvander funktionen --setepoch. Det minsta year-vardet ar 1900. Maxvardet ar systemberoende (ULONG_MAX - 1). -f, --rtc=filename Override hwclock's default rtc device file name. Otherwise it will use the first one found in this order: /dev/rtc, /dev/rtc0, /dev/misc/rtc. For IA-64: /dev/efirtc /dev/misc/efirtc -l, --localtime; -u, --utc Anger vilken tidsskala hardvaruklockan ar installd pa. Hardvaruklockan kan konfigureras att anvanda antingen UTC eller den lokala tidsskalan, men inget i sjalva klockan sager vilket alternativ som anvands. Flaggorna --localtime eller --utc ger denna information till kommandot hwclock. Om du anger fel flagga (eller inte anger nagon av flaggorna och anvander en felaktig standard) blir bade installning och avlasning av hardvaruklockan felaktig. Om du varken anger --utc eller --localtime anvands den tid som senast angavs med en set-funktion (--set, --systohc eller --adjust) och som finns registrerad i /etc/adjtime. Om adjtime-filen inte finns ar standard UTC. Observera: andringar av sommartid kan vara inkonsekventa nar maskinvaruklockan halls i lokal tid. Se diskussionen nedan under LOKALTID vs UTC. --noadjfile Inaktivera de funktioner som tillhandahalls av /etc/adjtime. hwclock kommer inte att lasa eller skriva till den filen med den har flaggan. Antingen --utc eller --localtime maste anges nar denna flagga anvands. --test Andra faktiskt ingenting i systemet, dvs. inte klockorna eller /etc/adjtime (--verbose ar implicit med denna flagga). --update-drift Uppdatera hardvaruklockans driftfaktor i /etc/adjtime. Den kan endast anvandas med --set eller --systohc. Det maste ga minst fyra timmar mellan installningarna. Detta for att undvika ogiltiga berakningar. Ju langre perioden ar, desto mer exakt blir den resulterande driftfaktorn. Denna flagga lades till i v2.26, eftersom det ar vanligt att system anropar hwclock --systohc vid avstangning; med det gamla beteendet skulle detta automatiskt (om)berakna driftfaktorn, vilket orsakade flera problem: o Vid anvandning av NTP med en "11 minuters mode"-karna skulle driftfaktorn bli nara noll. o Det skulle inte tillata anvandning av korrigering av "kall" drift. Med de flesta konfigurationer ger anvandning av "kall" drift goda resultat. Kall innebar att maskinen ar avstangd, vilket kan ha en betydande inverkan pa driftfaktorn. o att (om)berakna driftfaktorn vid varje avstangning ger suboptimala resultat. Om t.ex. tillfalliga forhallanden gor att maskinen blir onormalt varm skulle berakningen av driftfaktorn hamna utanfor intervallet. o Betydligt langre avstangningstid for systemet (fran och med v2.31 nar --update-drift inte anvands lases inte RTC). Having hwclock calculate the drift factor is a good starting point, but for optimal results it will likely need to be adjusted by directly editing the /etc/adjtime file. For most configurations once a machine's optimal drift factor is crafted it should not need to be changed. Therefore, the old behavior to automatically (re)calculate drift was changed and now requires this option to be used. See the discussion below, under The Adjust Function. This option requires reading the Hardware Clock before setting it. If it cannot be read, then this option will cause the set functions to fail. This can happen, for example, if the Hardware Clock is corrupted by a power failure. In that case, the clock must first be set without this option. Despite it not working, the resulting drift correction factor would be invalid anyway. -v, --verbose Visa mer detaljer om vad hwclock gor internt. ANTECKNINGAR Klockor i ett Linux-system Det finns tva typer av datum- och tidsklockor: Hardvaruklockan: Denna klocka ar en oberoende hardvaruenhet med egen stromforsorjning (batteri, kondensator etc.) som fungerar nar maskinen ar avstangd eller till och med urkopplad. Pa ett ISA-kompatibelt system ar denna klocka specificerad som en del av ISA-standarden. Ett styrprogram kan bara lasa av eller stalla in den har klockan pa en hel sekund, men det kan ocksa upptacka kanterna pa klockans 1 sekunds tick, sa klockan har faktiskt praktiskt taget oandlig precision. Denna klocka kallas vanligen hardvaruklockan, realtidsklockan, RTC, BIOS-klockan och CMOS-klockan. Hardvaruklocka, i sin kapitaliserade form, myntades for anvandning av hwclock. Linuxkarnan hanvisar ocksa till den som den permanenta klockan. Vissa system som inte ar ISA-anslutna har flera realtidsklockor, men bara en av dem har en egen spanningsdoman. Ett externt I2C- eller SPI-klockchip med mycket lag effekt kan anvandas med ett reservbatteri som hardvaruklocka for att initiera en mer funktionell integrerad realtidsklocka som anvands for de flesta andra andamal. Systemklockan: Denna klocka ar en del av Linuxkarnan och drivs av ett timeravbrott. (Pa en ISA-maskin ar timeravbrottet en del av ISA-standarden.) Den har betydelse endast nar Linux kors pa maskinen. Systemtiden ar antalet sekunder sedan 00:00:00 den 1 januari 1970 UTC (eller mer kortfattat, antalet sekunder sedan 1969 UTC). Systemtiden ar dock inte ett heltal. Den har praktiskt taget oandlig precision. Systemtiden ar den tid som ar viktig. Hardvaruklockans grundlaggande syfte ar att halla tiden nar Linux inte kors sa att systemklockan kan initialiseras fran den vid uppstart. Observera att i DOS, som ISA utformades for, ar maskinvaruklockan den enda realtidsklockan. Det ar viktigt att systemtiden inte har nagra diskontinuiteter, vilket skulle handa om du anvande programmet date(1) for att stalla in den medan systemet kors. Du kan dock gora vad du vill med maskinvaruklockan medan systemet kors, och nasta gang Linux startar kommer det att gora det med den justerade tiden fran maskinvaruklockan. Observera: For narvarande ar detta inte mojligt pa de flesta system eftersom hwclock --systohc anropas vid avstangning. Linuxkarnans tidszon stalls in av hwclock. Men lat dig inte vilseledas - nastan ingen bryr sig om vilken tidszon karnan tror att den befinner sig i. Istallet anvander program som bryr sig om tidszonen (kanske for att de vill visa en lokal tid for dig) nastan alltid en mer traditionell metod for att bestamma tidszonen: De anvander miljovariabeln TZ eller filen /etc/localtime, vilket forklaras i man-sidan for tzset(3). Vissa program och delar av Linux-karnan, t.ex. filsystem, anvander dock karnans tidszonsvarde. Ett exempel ar filsystemet vfat. Om karnans tidszonsvarde ar fel kommer filsystemet vfat att rapportera och satta fel tidsstamplar pa filer. Ett annat exempel ar karnans NTP '11 minuters lage'. Om karnans tidszonsvarde och/eller variabeln persistent_klocka_is_local ar fel, kommer hardvaruklockan att stallas in felaktigt av "11-minuterslaget". Se diskussionen nedan, under Automatisk synkronisering av maskinvaruklockan av karnan. hwclock staller in karnans tidszon till det varde som anges av TZ eller /etc/localtime med funktionerna --hctosys eller --systz. Karnans tidszonsvarde bestar egentligen av tva delar: 1) ett falt tz_minuteswest som anger hur manga minuter lokal tid (ej justerad for sommartid) ligger efter UTC, och 2) ett falt tz_dsttime som anger vilken typ av sommartidskonvention som galler pa den aktuella platsen for narvarande. Det andra faltet anvands inte under Linux och ar alltid noll. Se aven settimeofday(2). Metoder for atkomst till hardvaruklocka hwclock anvander manga olika satt att hamta och stalla in varden for maskinvaruklockan. Det mest normala sattet ar att gora I/O till specialfilen rtc device, som forutsatts drivas av drivrutinen rtc device. Linux-system som anvander rtc-ramverket med udev kan dessutom stodja flera maskinvaruklockor. Detta kan medfora ett behov av att asidosatta standard rtc-enheten genom att ange en med flaggan --rtc. Denna metod ar dock inte alltid tillganglig eftersom aldre system inte har nagon rtc-drivrutin. Pa dessa system beror metoden for att komma at hardvaruklockan pa systemets maskinvara. Pa ett ISA-kompatibelt system kan hwclock fa direkt tillgang till de register i "CMOS-minnet" som utgor klockan genom att gora I/O till portarna 0x70 och 0x71. Den gor detta med faktiska I/O-instruktioner och kan darfor bara gora det om den kors med superuser effective userid. Den har metoden kan anvandas genom att ange flaggan --directisa. Det har ar en riktigt dalig metod for att komma at klockan, av alla de skal som gor att program i anvandarutrymmet i allmanhet inte ska gora direkta I/O och inaktivera avbrott. hwclock tillhandahaller den for testning, felsokning och for att det kan vara den enda tillgangliga metoden pa ISA-system som inte har en fungerande rtc-enhetsdrivrutin. Justeringsfunktionen Hardvaruklockan ar vanligtvis inte sarskilt exakt. En stor del av dess felaktighet ar dock helt forutsagbar - den vinner eller forlorar samma tid varje dag. Detta kallas systematisk drift. med hwclock:s --adjust-funktion kan du korrigera den systematiska driften i maskinvaruklockan. Det fungerar pa foljande satt: hwclock har en fil, /etc/adjtime, som innehaller viss historisk information. Denna fil kallas adjtime-filen. Anta att du borjar med att inte ha nagon adjtime-fil. Du ger kommandot hwclock --set for att stalla in maskinvaruklockan till den verkliga aktuella tiden. hwclock skapar adjtime-filen och registrerar i den den aktuella tiden nar klockan senast kalibrerades. Fem dagar senare har klockan gatt fram 10 sekunder, sa du ger kommandot hwclock --set --update-drift for att stalla tillbaka den 10 sekunder. hwclock uppdaterar adjtime-filen sa att den visar den aktuella tiden som den senaste gangen klockan kalibrerades, och registrerar 2 sekunder per dag som den systematiska drifthastigheten. 24 timmar gar, och sedan ger du kommandot hwclock --adjust. hwclock konsulterar adjtime-filen och ser att klockan vinner 2 sekunder per dag nar den lamnas i fred och att den har lamnats i fred i exakt en dag. Sa den subtraherar 2 sekunder fran maskinvaruklockan. Sedan registreras den aktuella tiden som den senaste gangen klockan justerades. Ytterligare 24 timmar gar och du utfardar en ny hwclock --adjust. hwclock gor samma sak: subtraherar 2 sekunder och uppdaterar adjtime-filen med den aktuella tiden da klockan senast justerades. Nar du anvander flaggan --update-drift med --set eller --systohc, beraknas den systematiska driftfaktorn (pa nytt) genom att jamfora den helt driftkorrigerade aktuella hardvaruklockans tid med den nya installda tiden, fran vilken den 24 timmars driftfaktorn harleds baserat pa den senast kalibrerade tidsstampeln fran adjtime-filen. Denna uppdaterade driftfaktor sparas sedan i /etc/adjtime. En liten mangd fel smyger sig in nar hardvaruklockan stalls in, sa --adjust avstar fran att gora nagon justering som ar mindre an 1 sekund. Senare, nar du begar en justering igen, kommer den ackumulerade avvikelsen att vara mer an 1 sekund och --adjust kommer att gora justeringen inklusive eventuella brakdelar. hwclock --hctosys anvander ocksa data fran adjtime-filen for att kompensera det varde som lases fran maskinvaruklockan innan det anvands for att stalla in systemklockan. Den har inte samma begransning pa 1 sekund som --adjust, och korrigerar driftvarden pa under en sekund omedelbart. Den andrar inte hardvaruklockans tid och inte heller adjtime-filen. Detta kan eliminera behovet av att anvanda --adjust, savida inte nagot annat i systemet kraver att maskinvaruklockan kompenseras. Adjtime-filen Den har fatt sitt namn pa grund av sitt historiska syfte att endast kontrollera justeringar, men den innehaller faktiskt annan information som anvands av hwclock fran ett anrop till nasta. Formatet pa filen adjtime ar i ASCII: Rad 1: Tre tal, atskilda av blanksteg: 1) den systematiska drifthastigheten i sekunder per dag, decimal med flyttal; 2) det resulterande antalet sekunder sedan 1969 UTC for senaste justering eller kalibrering, heltal med decimal; 3) noll (for kompatibilitet med clock(8)) som decimal med flyttal. Linje 2: Ett tal: det resulterande antalet sekunder sedan 1969 UTC for den senaste kalibreringen. Noll om ingen kalibrering har gjorts annu eller om det ar kant att nagon tidigare kalibrering ar ogiltig (t.ex. for att hardvaruklockan efter den kalibreringen inte har visat sig innehalla en giltig tid). Detta ar ett heltal med decimaltal. Rad 3: "UTC" eller "LOKAL". Anger om maskinvaruklockan ar installd pa Coordinated Universal Time eller lokal tid. Du kan alltid asidosatta detta varde med flaggor pa kommandoraden hwclock. Du kan anvanda en adjtime-fil som tidigare har anvants med programmet clock(8) med hwclock. Automatisk synkronisering av hardvaruklockan genom karnan Du bor kanna till ett annat satt som maskinvaruklockan halls synkroniserad pa i vissa system. Linuxkarnan har ett lage dar den kopierar systemtiden till maskinvaruklockan var 11:e minut. Det har laget ar en kompileringsflagga, sa det ar inte alla karnor som har den har mojligheten. Det har ar ett bra lage att anvanda nar du anvander nagot sofistikerat som NTP for att halla systemklockan synkroniserad. (NTP ar ett satt att halla systemtiden synkroniserad antingen med en tidsserver nagonstans i natverket eller med en radioklocka som ar ansluten till systemet. Se RFC 1305.) Om karnan ar kompilerad med flaggan '11 minute mode' kommer det att vara aktivt nar karnans klockdisciplin ar i ett synkroniserat tillstand. I detta lage ar bit 6 (den bit som satts i masken 0x0040) i karnans time_status-variabel osatt. Detta varde visas som "status"-raden i kommandona adjtimex --print eller ntptime. Det kravs en yttre paverkan, som NTP-daemon, for att satta karnans klockdisciplin i ett synkroniserat tillstand och darmed aktivera "11-minuterslaget". Det kan stangas av genom att kora nagot som staller in systemklockan pa det gamla sattet, inklusive hwclock --hctosys. Men om NTP-daemon fortfarande kors kommer den att sla pa "11-minuterslaget" igen nasta gang den synkroniserar systemklockan. Om ditt system kors med "11-minuterslaget" aktiverat kan det behova anvanda antingen --hctosys eller --systz i ett startskript, speciellt om maskinvaruklockan ar konfigurerad att anvanda den lokala tidsskalan. Om inte karnan far information om vilken tidsskala maskinvaruklockan anvander, kan den komma att anvanda fel tidsskala. Karnan anvander UTC som standard. Det forsta kommandot i userspace for att stalla in systemklockan informerar karnan om vilken tidsskala hardvaruklockan anvander. Detta sker via karnvariabeln persistent_klocka_is_local. Om --hctosys eller --systz ar det forsta kommandot kommer det att stalla in denna variabel enligt adjtime-filen eller lampligt kommandoradsargument. Observera att nar den har funktionen anvands och konfigurationen av tidsskalan for maskinvaruklockan andras, kravs en omstart for att karnan ska informeras. hwclock --adjust bor inte anvandas med NTP "11 minuters lage". ISA hardvaruklocka Century-varde Det finns nagon form av standard som definierar CMOS-minnesbyte 50 pa en ISA-maskin som en indikator pa vilket arhundrade det ar. hwclock anvander eller staller inte in den byten eftersom det finns vissa maskiner som inte definierar byten pa det sattet, och det ar egentligen inte nodvandigt anda, eftersom artalet gor ett bra jobb med att antyda vilket arhundrade det ar. Om du har en bona fide-anvandning for en CMOS century byte, kontakta hwclock-underhallaren; en flagga kan vara lampligt. Observera att detta avsnitt endast ar relevant nar du anvander "direkt ISA"-metoden for att komma at maskinvaruklockan. ACPI tillhandahaller ett standardiserat satt att komma at century-varden, nar de stods av maskinvaran. KONFIGURATION AV DATUM OCH TID Halla tiden utan extern synkronisering Denna diskussion baseras pa foljande forutsattningar: o Inget kors som andrar datum- och tidsklockorna, t.ex. NTP-daemon eller ett cron-jobb." o Systemets tidszon ar konfigurerad for korrekt lokal tid. Se nedan, under POSIX vs 'RIGHT'. o Tidigt under uppstarten anropas foljande, i denna ordning: adjtimex --tick varde --frequency varde hwclock --hctosys o Under avstangningen anropas foljande: hwclock --systohc o System utan adjtimex kan anvanda ntptime. Oavsett om du anvander NTP-daemon for att halla exakt tid eller inte, ar det vettigt att konfigurera systemet sa att det haller en nagorlunda bra datumtid pa egen hand. Det forsta steget for att astadkomma detta ar att ha en tydlig forstaelse for helheten. Det ar tva helt separata hardvaruenheter som kors i sin egen hastighet och som avviker fran den "korrekta" tiden i sin egen takt. Metoderna och programvaran for driftkorrigering ar olika for var och en av dem. De flesta system ar dock konfigurerade for att utbyta varden mellan dessa tva klockor vid start och avstangning. Nu overfors de enskilda enheternas fel i tidshallningen fram och tillbaka mellan varandra. Om du forsoker konfigurera driftkorrigering for endast en av dem, kommer den andra enhetens drift att overlagras pa den. Detta problem kan undvikas vid konfigurering av driftkorrigering for systemklockan genom att helt enkelt inte stanga av maskinen. Detta, plus det faktum att all hwclock:s precision (inklusive berakning av driftfaktorer) ar beroende av att systemklockans takt ar korrekt, innebar att konfigurationen av systemklockan bor goras forst. Systemklockans drift korrigeras med kommandot adjtimex(8) med flaggan --tick och --frequency. Dessa tva fungerar tillsammans: tick ar grovjusteringen och frekvensen ar finjusteringen. (For system som inte har ett adjtimex-paket kan ntptime -f ppm anvandas istallet) Vissa Linux-distributioner forsoker automatiskt berakna systemklockans drift med adjtimex:s jamforelseoperation. Att forsoka korrigera en driftande klocka genom att anvanda en annan driftande klocka som referens ar som en hund som forsoker fanga sin egen svans. Framgang kan ske sa smaningom, men stora anstrangningar och frustration kommer sannolikt att forega det. Denna automatisering kan ge en forbattring jamfort med ingen konfiguration, men att forvanta sig optimala resultat skulle vara felaktigt. Ett battre val for manuell konfiguration skulle vara adjtimex:s --log-flaggor. Det kan vara mer effektivt att helt enkelt folja systemklockans drift med sntp eller date -Ins och ett precisionsur och sedan berakna korrigeringen manuellt. Nar du har stallt in vardena for tick och frekvens fortsatter du att testa och forfina justeringarna tills systemklockan haller ratt tid. Se adjtimex(2) for mer information och ett exempel som visar manuella driftberakningar. Nar systemklockan tickar jamnt kan du ga vidare till hardvaruklockan. Som regel fungerar kall drift bast for de flesta anvandningsfall. Detta bor galla aven for 24/7-maskiner vars normala stillestandstid bestar av en omstart. I det fallet gor vardet pa driftfaktorn ingen storre skillnad. Men i de sallsynta fall da maskinen ar avstangd under en langre period bor kall drift ge battre resultat. Steg for att berakna kolddrift: 1 Se till att NTP-daemon inte startas vid uppstart. 2 Tiden for Systemklockan maste vara korrekt vid avstangning! 3 Stang av systemet. 4 Lat en langre period ga utan att andra hardvaruklockan. 5 Starta systemet. 6 Anvand omedelbart hwclock for att stalla in ratt tid, och lagg till flaggan --update-drift. Obs: Om steg 6 anvander --systohc, maste systemklockan stallas in korrekt (steg 6a) precis innan detta gors. Att lata hwclock berakna driftfaktorn ar en bra utgangspunkt, men for optimala resultat maste den sannolikt justeras genom att direkt redigera filen /etc/adjtime. Fortsatt att testa och forfina driftfaktorn tills maskinvaruklockan korrigeras korrekt vid uppstart. For att kontrollera detta ska du forst se till att systemtiden ar korrekt fore avstangning och sedan anvanda sntp, eller date -Ins och ett precisionsur, omedelbart efter uppstart. LOCAL vs UTC Att halla hardvaruklockan i en lokal tidsskala ger inkonsekventa resultat for sommartid: o Om Linux kors under en sommartidsandring kommer den tid som skrivs till maskinvaruklockan att justeras for andringen. o Om Linux INTE kors under en sommartidsandring kommer den tid som avlases fran maskinvaruklockan INTE att justeras for andringen. Hardvaruklockan pa ett ISA-kompatibelt system haller bara datum och tid, den har ingen uppfattning om tidszon eller sommartid. Nar hwclock far veta att den ar i lokal tid, antar den darfor att den ar i "ratt" lokal tid och gor inga justeringar av den tid som lases fran den. Linux hanterar sommartidsandringar pa ett transparent satt endast nar maskinvaruklockan halls i UTC-tidsskalan. Detta gors enkelt for systemadministratorer eftersom hwclock anvander lokal tid for utdata och som argument for flaggan --date. POSIX-system, som Linux, ar utformade for att systemklockan ska fungera i UTC-tidsskalan. Hardvaruklockans syfte ar att initiera systemklockan, sa det ar vettigt att aven halla den i UTC. Linux forsoker dock hantera att hardvaruklockan befinner sig i den lokala tidsskalan. Detta ar framst for dubbelstart med aldre versioner av MS Windows. Fran och med Windows 7 ar det meningen att registernyckeln RealTimeIsUniversal ska fungera korrekt sa att maskinvaruklockan kan hallas i UTC. POSIX kontra RIGHT" En diskussion om konfiguration av datum och tid skulle vara ofullstandig utan att ta upp tidszoner, och detta tacks for det mesta val av tzset(3). Ett omrade som inte verkar ha nagon dokumentation ar den "ratta" katalogen for Time Zone Database, ibland kallad tz eller zoneinfo. Det finns tva separata databaser i zoneinfo-systemet, posix och "right". "Right" (som nu heter zoneinfo-leaps) innehaller skottsekunder och posix gor det inte. For att anvanda den "ratta" databasen maste systemklockan stallas in pa (UTC + skottsekunder), vilket motsvarar (TAI - 10). Detta gor det mojligt att berakna det exakta antalet sekunder mellan tva datum som korsar en skottsekundeepok. Systemklockan konverteras sedan till ratt civil tid, inklusive UTC, genom att anvanda de "ratta" tidszonsfilerna som subtraherar skottsekunderna. Observera: denna konfiguration betraktas som experimentell och ar kand for att ha problem. For att konfigurera ett system att anvanda en viss databas maste alla filer som finns i dess katalog kopieras till roten av /usr/share/zoneinfo. Filer anvands aldrig direkt fran posix- eller "right"-underkatalogerna, t.ex. TZ='right/Europe/Dublin'. Denna vana borjade bli sa vanlig att uppstromsprojektet zoneinfo omstrukturerade systemets filtrad genom att flytta posix- och "hoger"-underkatalogerna fran zoneinfo-katalogen till syskonkataloger: /usr/share/zoneinfo, /usr/share/zoneinfo-posix, /usr/share/zoneinfo-leaps Tyvarr andrar vissa Linux-distributioner tillbaka till den gamla tradstrukturen i sina paket. Sa problemet med att systemadministratorer hamnar i "ratt" underkatalog kvarstar. Detta gor att systemets tidszon konfigureras for att inkludera skottsekunder medan zoneinfo-databasen fortfarande ar konfigurerad for att utesluta dem. Nar sedan en applikation som ett varldsklocka behover tidszonsfilen for South_Pole, eller en e-post-MTA, eller hwclock behover UTC-tidszonsfilen, hamtar de den fran roten till /usr/share/zoneinfo, eftersom det ar vad de ska gora. Dessa filer utesluter skottsekunder, men systemklockan inkluderar dem nu, vilket orsakar en felaktig tidsomvandling. Att forsoka blanda och matcha filer fran dessa separata databaser kommer inte att fungera, eftersom de kraver att systemklockan anvander olika tidsskalor. Zoneinfo-databasen maste konfigureras for att anvanda antingen posix eller 'right', enligt beskrivningen ovan, eller genom att tilldela en databassokvag till miljovariabeln TZDIR. AVSLUTSSTATUS Ett av foljande utgangsvarden kommer att returneras: EXIT_SUCCESS ('0' pa POSIX-system) Framgangsrikt programgenomforande. EXIT_FAILURE ('1' pa POSIX-system) Atgarden misslyckades eller kommandosyntaxen var inte giltig. MILJO TZ Om denna variabel ar installd har dess varde foretrade framfor den systemkonfigurerade tidszonen. TZDIR Om denna variabel ar installd har dess varde foretrade framfor den systemkonfigurerade sokvagen till tidszonsdatabasen. FILER /etc/adjtime Konfigurations- och tillstandsfilen for hwclock. Se aven adjtime_config(5). /etc/localtime Filen for systemets tidszon. /usr/share/zoneinfo/ Databasens katalog for systemets tidszon. Device files hwclock may try for Hardware Clock access: /dev/rtc /dev/rtc0 /dev/misc/rtc /dev/efirtc /dev/misc/efirtc SE AVEN date(1), adjtime_config(5), adjtimex(8), gettimeofday(2), settimeofday(2), crontab(1p), tzset(3) UPPHOVSPERSONER Skrivet av Bryan Henderson , september 1996, baserat pa arbete som utforts pa programmet clock(8) av Charles Hedrick, Rob Hooft och Harald Koenig. Se kallkoden for fullstandig historik och krediteringar. FELRAPPORTERING For felrapporter, anvand felhanteraren . TILLGANGLIGHET Kommandot hwclock ingar i paketet util-linux som kan hamtas fran Linux Kernel Archive . util-linux 2.42.1 2026-05-18 HWCLOCK(8)