Hora del sistema

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.


La hora del sistema, configurada por el reloj del sistema, se utiliza en sistemas Unix para registrar el paso del tiempo. Puede ser configurada por un reloj por hardware, dentro de la placa, o por un servidor de reloj externo.

Prefacio

Reloj por software contra reloj por hardware

El reloj del sistema, provisto por el kernel, es implementado como una simple cuenta del número de ticks que han transcurrido desde el día 1 de enero de 1970 a las 00:00:00 en hora UTC. Esto se llama tiempo Unix.

El reloj por hardware (también conocido como reloj a tiempo real o RTC) es típicamente un componente en la placa base. Ejecuta &mdash sin parar; incluso cuando la fuente de alimentación del ordenador es interrumpida.

Hora UTC contra localtime u hora local

La hora del sistema siempre está configurada a la hora local de la forma determinada por la zona horaria del/la usuario/a, teniendo en cuenta el horario de verano.

La hora del reloj por hardware puede ser modificada para representar la hora local o Tiempo universal coordinado (UTC). UTC es preferido porque es independiente de la zona horaria. Existen excepciones cuando se usa un sistema dual-boot (con dos sistemas operativos o más) y el otro sistema operativo no está configurado para interpretar el reloj por hardware como UTC, como en el caso de WIndows (esto se puede cambiar; vea la sección hacer dual-boot con Windows).

Configuración

Zona horaria

Para registrar la hora adecuadamente, seleccione la zona horaria arpropiada para que el sistema sepa dónde se ubica.

OpenRC

Vea la sección Zona horaria (Manual AMD64).

systemd

systemd viene con el comando timedatectl para gestionar la zona horaria del sistema:

Para ver la zona actual:

user $timedatectl

Para listar las zonas disponibles:

user $timedatectl list-timezones

Para cambiar la zona a, por ejemplo, Alemania:

root #timedatectl set-timezone Europe/Berlin

LC_TIME

Esta variable del entorno define el formato de la fecha y hora. Para más detalles, vea Las Librerías C de GNU

Reloj del sistema

Usualmente la hora del reloj del sistema la configura el reloj por hardware durante el arranque. De manera alternativa, es posible ajustar manualmente el reloj del sistema o usar un servicio de reloj en red.

El comando date puede ser usado para gestionar la hora del reloj del sistema:

Para comprobar la hora actual del reloj por software:

user $date

Para configurar el reloj del sistema, p. ej. a las 12:34 del 6 de mayo de 2016:

root #date 050612342016

Servidor de tiempo

Vea los artículos NTP o Chrony para más información acerca del uso de servicios de reloj.

systemd

systemd viene con el comando timedatectl para gestionar la hora del reloj del sistema:

Para mostrar la hora del reloj por software actual:

user $timedatectl

Para configurar el reloj del sistema:

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

Reloj por hardware

Para tener un reloj por hardware, se deben activar las siguientes opciones del núcelo (o kernel):

KERNEL Opciones del kernel necesarias para un reloj por hardware
    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'

Una vez encendido el sistema, para comprobar la hora del reloj por hardware actual:

root #hwclock --show

Para ajustar el reloj por hardware al reloj del sistema actual:

root #hwclock --systohc

Sincronizar el reloj por hardware y el reloj del sistema

Usualmente, el reloj por hardware se utiliza para configurar el reloj del sistema durante el arranque. Esto puede ser realizado por el propio núcleo (o kernel) o por un servicio de arranque (guion o script init). Además, durante el apagado, el núcleo o un servicio pueden configurar el reloj por software y sincronizarlo con el reloj por hardware. Esto ayuda al sistema a tener la hora correcta al arrancar.

Método en el núcleo

En un kernel lo suficientemente moderno (3.9 o más nuevo), Linux puede configurarse para manejar el reloj del sistema automáticamente. Para hacerlo, active (CONFIG_RTC_HCTOSYS) Set system time from RTC on startup and resume y (CONFIG_RTC_SYSTOHC) Set the RTC time based on NTP synchronization en las opciones del núcleo:

KERNEL Permitirle al kernel sincronizar el reloj del sistema
    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'

La opción del kernel Set the RTC time based on NTP synchronization actualmente es soportada por chrony[1]OpenNTPD. OpenNTPD 5.9p1, OpenNTPD, 29 de marzo de 2016. Registrado el 11 de julio de 2017.</ref>.

Para comprobar si el reloj por hardware está actualizado, instale net-misc/adjtimex y ejecute:

root #adjtimex --print | grep status

El bit 6 del número mostrado no debe estar configurado (0). Puede ver más información en las man pages de hwclock ('modo minuto 11').

OpenRC

Al usar OpenRC, el guion de inicio (init script) hwclock puede configurar el reloj del sistema al arranque y sincronizar el reloj del sistema con el reloj por hardware durante el apagado. El servicio está activado por defecto, y debería ser desactivado en favor del método mencionado anteriormente, que involucra al núcleo. El script hwclock no debe ser ejecutado mientras se use el reloj a tiempo real del núcleo.

root #rc-update delete hwclock boot
Nota
Puede darse el caso de que hwclock arranque como dependencia de otro servicio rc, p. ej. sysklogd. En este caso, el osclock del servicio rc debe ser añadido al mismo nivel de ejecuión que el servicio rc dependiente.

Sin embargo, si se necesita usar el OpenRC, ajuste tanto clock_hctosys como clock_systohc a YES en /etc/conf.d/hwclock. De manera predeterminada, el servicio se configura según el estándar de tiempo universal coordinado (UTC). Para cambiar a hora local, añada clock="local".

ARCHIVO /etc/conf.d/hwclockAdding hardware clock sync
clock_hctosys="YES" 
clock_systohc="YES"
# clock="local"

Reinicie el servicio hwclock y prepare el guion de inicio del reloj por hardware para que se ejecute durante el arranque del sistema:

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

systemd

systemd puede usarse para configurar el reloj del sistema al arrancar. Use timedatectl para gestionar el reloj por hardware:

Para comprobar la hora del reloj por hardware actual:

user $timedatectl | grep "RTC time"

Para ajustrar el reloj por hardware igual que el reloj del sistema actual (estándar de tiempo universal coordinado):

root #timedatectl set-local-rtc 0

Para ajustar el reloj por hardware igual que el reloj del sistema actual (estándar de reloj local):

root #timedatectl set-local-rtc 1

Resolución de problemas

Dual-boot con Windows

Aquellos sistemas que formen parte de un dual-boot con otro sistema operativo, como pueda ser Windows, suelen tener complicaciones con respecto al reloj por hardware. Para hacer que Windows no vuelva a ajustar el reloj por hardware a la hora local, se puede añadir la siguiente entrada en el registro:

Para los sistemas Windows de 64 bits, abra regedit y navegue a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. Cree una nueva entrada QWORD llamada RealTimeIsUniversal y configure su valor a 1. Reinicie el sistema. El reloj ahora debería estar en tiempo UTC (tiempo universal coordinado). Para sistemas Windows de 32 bits, siga las instrucciones de los sistemas de 64 bits pero usando una entrada DWORD en vez de QWORD.

Véase también

Recursos externos

Referencias

  1. Comparación de implementaciones de NTP, chrony, 1 de marzo de 2017. Registrado el 11 de julio de 2017.