frr/doc/developer/building-frr-for-fedora24.rst

148 lines
3.9 KiB
ReStructuredText
Raw Normal View History

Fedora 24
=========
This document describes installation from source. If you want to build an RPM,
see :ref:`packaging-redhat`.
Installing Dependencies
-----------------------
.. code-block:: console
sudo dnf install git autoconf automake libtool make gawk \
readline-devel texinfo net-snmp-devel groff pkgconfig json-c-devel \
pam-devel pytest bison flex c-ares-devel python3-devel python2-sphinx \
perl-core patch
.. include:: building-libyang.rst
Building & Installing FRR
-------------------------
Compile
^^^^^^^
Clone the FRR git repo and use the included ``configure`` script to configure
FRR's build time options to your liking. The full option listing can be
obtained by running ``./configure -h``. The options shown below are examples.
.. code-block:: console
git clone https://github.com/frrouting/frr.git frr
cd frr
./bootstrap.sh
./configure \
--bindir=/usr/bin \
--sbindir=/usr/lib/frr \
--sysconfdir=/etc/frr \
--libdir=/usr/lib/frr \
--libexecdir=/usr/lib/frr \
--localstatedir=/var/run/frr \
--with-moduledir=/usr/lib/frr/modules \
--with-libyang-pluginsdir=/usr/lib/frr/libyang_plugins \
--enable-snmp=agentx \
--enable-multipath=64 \
--enable-user=frr \
--enable-group=frr \
--enable-vty-group=frrvty \
--disable-exampledir \
--enable-fpm \
--with-pkg-git-version \
--with-pkg-extra-version=-MyOwnFRRVersion
make
sudo make install
Add FRR user and groups
^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
sudo groupadd -g 92 frr
sudo groupadd -r -g 85 frrvty
sudo useradd -u 92 -g 92 -M -r -G frrvty -s /sbin/nologin \
-c "FRR FRRouting suite" -d /var/run/frr frr
Install FRR configuration files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
sudo install -m 775 -o frr -g frr -d /var/log/frr
sudo install -m 775 -o frr -g frrvty -d /etc/frr
sudo install -m 640 -o frr -g frrvty tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/frr.conf /etc/frr/frr.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/daemons.conf /etc/frr/daemons.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/daemons /etc/frr/daemons
Enable daemons
^^^^^^^^^^^^^^
Open :file:`/etc/frr/daemons` with your text editor of choice. Look for the
section with ``watchfrr_enable=...`` and ``zebra=...`` etc. Enable the daemons
as required by changing the value to ``yes``.
Tweak sysctls
^^^^^^^^^^^^^
Some sysctls need to be changed in order to enable IPv4/IPv6 forwarding and
MPLS (if supported by your platform). If your platform does not support MPLS,
skip the MPLS related configuration in this section.
Create a new file ``/etc/sysctl.d/90-routing-sysctl.conf`` with the following
content:
.. code-block:: console
#
# Enable packet forwarding
#
net.ipv4.conf.all.forwarding=1
net.ipv6.conf.all.forwarding=1
#
# Enable MPLS Label processing on all interfaces
#
#net.mpls.conf.eth0.input=1
#net.mpls.conf.eth1.input=1
#net.mpls.conf.eth2.input=1
#net.mpls.platform_labels=100000
.. note::
MPLS must be invidividually enabled on each interface that requires it. See
the example in the config block above.
Load the modifed sysctls on the system:
.. code-block:: console
sudo sysctl -p /etc/sysctl.d/90-routing-sysctl.conf
Create a new file ``/etc/modules-load.d/mpls.conf`` with the following content:
.. code-block:: console
# Load MPLS Kernel Modules
mpls-router
mpls-iptunnel
And load the kernel modules on the running system:
.. code-block:: console
sudo modprobe mpls-router mpls-iptunnel
Install service files
^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
sudo install -p -m 644 redhat/frr.service /usr/lib/systemd/system/frr.service
sudo install -p -m 755 redhat/frr.init /usr/lib/frr/frr
sudo systemctl enable frr
Start FRR
^^^^^^^^^
.. code-block:: frr
sudo systemctl start frr