Provided by:
manpages-es-extra_0.8a-17_all 
NOMBRE
hwclock - interroga y pone en hora el Reloj del Hardware (RTC)
SINOPSIS
hwclock --show
hwclock --set --date=nuevafecha
hwclock --systohc
hwclock --hctosys
hwclock --getepoch
hwclock --setepoch --epoch=a~no
hwclock --adjust
hwclock --version
otras opciones:
--utc --directisa --test --debug
Las abreviaciones minimas de todas las opciones son aceptables, si no
hay ambiguedad.
Tambien se aceptan las opciones equivalentes -r, -w, -s, -a, -v, -u y
-D, por compatibilidad con el programa "clock".
DESCRIPCI'ON
hwclock es una herramienta para acceder al Reloj del Hardware. Ud.
puede mostrar la hora actual, poner el Reloj del Hardware a una hora
especificada, poner el Reloj del Hardware a la Hora del Sistema, y
poner el Tiempo del Sistema desde el Reloj del Hardware.
Ud. tambien puede ejecutar hwclock periodicamente para insertar o
quitar tiempo del Reloj del Hardware para compensar desviaciones
sistematicas (en las que el reloj gana o pierde tiempo consistentemente
a una cierta velocidad si se deja solo).
OPCIONES
Ud. necesita exactamente una de las siguientes opciones para decirle a
hwclock que funcion realizar:
--show Lee el Reloj del Hardware y muestra la hora en la salida
estandar.
--set Pone el Reloj del Hardware a la hora dada por la opcion --date.
--hctosys
Pone el Tiempo del Sistema a partir del Reloj del Hardware. Esta
es una buena opcion para poner en uno de los guiones de arranque
del sistema.
--systohc
Pone el Reloj del Hardware a la hora del sistema actual.
--adjust
Anade o sustrae tiempo del Reloj del Hardware para tener en
cuenta el desvio sistematico desde la ultima vez que el reloj se
puso o se ajusto. Vea la discusion al respecto mas adelante.
--getepoch
Muestra en la salida estandar el valor de la epoca del Reloj del
Hardware del nucleo. Esto es el numero de anos en la Era al que
se refiere el ano cero del Reloj del Hardware. Por ejemplo, si
Ud. emplea el convenio de que el contador de anos en su Reloj
del Hardware contiene el numero de anos completos desde 1952,
entonces el valor de la epoca del contador de anos del Reloj del
Hardware debe ser 1952.
Este valor de la epoca se emplea cada vez que hwclock lee o pone
el Reloj del Hardware.
--setepoch
Pone el valor de la epoca del Reloj del Hardware del nucleo al
valor especificado por la opcion --epoch. Vea la opcion
--getepoch para mas detalles.
--version
Muestra la version de hwclock en la salida estandar.
Si Ud. especifica la opcion --set, necesita la opcion siguiente.
Si no, no es tenida en consideracion.
--date=nuevafecha
Especifica la hora a la cual poner el Reloj del Hardware. El
valor de esta opcion es un argumento valido para el programa
date(1). Por ejemplo,
hwclock --set --date="9/22/96 16:45:05"
--epoch=a~no
Especifica el ano que es el principio de la epoca del Reloj del
Hardware. Esto es el numero de anos en la Era a la cual se
refiere un valor cero en el contador de anos del Reloj del
Hardware.
Por ejemplo,
hwclock --setepoch --epoch=1952
Las opciones siguientes se aplican a la mayoria de las funciones.
--utc Indica que el Reloj del Hardware se mantiene en el Tiempo
Universal Coordinado (UTC). Es cosa suya si mantiene su reloj en
hora local o UTC, pero nada en el reloj le dice que es lo que ha
escogido. Asi que con esta opcion es como le da esa informacion
a hwclock.
Si no especifica --utc cuando debiera, o viceversa, el poner y
preguntar la hora del reloj del hardware acabaran funcionando mal.
--directisa
tiene sentido solamente en una maquina ISA. Para todas las otras
maquinas no tiene efecto. Esta opcion le dice a hwclock que use
instrucciones de E/S explicitas para acceder al reloj del
hardware. Sin esta opcion, hwclock intentara emplear el
dispositivo /dev/rtc (que supone que esta controlado por el
controlador del dispositivo rtc). Si es incapaz de abrir el
dispositivo (para lectura), empleara las instrucciones
explicitas de E/S, de todas formas.
El controlador de dispositivo rtc fue introducido en Linux version 2.
--test Hace todo excepto actualizar realmente el Reloj del Hardware o
cualquier otra cosa. Esto es util, especialmente en conjuncion
con --debug, para aprender sobre como funciona hwclock.
--debug
Muestra un monton de informacion sobre lo que hwclock esta
haciendo internamente. Algo de su funcion es compleja y esta
salida puede ayudarle a comprender como funciona el programa.
NOTAS
Relojes en un sistema Linux
Hay dos relojes principales en un sistema Linux:
El Reloj del Hardware: Esto es un reloj que corre independientemente de
cualquier programa de control ejecutandose en la CPU e incluso cuando
la maquina esta apagada.
En un sistema ISA, este reloj esta especificado como parte del estandar
ISA. El programa de control puede leer o poner este reloj a un segundo
entero, pero el programa de control tambien puede detectar los limites
de los pulsos del reloj de 1 segundo, asi que el reloj realmente tiene
una precision virtualmente infinita.
Este reloj se llama comunmente el Reloj del Hardware, el reloj de
tiempo real, el RTC, el reloj de la BIOS, y el reloj CMOS. El Reloj del
Hardware, en esta forma con las iniciales en mayusculas, se acuno para
el uso en hwclock porque todos los otros nombres son inapropiados hasta
el punto de llevar a confusion.
El Tiempo del Sistema: Esto es el tiempo mantenido por un reloj de
dentro del nucleo Linux y controlado por un interruptor de
temporizacion. (En una maquina ISA, el interruptor de temporizacion es
parte del estandar ISA.) Solo tiene sentido mientras Linux esta
ejecutandose en la maquina. El Tiempo del Sistema es el numero de
segundos desde las 00:00:00 horas del 1 de Enero de 1970, UTC (o mas
sucintamente, el numero de segundos desde 1969). El Tiempo del Sistema
no es un entero, sin embargo. Tiene precision virtualmente infinita.
El Tiempo del Sistema es el que tiene importancia. El proposito basico
del Reloj del Hardware en un sistema Linux es mantener la hora mientras
que Linux no esta ejecutandose. Ud. inicia el Tiempo del Sistema al
tiempo del Reloj del Hardware cuando Linux arranca, y ya no utiliza
nunca mas el Reloj del Hardware. Observe que en DOS, para quien se
diseno ISA, el Reloj del Hardware es el unico reloj de tiempo real.
Es importante que el Tiempo del Sistema no tenga discontinuidades como
las que podrian ocurrir si Ud. empleara el programa date(1) para
ponerlo en hora mientras el sistema este en ejecucion. Sin embargo, Ud.
puede hacer lo que quiera con el Reloj del Hardware mientras el sistema
este ejecutandose, y la siguiente vez que Linux arrancara, lo haria con
la nueva hora ajustada del Reloj del Hardware. Tambien puede emplear
el programa adjtimex(8) para ajustar suavemente el Tiempo del Sistema
mientras que el sistema esta ejecutandose.
C'omo hwclock accede al Reloj del Hardware
hwclock utiliza muchas formas diferentes de obtener y poner valores en
el Reloj del Hardware. La forma mas normal es hacer E/S en el fichero
especial de dispositivo /dev/rtc, que se supone controlado por el
controlador del dispositivo rtc. Sin embargo, este metodo no esta
siempre disponible. Por una cosa: el controlador rtc es una adicion
relativamente reciente a Linux. Sistemas mas antiguos no lo tienen.
En sistemas mas viejos, el metodo de acceder al Reloj del Hardware
depende del hardware del sistema.
En un sistema ISA, hwclock puede acceder directamente a los registros
de la "memoria CMOS" que constituye el reloj, haciendo E/S a los
puertos 0x70 y 0x71. Esto solo lo puede hacer si se ejecuta con el UID
efectivo 0 (esto es, con privilegios de super-usuario).
Esto es realmente un pobre metodo de acceder al reloj, por la razon de
que los programas en el espacio de usuario se supone generalmente que
no deben hacer E/S directa y deshabilitar interrupciones. Hwclock lo
proporciona porque es el unico metodo disponible con nucleos Linux mas
antiguos para maquinas ISA.
En un sistema m68k (68000 de Motorola), hwclock puede acceder al reloj
a traves del controlador de consola, mediante el fichero especial de
dispositivo /dev/tty1.
En un Alpha, de DEC, /dev/rtc es la unica posibilidad.
Hay o habia algunos sistemas Linux en Alpha que no tienen /dev/rtc y
hay o habia programas que accedian al reloj a traves de E/S casi
directa usando /dev/port. Sin embargo, esto no es un metodo tan bueno
como el de /dev/rtc y tales programas no fueron tan ampliamente
empleados como para que hwclock tuviera ninguna necesidad de ser
compatible hacia atras con ellos. Asi que hwclock no proporciona el
metodo de /dev/port y consecuentemente no funcionara en un Alpha que no
tenga /dev/rtc.
hwclock intenta emplear /dev/rtc. Si se ha compilado para un nucleo que
no tiene esa funcion o es incapaz de abrir /dev/rtc, hwclock intentara
otro metodo, si hay alguno disponible. En una maquina ISA, Ud. puede
forzar a hwclock a usar la manipulacion directa de los registros de la
CMOS sin ni siquiera intentar /dev/rtc especificando la opcion
--directisa.
La Funci'on de Ajuste
El Reloj del Hardware no es usualmente muy preciso. Sin embargo, mucha
de su imprecision es completamente predecible; gana o pierde la misma
cantidad de tiempo cada dia. Esto se llama desviacion sistematica. La
funcion de "ajuste" de hwclock le permite hacer correcciones
sistematicas para corregir la desviacion sistematica.
Funciona asi: Hwclock mantiene un fichero, /etc/adjtime, que mantiene
alguna informacion historica. Este fichero se llama el fichero adjtime.
Suponga que Ud. empieza sin fichero adjtime. Ud. da una orden hwclock
--set para poner el Reloj del Hardware a la hora verdadera actual.
Hwclock crea el fichero adjtime y graba en el la hora actual como la
ultima vez que el reloj se calibro. 5 dias mas tarde, el reloj ha
ganado 10 segundos, asi que Ud. da otra orden hwclock --set para
ponerlo con 10 segundos menos. Hwclock ajusta el fichero adjtime para
mostrar la hora actual como la ultima vez que el reloj se calibro, y
graba dos segundos por dia como la velocidad de desviacion sistematica.
Pasan 24 horas, y entonces Ud. da una orden hwclock --adjust. Hwclock
consulta el fichero adjtime y ve que el reloj gana 2 segundos por dia
cuando se le deja solo, y que se le ha dejado solo exactamente un dia.
Asi que sustrae 2 segundos del Reloj del Hardware. Entonces graba la
hora actual como la ultima vez que se ajusto el reloj. Otras 24 horas
pasan y Ud. da otra orden hwclock --adjust. Hwclock hace lo mismo:
sustrae 2 segundos y actualiza el fichero adjtime con la hora actual
como la ultima vez que el reloj se ajusto.
Cada vez que Ud. calibra (pone en hora) el reloj, hwclock recalcula la
velocidad de desviacion sistematica basado en cuanto tiempo ha pasado
desde la ultima calibracion, cuanto tiempo ha pasado desde el ultimo
ajuste, que velocidad de desviacion se suponia en cualesquiera ajustes
intervinientes, y la cantidad que el reloj esta desviado actualmente de
la hora verdadera.
Se arrastra una pequena cantidad de error en cualquier momento en que
hwclock pone el reloj en hora, de forma que rehusa hacer un ajuste que
vaya a ser de menos de 1 segundo. Mas tarde, cuando Ud. pida un ajuste
de nuevo, la desviacion acumulada sera de mas de un segundo y hwclock
hara el ajuste entonces.
Es bueno hacer un hwclock --adjust justo antes del hwclock --hctosys en
la hora del arranque del sistema, y quizas periodicamente mientras que
el sistema esta ejecutandose, mediante cron.
El formato del fichero adjtime es:
Linea 1: 3 numeros: 1) velocidad de desviacion sistematica en segundos
por dia, numero en base diez en coma flotante; 2) numero resultante de
segundos desde 1969 UTC del mas reciente ajuste o calibracion, entero
en base diez; 3) cero (por compatibilidad con clock ).
Linea 2: 1 numero: El numero resultante de segundos desde 1969 UTC de
la calibracion mas reciente.
Ud. puede emplear con hwclock un fichero adjtime que fuera usado
previamente con el programa clock.
FICHEROS
/etc/adjtime
V'EASE TAMBI'EN
adjtimex(8), date(1), gettimeofday(2), settimeofday(2), crontab(1)
AUTORES
Escrito por Bryan Henderson, en Septiembre de 1996 (bryanh@giraffe-
data.com), basandose en el trabajo hecho en el programa clock de
Charles Hedrick, Rob Hooft y Harald Konig. Mire el codigo fuente para
la historia completa y los creditos.
2 Marzo 1998 HWCLOCK(8)