¿Cómo configura el reloj de hardware en Linux mediante programación?
Pregunta
Linux proporciona la llamada stime (2) para configurar la hora del sistema. Sin embargo, aunque esto actualizará la hora del sistema, no configura el reloj del hardware del BIOS para que coincida con la nueva hora del sistema.
Los sistemas Linux generalmente sincronizan el reloj del hardware con la hora del sistema en el cierre y en intervalos periódicos. Sin embargo, si la máquina se apaga y se apaga antes de una de estas sincronizaciones automáticas, la hora será incorrecta cuando la máquina se reinicie.
¿Cómo se asegura de que el reloj de hardware se actualice cuando configura la hora del sistema?
Solución
Echa un vistazo a la página de manual de rtc para obtener más información, pero si has iniciado sesión como root, algo como esto:
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);
Otros consejos
Después de llamar a stime (), haz esto:
system("/sbin/hwclock --systohc");
Consulte la página del manual de hwclock (8) para obtener más información.
Comenzaría leyendo el código fuente de hwclock.
También me gustaría señalar que el reloj del hardware solo es preciso hasta cierto punto (he visto sistemas que perderán / ganarán un par de segundos al día).
¿Ha considerado configurar el demonio de tiempo de red para sincronizar su reloj con un servidor de hora?
Es cierto que esta sincronización no se produce hasta después de que se inicie el daemon, por lo que mantener sincronizado el reloj del hardware también ayuda entre el encendido y el punto en que el daemon de tiempo se sincroniza con el servidor de tiempo.
Si el editor de texto es diferente de kubuntu (kate es el predeterminado en el editor), use el suyo con el comando sudo
en la terminal.
- ejecutar terminal
- copia y pega este comando
sudo kate / etc / default / rcS
presione Enter - ingrese la contraseña de usuario (su contraseña de inicio de sesión) presione Enter
- el editor de texto se abrirá en el escritorio
- cambie la línea
UTC = yes
aUTC=no
- y haga clic en guardar (en la parte superior de la barra de pestañas del editor de texto)
- reiniciar