Home | History | Annotate | Line # | Download | only in hints
      1 -------------
      2 INTRODUCTION:
      3 -------------
      4 Last revision:  06-Jul-1994
      5 
      6 Included in this distribution of XNTP V3 is a configuration file suitable
      7 for use under Apple's A/UX Version 3.x.x  There is also one for A/UX 2.0.1
      8 but it has not been fully tested. To make the executables follow the steps
      9 outlined below.
     10 
     11 *** NOTE:  You must have gcc installed to successfully compile the current
     12 distribution; the native cc supplied with A/UX will NOT correctly compile
     13 this source.  See the FAQ in comp.unix.aux for places to obtain gcc from
     14 and how to install it.
     15 
     16 ----------------------
     17 MAKING XNTPD FOR A/UX:
     18 ----------------------
     19 
     20 First, you need to create the makefiles (after you've downloaded the
     21 source, of course):
     22 
     23     % make clean
     24     % make refconf
     25 
     26 After that, you should edit Config.local to make sure that BINDIR is
     27 correct for where you wish the programs to be "installed". The default
     28 (and what I use) is /usr/local/etc. Make sure that DEFS_LOCAL and
     29 CLOCKDEFS are commented out! Presently, only the LOCAL_CLOCK/REFCLOCK
     30 clock is used and supported.
     31 
     32 
     33 After this is done (you should be told that your system is A/UX 3), make
     34 'xntpd' (the options to 'gcc' are held in compilers/aux3.gcc):
     35 
     36     % make
     37 
     38 I do not normally use the `make install' option and so have not verified its
     39 compatibility with A/UX.  Rather, I pull out each of the executables and
     40 place them in the locally appropriate locations.
     41 
     42 ---------------
     43 STARTING XNTPD:
     44 ---------------
     45 
     46 At this point you need to set things up so that 'xntpd' is started upon
     47 boot-up. You can do this in 1 of 2 ways: either add entries in /etc/inittab
     48 or, more ideally, create and use an /etc/rc.local file. Since rc.local is
     49 what I recommend, here's how you do it:
     50 
     51 By default, A/UX doesn't have rc.local, so you'll need to add the following to
     52 /etc/inittab:
     53 
     54     net6:2:wait:/etc/syslogd		# set to "wait" to run a syslog daemon
     55 +   jmj0:2:wait:/etc/rc.local 1>/dev/syscon 2>&1	# Local stuff
     56     dbg2::wait:/etc/telinit v	# turn off init's verbose mode
     57 
     58 Now, the look of a sample /etc/rc.local is as follows:
     59 
     60     #!/bin/sh
     61     :
     62     : rc.local
     63     :
     64     #	@(#)Copyright Apple Computer 1987	Version 1.17 of rc.sh on 91/11/08 15:56:21 (ATT 1.12)
     65     
     66     
     67     #	Push line discipline/set the device so it will print
     68     /etc/line_sane 1
     69     echo " "
     70     echo "Entering rc.local..."
     71     
     72     set `/bin/who -r`
     73     if [ "$7" = 2 ]
     74     then
     75         /bin/echo " now setting the time..."
     76         /usr/local/etc/ntpdate -s -b <host.domain>
     77         sleep 5
     78     #
     79     # start up 'xntpd' if we want
     80     #
     81         if [ -f /etc/ntp.conf ]
     82         then
     83     	/bin/echo " setting tick and tickadj..."
     84     	/usr/local/etc/tickadj -t 16672 -a 54
     85     	sleep 5
     86     	/bin/echo " starting xntpd..."
     87     	/usr/local/etc/xntpd <&- > /dev/null 2>&1
     88     	sleep 5
     89         fi
     90     #
     91     fi
     92     
     93     echo "Leaving rc.local..."
     94 
     95 There are a few things to notice about the above:
     96 
     97     o When run, 'ntpdate' forces your clock to the time returned by the
     98       host(s) specified by <host.domain> (you'll need to replace this
     99       be the IP address(es) of your timehosts. This is good since it gets
    100       things close to start off with. You can use more than one time
    101       server.
    102 
    103     o 'tickadj' is also called. This does two things: changes the
    104       default value of 'tick' (which the the amount of time, in ms, that
    105       is added to the clock every 1/60 seconds) and changes the value
    106       of 'tickadj' which the the amount that is added or subtracted
    107       from 'tickadj' when adjtime() is called.
    108 
    109       Now Mac clocks are pretty bad and tend to be slow. Sooo, instead of
    110       having A/UX add the default of 16666ms every 1/60th of a second, you
    111       may want it to add more (or less) so that it keeps better time. The
    112       above value works for me but your "best" value may be different and
    113       will likely require some fooling around to find the best value. As a
    114       general rule of thumb, if you see 'xntpd' make a lot of negative clock
    115       adjustments, then your clock is fast and you'll need to _decrease_
    116       the value of 'tick'. If your adjustments are positive, then you need
    117       to increase 'tick'. To make a guess on how fast/slow your clock is,
    118       use 'ntpdate' to sync your clock. Now watch 'xntpd' and see how it
    119       operates. If, for example, it resets your clock by 1 second every 30
    120       minutes, then your clock is (1/(30*60)) is about 0.056% off and you'll
    121       need to adjust 'tick' by 16666*0.00056 or about 9 (i.e. 'tick' should
    122       be ~16675 if slow or ~16657 if fast)
    123 
    124       A/UX's default value of 'tickadj' is 1666 which is too big for
    125       'xntpd'... so it also needs to be adjusted. I like using larger
    126       values then the recommended value of 9 for 'tickadj' (although not
    127       anything near as big as 1666) since this allows for quick slews
    128       when adjusting the clock. Even with semi-large values of 'tickadj'
    129       (~200), getting 5ms (1/200 s) accuracy is easy.
    130 
    131 
    132 Finally, before A/UX and 'xntpd' will work happily together, you need to
    133 patch the kernel. This is due to the fact that A/UX attempts to keep the
    134 UNIX-software clock and the Mac-hardware clock in sync. Neither the h/w or
    135 the s/w clock are too accurate. Also, 'xntpd' will be attempting to adjust
    136 the software clock as well, so having A/UX muck around with it is asking
    137 for headaches. What you therefore need to do is tell the kernel _not_ to
    138 sync the s/w clock with the h/w one. This is done using 'adb'. The
    139 following is a shell script that will do the patch for you:
    140 
    141     #! /bin/sh
    142     adb -w /unix <<!
    143     init_time_fix_timeout?4i
    144     init_time_fix_timeout?w 0x4e75
    145     init_time_fix_timeout?4i
    146     $q
    147     !
    148 
    149 This must be done _every_ time you create a new kernel (via newconfig or
    150 newunix) or else 'xntpd' will go crazy.
    151 
    152 --------
    153 HISTORY:
    154 --------
    155 
    156 John Dundas was the original porter of 'xntpd' and a lot of the additions
    157 and A/UX-ports are from him. I got involved when I wanted to run 'xntpd'
    158 on jagubox. It was also around this time that the base-patchlevel of
    159 'xntpd' changed relatively (the so-called "jones" version). Since then,
    160 I've been maintaining 'xntpd' for A/UX for the xntp development team
    161 
    162 The original kernel patch (which patched 'time_fix_timeout') was from
    163 Richard Todd. I suggest patching 'init_time_fix_timeout' which prevents
    164 'time_fix_timeout' from even being called.
    165 
    166 ----------------
    167 TECHNICAL NOTES:
    168 ----------------
    169 
    170     o As configured (see machines/aux3), 'xntpd' will log messages via syslogd
    171       using the LOC_LOCAL1 facility. I would suggest the following in
    172       /etc/syslog.conf:
    173 
    174 	local1.notice		/usr/adm/ntpd-syslog
    175 
    176     o As mentioned above, the clocks on A/UX and Macs are kinda bad. Not
    177       only that, but logging in and out of the MacOS mode as well as
    178       extensive floppy use causes A/UX to drop and lose clock interupts
    179       (these are sent every 1/60th of a second). So, if you do these
    180       activities a lot, you find out that you lose about 300ms of time
    181       (i.e., you become 300ms slow). 'xntpd' default way of handling this
    182       is to called 'settimeofday()' and step the clock to the correct
    183       time. I prefer having 'xntpd' slew the clock back into line by
    184       making gradual adjustments to the clock over a coupla minutes
    185       or so. It's for this reason that SLEWALWAYS is defined in
    186       include/ntp_machine.h for SYS_AUX3. It's also for this reason than
    187       I like larger values of 'tickadj'.
    188 
    189 Good luck!  If you have problems under A/UX feel free to contact me (e-mail
    190 is preferred).
    191 --
    192     Jim Jagielski               |  "That is no ordinary rabbit... 'tis the
    193     jim (a] jagubox.gsfc.nasa.gov   |   most foul, cruel and bad-tempered
    194     NASA/GSFC, Code 734.4       |   rodent you ever set eyes on"
    195     Greenbelt, MD 20771         |                   Tim the Enchanter
    196