En Hora mini-COMO
Ron Bean,
[email protected]
Traducido por Rodolfo Pilas,
[email protected]
C�mo configurar y mantener el reloj de su computadora en hora.
______________________________________________________________________
�ndice General:
1. Introducci�n
2. Uso del programa clock
2.1. Revisi�n de su sistema
2.2. C�lculo de las variaciones de su reloj
2.3. Ejemplo
2.3.1. Estableciendo la hora
2.3.2. Restablecimiento de la hora y c�lculo de la desviaci�n.
2.3.3. C�lculo del factor de correcci�n
3. Algunas consideraciones sobre xntpd
4. Anexo: El INSFLUG
______________________________________________________________________
1. Introducci�n
Los chips de reloj-de-tiempo-real (real-time-clock) que son usados en
las placas madres de los PC (y tambi�n en las costosas estaciones de
trabajo) son notoriamente inexactos. Linux dispone de una forma simple
de corregir esto por software, haciendo que el reloj sea
potencialmente muy exacto sin necesidad de una fuente externa de
confirmaci�n del tiempo. Pero muchas personas no reparan en esto, por
varias razones:
1. No es mencionado en la mayor�a de la documentaci�n sobre "C�mo
configurar Linux", y es bastante dif�cil de configurar
autom�ticamente en el momento de la instalaci�n (sin embargo, ser�a
posible en teor�a, si se dispusiera de un m�dem).
2. Si revisa "man clock" ver� clock(3), que no es lo que se quiere.
(pruebe "man 8 clock").
3. La mayor�a de las personas no prestan mucha atenci�n a la hora.
4. Aquellos pocos que s� lo hacen, buscan usar el paquete xntpd de
http://louie.udel.edu para sincronizar con una fuente externa el
reloj, como un servidor de hora de red o un radio-reloj.
Este mini-COMO describe un acercamiento sencillo al tema. Si Usted
est� completamente interesado en esto, le recomiendo encarecidamente
que invierta un tiempo en
http://www.eecis.udel.edu/~ntp/ donde
encontrar� todo lo relativo a este interesante asunto, incluyendo
informaci�n completa sobre xntpd y enlaces para NIST y USNO (hay m�s
comentarios sobre xntpd al finalizar).
Nota:
Si usa m�s de un sistema operativo en su m�quina, debe dejar
que solamente uno de ellos corrija el reloj del CMOS, para
evitar que uno se confunda con otro. Si regularmente corre
Linux y Windows en la misma m�quina, puede echar una mirada
a alg�n programa de reloj shareware que este disponible para
Windows (siga los enlaces del url indicado arriba).
2. Uso del programa clock
Todo lo que necesita saber est� en la p�gina man de clock(8), y este
mini-COMO lo guiar� a trav�s del proceso.
Nota:
Debe ser root para ejecutar "clock", o cualquier otro pro�
grama que afecte la hora del sistema o el reloj del CMOS.
2.1. Revisi�n de su sistema
Revise sus archivos de inicio del sistema buscando una l�nea de
comando semejante a "clock -a" o "clock -ua". Dependiendo de la
distribuci�n que est� utilizando, puede estar en /etc/rc.local o en
/etc/rc.d/rc.sysinit, /etc/rc.d/init.d o alg�n otro lugar similar.
Si aparece como "clock -s" o "clock -us", cambie la "s" por una "a", y
compruebe si tiene el archivo /etc/adjtime, que contiene una sola
l�nea semejante a esta:
0.000000 842214901 0.000000
Estos n�meros son el factor de correcci�n (en segundos por d�a), el
momento que reloj fue corregido por �ltima vez (en segundos desde
Enero 1, 1970), y el momento (segundo) en que fue corregido por �ltima
vez. Si no dispone de este archivo, entre en el sistema como root y
cr�elo, con una �nica l�nea que como esta (todo en cero):
0.0 0 0.0
Ejecute "clock -a" o "clock -ua" manualmente desde la l�nea de
comando para actualizar el segundo n�mero (use la "u" si su reloj esta
marcando la hora Universal en lugar el tiempo local).
2.2. C�lculo de las variaciones de su reloj
Primero, necesita saber qu� hora es :-). Su hora del d�a puede estar
o no ajustada. Mi m�todo favorito es llamar al servicio WWV al (303)
499-7111 (es una llamada por voz). Si dispone de acceso a un servidor
de horario en la red, puede utilizar el programa ntpdate del paquete
xntpd (utilice el par�metro -b para permitir que el kernel actualice
el reloj del CMOS). De lo contrario use date -s hh:mm:ss para poner
en hora el reloj del kernel a mano, y entonces clock -w para el reloj
del CMOS, tomando la hora del reloj del kernel. Deber� recordar
cu�ndo puso en hora el reloj por �ltima vez, lo mejor es escribir la
fecha en alg�n lugar donde no la pierda. Si utiliz� ntpdate, con date
+%s" puede registrar el n�mero de segundos desde Enero 1, 1970.
Entonces, vuelva algunos d�as o semanas despu�s para ver cu�nto se ha
desviado su reloj. Si puso la hora a mano, le recomiendo espere al
menos dos semanas para poder calcular la desviaci�n lo m�s aproximada
a .1 seg/d�a. Despu�s de algunos meses le ser� posible determinarla
con exactitud cercana a .01 seg/d�a (algunas personas prefieren m�s
exactitud a�n, pero yo ya soy conservador a estas alturas). Si ha
utilizado ntpdate no es necesario que espere tanto tiempo, pero
siempre podr� hacer un mejor ajuste cuanto m�s tiempo pase.
Puede ejecutar con cron el comando "clock -a" a intervalos regulares
para mantener la hora del sistema ajustada con el horario (corregido)
de la CMOS. Este comando puede ejecutarse tambi�n desde alg�n archivo
de inicio en el momento del arranque, si Vd hace esto (como lo hacemos
casi todos nosotros) ser� suficiente para sus prop�sitos.
Tenga en cuenta que algunos programas pueden quejarse si el sistema
salta m�s de un segundo a la vez, o si va para atr�s. Si tiene este
problema, puede utilizar xntpd o ntpdate para corregir el tiempo m�s
gradualmente.
2.3. Ejemplo
2.3.1. Estableciendo la hora
Entre como root. Llame al (303) 499-711 (voz), escuche el anuncio de
la hora y escriba:
date -s hh:mm:ss
pero no presione ENTER hasta no escuchar el beep (puede utilizar
ntpdate aqu� en lugar de date, y evitar la llamada por tel�fono. Esto
establece la hora del n�cleo (kernel time). Luego escriba:
clock -w
Esto pone en hora la CMOS a partir de la hora del n�cleo. Y ahora
escriba:
date +%j
(o date +%s si ha usado ntpdate en lugar de date arriba) y escriba el
resultado, para la pr�xima vez.
2.3.2. Restablecimiento de la hora y c�lculo de la desviaci�n.
Busque la fecha en que ajust� la hora la vez anterior. Entre como root
y escriba:
clock -a
Esto hace que el n�cleo tome la hora de la CMOS. Llame al (303)
499-7111 (voz) y escuche el anuncio. Entonces escriba:
date
Presionando ENTER en el momento que escuche el beep, pero mientras
est� esperando, apunte la hora que escucha y no cuelgue a�n. Lo que
escucha es la hora que deber�a tener su m�quina cuando se encuentra
exacta en el minuto. Escriba:
date hh:mm:00
usando el minuto siguiente al cual acaba de escuchar y presionando
ENTER en el momento en que escuche el beep nuevamente (ahora puede
colgar). Para hh utilice su hora local. Esto coloca la hora del
n�cleo (kernel time). Teclee:
clock -w
el cual establecer� la nueva hora (correcta) en el reloj del CMOS.
Escriba:
date +%j
(o date +%s si es lo que ha utilizado anteriormente)
Ahora dispone de tres n�meros (dos fechas y un intervalo de tiempo)
que le permitir�n calcular el desv�o horario.
2.3.3. C�lculo del factor de correcci�n
�Cu�ndo ejecut� date en el minuto, su m�quina iba atrasada o
adelantada? Si iba adelantada, deber� descontar algunos segundos,
aunque le resulte un n�mero negativo. Si estaba retrasada, deber�
agregar algunos segundos, aunque resulte un n�mero positivo.
Ahora reste ambas fechas. Si us� "date +%j" , el n�mero representando
el d�a del a�o (1-365 o 1-366 en a�o bisiesto). Si Usted ha pasado el
1 de Enero entre la primera y segunda fecha entonces deber� agregar
365 (o 366) al segundo n�mero. Si us� date +%s su n�mero est� en
segundos y deber� dividirlo por 86400 para obtener d�as.
Si ya tiene un factor de correcci�n en /etc/adjtime, deber� tomar en
consideraci�n el n�mero de segundos que ha corregido. Si ha corregido
adelantando, este n�mero tendr� el signo opuesto al del que ha medido;
si ha corregido atrasando tendr� el mismo signo. Multiplique el
antiguo factor de correcci�n por el n�mero de d�as, y a�ada el n�mero
de segundos resultante (adici�n con signos - si ambos n�meros tienen
el mismo signo: obtendr� un n�mero mayor; si tienen signos opuestos,
obtendr� un n�mero menor).
Divida el n�mero total de segundos por el n�mero de d�as para tener el
nuevo factor de correcci�n, y col�quelo en /etc/adjtime en lugar del
anterior. Registre la nueva fecha (en segundos o d�as) para la
pr�xima vez.
He aqu� mi /etc/adjtime:
-9.600000 845082716 -0.250655
(�N�tese que 9.6 segundos por d�a es aproximadamente cinco minutos al
mes!)
3. Algunas consideraciones sobre xntpd
Su sistema actualmente dispone de dos relojes - el alimentado por la
bater�a reloj de tiempo real (real time clock) que mantiene la hora
cuando el sistema est� apagado (tambi�n conocido como el reloj de la
CMOS (CMOS clock, Hardware clock o RTC) y la hora del n�cleo (kernel
time o tambi�n conocido como software clock o system clock) que est�
basado en interrupciones de tiempo y que es inicializado con el reloj
del CMOS en el momento del arranque. Ambos relojes pueden diferir en
el tiempo que marcan, de hecho gradualmente difieren uno de otro a
medida que pasa el tiempo, y tambi�n difieren de la "hora real".
Todas las referencias al "reloj" (the clock) en la documentaci�n de
xntpd se refieren a la hora del n�cleo. Cuando ejecute xntpd o timed
(o cualquier otro programa que ajusta la llamada del sistema de
adjtimex), el n�cleo de linux asume que la hora del n�cleo es m�s
precisa que el reloj del CMOS, y ajusta el reloj del CMOS cada 11
minutos (hasta que apague el sistema).
Esto significa que clock no sabr� m�s cu�ndo el reloj del CMOS fue
ajustado por �ltima vez, y no podr� utilizar el factor de correcci�n
en /etc/adjtime. Puede usar ntpdate en su archivo de inicializaci�n
para poner en hora el reloj desde un servidor de tiempo en red, antes
de iniciar xntpd. Si no dispone de una fuente de hora fiable de forma
continua cuando arranque la m�quina, puede ser algo complicado, ya que
xntpd realmente no ha sido dise�ado para ser usado en situaciones como
esta.
xntpd incluye controladores para muchos radio relojes, y puede ser
tambi�n puesto en hora llamando peri�dicamente al servicio telef�nico
NIST (aseg�rese de calcular el efecto en su cuenta telef�nica cuando
configure el intervalo entre llamadas). Esto tambi�n sirve para
obtener el factor de correcci�n al reloj del n�cleo si se pierde el
contacto con las otras fuentes de ajuste por un per�odo largo de
tiempo.
La mayor�a de los radio-reloj cuestan $3-4K, pero puede hacer planes
para tener una "caja negra" (actualmente un m�dem de 300 baudios) que
est� ubicada entre su computador y una radio de onda corta sintonizada
en la estaci�n de tiempo CHU de Canad� (vea
ftp://ftp.udel.edu/pub.ntp.gadget.tar.Z).
El receptor Heatkit WWV (el "reloj m�s exacto") est� a�n disponible
(aunque no como kit), y cuesta alrededor de $4-500. La se�al de los
GPS tambi�n contiene informaci�n de la hora, y algunos receptores de
GPS pueden ser conectados a un puerto serie. Esto podr�a constituir
una soluci�n de bajo costo en un futuro cercano.
En teor�a, cualquiera puede escribir un programa para usar los
servicios telef�nicos de NIST, a fin de calcular la variaci�n de
tiempo entre el reloj del CMOS y el del n�cleo autom�ticamente. No
tengo noticia de ning�n programa que haga esto por si s�lo, pero la
mayor�a del c�digo podr�a obtenerse de xntpd.
4. Anexo: El INSFLUG
El INSFLUG forma parte del grupo internacional Linux Documentation
Project, encarg�ndose de las traducciones al castellano de los Howtos
(Comos), as� como la producci�n de documentos originales en aquellos
casos en los que no existe an�logo en ingl�s.
En el INSFLUG se orienta preferentemente a la traducci�n de documentos
breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
:) ), etc.
Dir�jase a la sede del INSFLUG para m�s informaci�n al respecto.
En la sede del INSFLUG encontrar� siempre las �ltimas versiones de las
traducciones: www.insflug.org. Aseg�rese de comprobar cu�l es la
�ltima versi�n disponible en el Insflug antes de bajar un documento de
un servidor r�plica.
Se proporciona tambi�n una lista de los servidores r�plica (mirror)
del Insflug m�s cercanos a Vd., e informaci�n relativa a otros
recursos en castellano.
Francisco Jos� Montilla,
[email protected].