PageRenderTime 28ms CodeModel.GetById 25ms app.highlight 1ms RepoModel.GetById 0ms app.codeStats 1ms

#! | 195 lines | 158 code | 37 blank | 0 comment | 0 complexity | 7e17d1f952385a4751ff9f78497e0779 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause, LGPL-2.0, LGPL-2.1, BSD-2-Clause, 0BSD, JSON, AGPL-1.0, GPL-2.0
  4Last revision:  06-Jul-1994
  6Included in this distribution of XNTP V3 is a configuration file suitable
  7for use under Apple's A/UX Version 3.x.x  There is also one for A/UX 2.0.1
  8but it has not been fully tested. To make the executables follow the steps
  9outlined below.
 11*** NOTE:  You must have gcc installed to successfully compile the current
 12distribution; the native cc supplied with A/UX will NOT correctly compile
 13this source.  See the FAQ in comp.unix.aux for places to obtain gcc from
 14and how to install it.
 20First, you need to create the makefiles (after you've downloaded the
 21source, of course):
 23    % make clean
 24    % make refconf
 26After that, you should edit Config.local to make sure that BINDIR is
 27correct 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
 29CLOCKDEFS are commented out! Presently, only the LOCAL_CLOCK/REFCLOCK
 30clock is used and supported.
 33After 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):
 36    % make
 38I do not normally use the `make install' option and so have not verified its
 39compatibility with A/UX.  Rather, I pull out each of the executables and
 40place them in the locally appropriate locations.
 46At this point you need to set things up so that 'xntpd' is started upon
 47boot-up. You can do this in 1 of 2 ways: either add entries in /etc/inittab
 48or, more ideally, create and use an /etc/rc.local file. Since rc.local is
 49what I recommend, here's how you do it:
 51By default, A/UX doesn't have rc.local, so you'll need to add the following to
 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
 58Now, the look of a sample /etc/rc.local is as follows:
 60    #!/bin/sh
 61    :
 62    : rc.local
 63    :
 64    #	@(#)Copyright Apple Computer 1987	Version 1.17 of on 91/11/08 15:56:21 (ATT 1.12)
 67    #	Push line discipline/set the device so it will print
 68    /etc/line_sane 1
 69    echo " "
 70    echo "Entering rc.local..."
 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
 93    echo "Leaving rc.local..."
 95There are a few things to notice about the above:
 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.
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.
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)
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.
132Finally, before A/UX and 'xntpd' will work happily together, you need to
133patch the kernel. This is due to the fact that A/UX attempts to keep the
134UNIX-software clock and the Mac-hardware clock in sync. Neither the h/w or
135the s/w clock are too accurate. Also, 'xntpd' will be attempting to adjust
136the software clock as well, so having A/UX muck around with it is asking
137for headaches. What you therefore need to do is tell the kernel _not_ to
138sync the s/w clock with the h/w one. This is done using 'adb'. The
139following is a shell script that will do the patch for you:
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    !
149This must be done _every_ time you create a new kernel (via newconfig or
150newunix) or else 'xntpd' will go crazy.
156John Dundas was the original porter of 'xntpd' and a lot of the additions
157and A/UX-ports are from him. I got involved when I wanted to run 'xntpd'
158on jagubox. It was also around this time that the base-patchlevel of
159'xntpd' changed relatively (the so-called "jones" version). Since then,
160I've been maintaining 'xntpd' for A/UX for the xntp development team
162The original kernel patch (which patched 'time_fix_timeout') was from
163Richard Todd. I suggest patching 'init_time_fix_timeout' which prevents
164'time_fix_timeout' from even being called.
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:
174	local1.notice		/usr/adm/ntpd-syslog
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'.
189Good luck!  If you have problems under A/UX feel free to contact me (e-mail
190is preferred).
192    Jim Jagielski               |  "That is no ordinary rabbit... 'tis the
193   |   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