Cum stabiliți programabil ceasul hardware pe Linux?

Linux oferă convorbirea stime (2) pentru a seta ora sistemului. Cu toate acestea, în timp ce acest lucru va actualiza timpul sistemului, nu setează ceasul hardware BIOS pentru a se potrivi cu noul timp al sistemului.

Sistemele Linux sincronizează de obicei ceasul hardware cu timpul de sistem la oprire și la intervale periodice. Cu toate acestea, dacă aparatul este alimentat cu energie electrică înainte de sincronizarea automată, timpul va fi incorect când mașina se repornește.

Cum vă asigurați că ceasul hardware se actualizează la setarea timpului de sistem?

11
De ce ar însemna limba de programare? Aveți răspunsuri diferite pentru diferite limbi /
adăugat autor Kristopher Johnson, sursa
Specificați un limbaj de programare.
adăugat autor Lightness Races in Orbit, sursa
Er ................. da.
adăugat autor Lightness Races in Orbit, sursa

5 răspunsuri

Consultați pagina man-rtc pentru detalii, dar dacă sunteți logat ca root, ceva de genul:

    struct       rtc_time {
        int         tm_sec;      
        int         tm_min;      
        int         tm_hour;     
        int         tm_mday;     
        int         tm_mon;      
        int         tm_year;     
        int         tm_wday; /* unused */
        int         tm_yday; /* unused */
        int         tm_isdst;/* unused */
    };

struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
14
adăugat
Rădăcina nu este necesară, numai capacitatea CAP_SYS_TIME în funcție de rtc (4).
adăugat autor Erik Westrup, sursa

După ce apelați stime (), faceți acest lucru:

system("/sbin/hwclock --systohc");

Pentru mai multe informații, consultați pagina manului hwclock (8).

9
adăugat
Rețineți că dacă rtc este setat să utilizeze timpul UTC, trebuie să adăugați - utc sau - localtime altfel.
adăugat autor Julien Hirel, sursa

Aș dori, de asemenea, să subliniez că ceasul hardware este exact doar la un punct (am văzut sisteme care vor pierde/câștiga câteva secunde pe zi).

Ați luat în considerare configurarea daemonului de rețea pentru a vă sincroniza ceasul împotriva unui server de timp?

Desigur, această sincronizare nu se întâmplă decât după ce daemonul începe, astfel încât menținerea ceasului hardware în sincronizare ajută de asemenea între întreruperea și punctul în care daemonul de timp se sincronizează cu serverul de timp.

2
adăugat
Cele mai multe dintre aceste variante, din experiența mea, se datorează tensiunii joase pe bateria motheboard. Aș sugera o verificare înainte de a stabili un serviciu inutil dacă nu este critică.
adăugat autor Manuel Ferreria, sursa

Aș începe prin citirea codului sursă al hwclock.

2
adăugat
De ce să citiți codul în loc să îl folosiți?
adăugat autor Kristopher Johnson, sursa
@iny, am vrut să spun "De ce să citești sursa la hwclock, când ai putea suna pur și simplu hwclock?" Zan a avut un răspuns bun la asta.
adăugat autor Kristopher Johnson, sursa
S-ar putea să scrieți pentru un sistem încorporat și să nu aveți loc pentru alt program. Sau poate vrei doar să știi din pricina curiozității.
adăugat autor Zan Lynx, sursa
A alerga "hrace" este probabil cel mai rapid mod de a-ți satisface curiozitatea.
adăugat autor sigjuice, sursa
Acesta a fost un răspuns la întrebarea inițială. Nu știu de ce este nevoie.
adăugat autor iny, sursa

Dacă editorul de text este diferit de kubuntu (kate este implicit în editor), utilizați-vă propriul cu comanda sudo în terminal.

  1. run terminal
  2. copy and paste this command sudo kate /etc/default/rcS press Enter
  3. enter user password (your login password) press Enter
  4. text editor will open on the desktop
  5. change the line UTC=yes to UTC=no
  6. and click save (at top of text editor tab bar)
  7. reboot
0
adăugat