88 lines
3.2 KiB
Plaintext
88 lines
3.2 KiB
Plaintext
A quick summary of how to compile under Solaris:
|
|
|
|
If you are running Solaris 2.0, you should upgrade to a later version of
|
|
Solaris immediately.
|
|
If you are running Solaris 2.1 or later, all should be fine (i hope)
|
|
|
|
Solaris 2.1 contains fairly traditional clock code, with tick and tickadj.
|
|
Solaris 2.2 and later contains completely re-written clock code to provide
|
|
high resolution microsecond timers. A benefit of the re-written clock code
|
|
is that adjtime does not round off its adjustments, so xntp does not have to
|
|
compensate for this rounding. On Solaris 2.2 and later we #define
|
|
ADJTIME_IS_ACCURATE, and do not look for the tickadj kernel variable.
|
|
|
|
If you are running both Solaris 2.1 and 2.2 on your net, you will need to
|
|
maintain two sets of xntp binaries. The Config.solaris2.2 file will compile
|
|
on Solaris 2.1, but the resulting binaries will not work correctly.
|
|
|
|
ADDITIONAL NOTES FOR SOLARIS 2.1
|
|
(by William L. Jones jones@chpc.utexas.edu)
|
|
|
|
Since settimeofday under Solaris 2.1 only sets the seconds part of timeval
|
|
care must be used in starting xntpd. I suggest the following start
|
|
up script:
|
|
|
|
tickadj -s -a 1000
|
|
ntpdate -v server1 server2
|
|
sleep 20
|
|
ntpdate -v server1 server2
|
|
sleep 20
|
|
tickadj -a 200
|
|
xntpd
|
|
|
|
The first tickadj turns of the time of day clock and sets the tick adjust
|
|
value to 1 ms. This will insure that an adjtime value of at most 2
|
|
seconds will complete in 20 seconds.
|
|
|
|
The first ntpdate will set the time to within two seconds
|
|
using settimeofday or it will adjust time using adjtime.
|
|
|
|
The first sleep insures the adjtime has completed for the first ntpdate.
|
|
|
|
The second ntpdate will use adjtime to set the time of day since the
|
|
clock should be within 2 seconds of the correct time.
|
|
|
|
The second tickadj set the tick adjust system value to 5 us.
|
|
|
|
The second sleeps insure that adjtime will complete before starting
|
|
the next xntpd.
|
|
|
|
I tried running with a tickadj of 5 us with out much success.
|
|
200 us seems to work well.
|
|
|
|
|
|
ADDITIONAL NOTES FOR SOLARIS 2.2 AND LATER:
|
|
You still need to turn off dosynctodr for XNTP to be able to keep accurate
|
|
time. You can either do this in the /etc/system file (consulted at boot to set
|
|
various kernel variables) by putting in the following line:
|
|
set dosynctodr=0
|
|
or you can use the tickadj program to force the variable to 0 in the running
|
|
kernel. Fiddling with a running kernel is almost never a good idea, I'd
|
|
recommend using /etc/system.
|
|
I would recommend starting xntp from the following script, placed in
|
|
/etc/rc2.d and named S99xntpd
|
|
|
|
#!/bin/sh
|
|
|
|
if [ $1 = "start" ]; then
|
|
if [ -x /usr/local/bin/xntpd ]; then
|
|
echo "Starting NTP daemon, takes about 1 minute... "
|
|
# The following line is unnecessary if you turn off
|
|
# dosynctodr in /etc/system.
|
|
/usr/local/bin/tickadj -s
|
|
/usr/local/bin/ntpdate -v server1 server2
|
|
sleep 5
|
|
/usr/local/bin/xntpd
|
|
fi
|
|
else
|
|
if [ $1 = "stop" ]; then
|
|
pid=`/usr/bin/ps -e | /usr/bin/grep xntpd | /usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
|
|
if [ "${pid}" != "" ]; then
|
|
echo "Stopping Network Time Protocol daemon "
|
|
/usr/bin/kill ${pid}
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
Denny Gentry denny@eng.sun.com
|