https://github.com/FRRouting/frr/wiki/Building-FRR-on-Ubuntu-1404
Install required packages
Add packages:
apt-get install git autoconf automake libtool make gawk libreadline-dev texinfo dejagnu pkg-config libpam0g-dev libjson-c-dev bison flex python-pytest libc-ares-dev python3-dev
Add frr groups and user
sudo groupadd -g 92 frr sudo groupadd -r -g 85 frrvty sudo adduser --system --ingroup frr --home /var/run/frr/ --gecos "FRR suite" --shell /sbin/nologin frr sudo usermod -a -G frrvty frr
Download Source, configure and compile it
(You may prefer different options on configure statement. These are just an example.)
git clone https://github.com/frrouting/frr.git frr cd frr ./bootstrap.sh ./configure --prefix=/usr --enable-exampledir=/usr/share/doc/frr/examples/ --localstatedir=/var/run/frr --sbindir=/usr/lib/frr --sysconfdir=/etc/frr --enable-pimd --enable-watchfrr --enable-ospfclient=yes --enable-ospfapi=yes --enable-multipath=64 --enable-user=frr --enable-group=frr --enable-vty-group=frrvty --enable-configfile-mask=0640 --enable-logfile-mask=0640 --enable-rtadv --enable-fpm --enable-ldpd --with-pkg-git-version --with-pkg-extra-version=-MyOwnFRRVersion make make check sudo make install
derek@kbox:~/share/frr$ autoreconf -i
.ibtoolize: error: AC_CONFIG_MACRO_DIRS([m4]) conflicts with ACLOCAL_AMFLAGS=-I m4
autoreconf: libtoolize failed with exit status: 1
在项目的根目录下添加如下.gitattributes文件便可
*.sh -crlf *.ac -crlf *.am -crlf
Create empty FRR configuration files
sudo install -m 755 -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 frr /dev/null /etc/frr/zebra.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/bgpd.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ospfd.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ospf6d.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/isisd.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ripd.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ripngd.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/pimd.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/ldpd.conf sudo install -m 640 -o frr -g frr /dev/null /etc/frr/nhrpd.conf sudo install -m 640 -o frr -g frrvty /dev/null /etc/frr/vtysh.conf
nable IP & IPv6 forwarding
Edit /etc/sysctl.conf
and uncomment the following values (ignore the other settings)
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 # Uncomment the next line to enable packet forwarding for IPv6 # Enabling this option disables Stateless Address Autoconfiguration # based on Router Advertisements for this host net.ipv6.conf.all.forwarding=1
Reboot or use sysctl -p
to apply the same config to the running system ### Install the init.d service
sudo install -m 755 tools/frr /etc/init.d/frr sudo install -m 644 tools/etc/frr/daemons /etc/frr/daemons sudo install -m 644 tools/etc/frr/daemons.conf /etc/frr/daemons.conf sudo install -m 644 -o frr -g frr tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf
Enable daemons
Edit
/etc/frr/daemons
and change the value from "no" to "yes" for those daemons you want to start by systemd.For example.
zebra=yes bgpd=yes ospfd=yes ospf6d=yes ripd=yes ripngd=yes isisd=yes
Start the init.d service
- sudo /etc/init.d/frr start
- use
/etc/init.d/frr status
to check its status.
vtysh
- sudo vtysh
derek@kbox:~$ sudo vtysh [sudo] password for derek: Hello, this is FRRouting (version 3.1-dev-MyOwnFRRVersion-gff9eb72). Copyright 1996-2005 Kunihiro Ishiguro, et al. This is a git build of frr-3.1-dev-699-g4ff9eb72 Associated branch(es): local:master github/frrouting/frr.git/master kbox# show version FRRouting 3.1-dev-MyOwnFRRVersion-gff9eb72 (kbox). Copyright 1996-2005 Kunihiro Ishiguro, et al. This is a git build of frr-3.1-dev-699-g4ff9eb72 Associated branch(es): local:master github/frrouting/frr.git/master configured with: '--prefix=/usr' '--enable-exampledir=/usr/share/doc/frr/examples/' '--localstatedir=/var/run/frr' '--sbindir=/usr/lib/frr'...