Skip to content
Snippets Groups Projects
Vladimír Čunát's avatar
Vladimír Čunát authored
No functional changes inside.  This implements one of the TODOs.

It seems suitable to execute the two phases at different points
in time.  In particular, I didn't like the fact that in knotd
_prepare_alloc() was "missing" between poll() and _alloc_packet().
70ddb6cf
History
Requirements
============

./doc/requirements.rst

Installation
============

./doc/installation.rst

1) Install prerequisites

Debian based distributions
--------------------------
Update the system:
$ sudo apt-get update
$ sudo apt-get upgrade

Install prerequisites:
$ sudo apt-get install \
  libtool autoconf make pkg-config liburcu-dev libgnutls28-dev libedit-dev

Install optional packages to override embedded libraries:
$ sudo apt-get install liblmdb-dev

Install optional packages:
$ sudo apt-get install \
  libcap-ng-dev libsystemd-dev libidn2-0-dev protobuf-c-compiler libfstrm-dev libmaxminddb-dev

Fedora like distributions
-------------------------
Update the system:
# dnf upgrade

Install basic development tools:
# dnf install @buildsys-build

Install prerequisites:
# dnf install \
  libtool autoconf pkgconfig automake userspace-rcu-devel gnutls-devel libedit-devel

Install optional packages to override embedded libraries:
# dnf install lmdb-devel

Install optional packages:
# dnf install \
  libcap-ng-devel systemd-devel libidn2-devel protobuf-c-devel fstrm-devel libmaxminddb-devel

When compiling on RHEL based system, the Fedora EPEL repository has to be
enabled. Also for RHEL 6, forward compatibility package gnutls30-devel
with newer GnuTLS is required instead of gnutls-devel.

2) Install Knot DNS

Get the source code:
$ git clone https://gitlab.labs.nic.cz/knot/knot-dns.git
Or extract source package to knot-dns directory

Compile Knot
$ cd knot-dns
$ autoreconf -if
$ ./configure
$ make

Install Knot DNS into system:
$ sudo make install
$ sudo ldconfig

Running
=======

./doc/operation.rst

1) Each server needs configuration file. Please see samples/knot.sample.conf,
project documentation, or man 5 knot.conf for more details.
Configuration file has to specify:
- storage for PID files, journal and timer databases etc.
- network interfaces
- served zones

E.g. use the default config file:
$ cd /etc/knot
$ mv knot.sample.conf knot.conf
Modify the config:
$ editor knot.conf

2) Prepare working directory
$ mv example.com.zone /var/lib/knot/

3) Start the server. This can be done by running the 'knotd' command.
Alternatively, your distribution should have an init script available, if you've
installed Knot using a binary package.

Start Knot in the foreground to see if it runs:
$ knotd -c myserver.conf