Date: Sat, 3 Feb 2001 14:04:59 +0100 From: Gerhard Sittig <Gerhard.Sittig@gmx.net> To: freebsd-questions@freebsd.org Subject: how to compile ntpd(8) with additional refclocks? Message-ID: <20010203140459.L253@speedy.gsinet>
next in thread | raw e-mail | index | archive | help
I'm stuck. So I would appreciate any pointers where to learn
more on the topic or even reading success stories and how to do
it / repeat it. TIA!
Although my problem is with compiling usr.sbin/ntp/ntpd source I
do speak about the other steps, too. This could result in a
record for later reference just in case there's something simple
I've missed (which is really easy:).
Trying to use a "Conrad parallel port radio clock" (refclock type
#35 as I have read in /usr/share/doc/ntp/{refclock,driver35}.htm)
I added the following options to my kernel config file:
--- sys/i386/conf/STEIN 2001/01/26 16:09:36 1.2
+++ sys/i386/conf/STEIN 2001/02/02 17:50:04
@@ -61,0 +62,12 @@
+#
---------------------------------------------------------------
+options PPC_PROBE_CHIPSET
+options PCFCLOCK_VERBOSE
+# options PCFCLOCK_MAX_RETRIES=5
+device ppc0 at isa? irq 7
+device ppbus
+device lpt
+device ppi
+device pps
+device lpbb
+device pcfclock
+#
---------------------------------------------------------------
After building and installing the kernel dmesg(8) output proves
the hardware gets detected and is working. I don't care much
that I added too many options or at least more than I had to. :>
...
ppc0: parallel port found at 0x378
ppc0: using extended I/O port range
PC873xx probe at 0x2e got unknown ID 0xeb
ppc0: ECP SPP SPP
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: Generic chipset (ECP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes threshold
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
pcfclock0: <PCF-1.0> on ppbus0
ppi0: <Parallel I/O> on ppbus0
pps0: <Pulse per second Timing Interface> on ppbus0
...
Doing another
cd /dev && sh MAKEDEV pcfclock0
I can even 'cat /dev/pcfclock0' (no matter how funny the output
looks). And I noticed /var/log/messages to grow:
...
pcfclock0: 02.02.2001 23:45:55, battery status: ok
pcfclock0: 02.02.2001 23:45:55, battery status: ok
pcfclock0: 02.02.2001 23:45:56, battery status: ok
pcfclock0: 02.02.2001 23:45:56, battery status: ok
pcfclock0: 02.02.2001 23:45:56, battery status: ok
pcfclock0: 02.02.2001 23:45:56, battery status: ok
pcfclock0: 02.02.2001 23:45:57, battery status: ok
...
`uname -sr` tells me "FreeBSD 4.2-STABLE", last cvsup + cvs up
was done on January 24th. Although this shouldn't matter since
there's no problem in this stage yet.
Next step was to setup ntpd(8) to use this source. So I tried
something as simple as the following /etc/ntp.conf:
# ----- /etc/ntp.conf ---------------------------------
server 127.127.35.0
driftfile /etc/ntp.drift
logfile /var/log/ntp
logconfig =all
statsdir /tmp/
filegen loopstats file loopstats type day enable
filegen clockstats file clockstats type day enable
# ----- E O F -----------------------------------------
So let's start the daemon without rebooting:
# grep -C ntpd /etc/rc.*
# grep ntpd /etc/defaults/rc.conf /etc/rc.conf
# ntpd -p /var/run/ntpd.pid
This is where I find myself welcomed with a message stating
...
refclock_newpeer: clock type 35 invalid
configuration of 127.127.35.0 failed
...
Looking at the "strings `which ntpd`" output I notice there's no
"pcfclock" word in the executable. There's no "pcf" at all in
there. After some digging around I applied the following
modification:
# cvs diff usr.sbin/ntp
Index: usr.sbin/ntp/config.h
===================================================================
RCS file: /CVSREPO/fbsd/src/usr.sbin/ntp/config.h,v
retrieving revision 1.4
diff -u -r1.4 config.h
--- usr.sbin/ntp/config.h 2000/03/12 13:25:14 1.4
+++ usr.sbin/ntp/config.h 2001/02/03 13:39:34
@@ -173,7 +173,7 @@
#define CLOCK_PARSE 1
/* Conrad parallel port radio clock */
-/* #undef CLOCK_PCF */
+#define CLOCK_PCF 1
/* PCL 720 clock support */
/* #undef CLOCK_PPS720 */
This results in compilation errors. :( Not only did I do "make
clean; make depend; make obj; make all" in the usr.sbin/ntp
directory, I even went back to a "make buildworld" and after some
nine hours got the same error as in the above short "make all"
steps (line breaks are mine):
cc -O -pipe -I/usr/src/usr.sbin/ntp/ntpd/../../../contrib/ntp/include \
-I/usr/src/usr.sbin/ntp/ntpd/../ -DSYS_FREEBSD -DPARSE -DHAVE_CONFIG_H \
-I/usr/obj/usr/src/i386/usr/include -c version.c
cc -O -pipe -I/usr/src/usr.sbin/ntp/ntpd/../../../contrib/ntp/include \
-I/usr/src/usr.sbin/ntp/ntpd/../ -DSYS_FREEBSD -DPARSE -DHAVE_CONFIG_H \
-I/usr/obj/usr/src/i386/usr/include -o ntpd \
map_vme.o ntp_config.o ntp_control.o ntp_filegen.o ntp_intres.o \
ntp_io.o ntp_loopfilter.o ntp_monitor.o ntp_peer.o ntp_proto.o \
ntp_refclock.o ntp_request.o ntp_restrict.o ntp_timer.o ntp_util.o \
ntpd.o refclock_acts.o refclock_arbiter.o refclock_arc.o \
refclock_as2201.o refclock_atom.o refclock_bancomm.o \
refclock_chronolog.o refclock_chu.o refclock_conf.o \
refclock_datum.o refclock_dumbclock.o refclock_gpsvme.o \
refclock_heath.o refclock_hpgps.o refclock_irig.o refclock_jupiter.o \
refclock_leitch.o refclock_local.o refclock_msfees.o refclock_mx4200.o \
refclock_nmea.o refclock_oncore.o refclock_palisade.o refclock_parse.o \
refclock_pst.o refclock_ptbacts.o refclock_shm.o refclock_tpro.o \
refclock_trak.o refclock_true.o refclock_usno.o refclock_wwvb.o \
version.o /usr/obj/usr/src/usr.sbin/ntp/ntpd/../libparse/libparse.a \
/usr/obj/usr/src/usr.sbin/ntp/ntpd/../libntp/libntp.a -lm
refclock_conf.o(.data+0xa8): undefined reference to `refclock_pcf'
*** Error code 1
Stop in /usr/src/usr.sbin/ntp/ntpd.
*** Error code 1
Stop in /usr/src/usr.sbin/ntp.
*** Error code 1
Stop in /usr/src/usr.sbin.
*** Error code 1
Stop in /usr/src.
*** Error code 1
Stop in /usr/src.
*** Error code 1
Stop in /usr/src.
real 519m13.991s
user 366m37.000s
sys 64m27.024s
Since I understand that the contrib/ntp dir is a source container
only while usr.sbin/ntp is the actual working area, fail to see
any other reference to "PCF" in the tree, and haven't seen any
knobs in the Makefile - my only possible conclusion is that
modifying the config.h file really is the thing to do when adding
new sources. What did I miss? The "#define REFCLOCK 1" setting
already is in config.h. Do I have to run ./configure anew? If
so, where do I do it? In the contrib dir? And do I need tools
FreeBSD doesn't have by default? And why do I fail to see the
configure options FreeBSD's usr.sbin/ntp/config.h file was
generated with? I'm really puzzled ...
So where do I have to enable additional sources / refclocks for
compiling them into ntpd?
virtually yours 82D1 9B9C 01DC 4FB4 D7B4 61BE 3F49 4F77 72DE DA76
Gerhard Sittig true | mail -s "get gpg key" Gerhard.Sittig@gmx.net
--
If you don't understand or are scared by any of the above
ask your parents or an adult to help you.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010203140459.L253>
