Installation of ntp
There should be a dedicated user and group to take control
of the ntpd daemon after it is
started. Issue the following commands as the
root
user:
groupadd -g 87 ntp &&
useradd -c "Network Time Protocol" -d /var/lib/ntp -u 87 \
-g ntp -s /bin/false ntp
The update-leap command needs to be fixed in order
to run properly:
sed -e 's/"(\\S+)"/"?([^\\s"]+)"?/' \
-i scripts/update-leap/update-leap.in
Now fix an issue introduced with glibc-2.34:
sed -e 's/#ifndef __sun/#if !defined(__sun) \&\& !defined(__GLIBC__)/' \
-i libntp/work_thread.c
Install ntp by running
the following commands:
./configure --prefix=/usr \
--bindir=/usr/sbin \
--sysconfdir=/etc \
--enable-linuxcaps \
--with-lineeditlibs=readline \
--docdir=/usr/share/doc/ntp-4.2.8p15 &&
make
The test suite of this package is broken with GCC 10 or later.
Now, as the root
user:
make install &&
install -v -o ntp -g ntp -d /var/lib/ntp
Command Explanations
CFLAGS="-O2 -g -fPIC"
: This environment variable
is necessary to generate Position Independent Code needed for
use in the package libraries.
--bindir=/usr/sbin
: This parameter places
the administrative programs in /usr/sbin
.
--enable-linuxcaps
: ntpd is run as user
ntp, so use Linux capabilities for non-root clock control.
--with-lineeditlibs=readline
: This switch
enables Readline support for
ntpdc and ntpq programs. If omitted,
libedit will be used if installed, otherwise no
readline capabilities will be compiled.
Configuring ntp
Config Files
/etc/ntp.conf
Configuration Information
The following configuration file first defines various ntp
servers with open access from different continents. Second, it
creates a drift file where ntpd stores the
frequency offset and a pid file to store the
ntpd process ID. Third, it defines the location
for the leap-second definition file
/etc/ntp.leapseconds
, that the
update-leap script checks and updates, when
necessary. This script can be run as a cron job and the
ntp developers recommend a frequency of
about three weeks for the updates. Since the documentation included
with the package is sparse, visit the ntp website at
https://www.ntp.org/ and
https://www.ntppool.org/ for more information.
cat > /etc/ntp.conf << "EOF"
# Asia
server 0.asia.pool.ntp.org
# Australia
server 0.oceania.pool.ntp.org
# Europe
server 0.europe.pool.ntp.org
# North America
server 0.north-america.pool.ntp.org
# South America
server 2.south-america.pool.ntp.org
driftfile /var/lib/ntp/ntp.drift
pidfile /run/ntpd.pid
leapfile /var/lib/ntp/ntp.leapseconds
EOF
You may wish to add a “Security session”. For
explanations, see https://www.eecis.udel.edu/~mills/ntp/html/accopt.html#restrict.
cat >> /etc/ntp.conf << "EOF"
# Security session
restrict default limited kod nomodify notrap nopeer noquery
restrict -6 default limited kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
Synchronizing the Time
There are two options. Option one is to run ntpd
continuously and allow it to synchronize the time in a gradual manner.
The other option is to run ntpd periodically (using
cron) and update the time each time ntpd is
scheduled.
If you choose Option one, then install the
/etc/rc.d/init.d/ntp
init script
included in the
blfs-bootscripts-20230101
package.
make install-ntpd
If you prefer to run ntpd periodically, add the
following command to root
's
crontab
:
ntpd -q
Execute the following command if you would like to set the hardware
clock to the current system time at shutdown and reboot:
ln -v -sf ../init.d/setclock /etc/rc.d/rc0.d/K46setclock &&
ln -v -sf ../init.d/setclock /etc/rc.d/rc6.d/K46setclock
The other way around is already set up by LFS.