freebsd_amp_hwpstate/usr.sbin/xntpd/hints/solaris

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