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].