2018-07-31 20:57:30 +01:00
|
|
|
# CORE Installation
|
|
|
|
|
|
|
|
* Table of Contents
|
|
|
|
{:toc}
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Overview
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-06-10 19:41:27 +01:00
|
|
|
This section will describe how to install CORE from source or from a pre-built package.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Required Hardware
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-12-20 20:55:52 +00:00
|
|
|
Any computer capable of running Linux should be able to run CORE. Since the physical machine will be hosting numerous
|
2019-06-10 19:41:27 +01:00
|
|
|
virtual machines, as a general rule you should select a machine having as much RAM and CPU resources as possible.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Operating System
|
2019-06-10 19:41:27 +01:00
|
|
|
|
2019-12-20 20:55:52 +00:00
|
|
|
CORE requires a Linux operating system because it uses virtualization provided by the kernel. It does not run on
|
|
|
|
Windows or Mac OS X operating systems (unless it is running within a virtual machine guest.) The virtualization
|
2019-06-10 19:41:27 +01:00
|
|
|
technology that CORE currently uses is Linux network namespaces.
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
Ubuntu and CentOS Linux are the recommended distributions for running CORE. However, these distributions are
|
2019-06-10 19:41:27 +01:00
|
|
|
not strictly required. CORE will likely work on other flavors of Linux as well, assuming dependencies are met.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-12-20 20:55:52 +00:00
|
|
|
**NOTE: CORE Services determine what run on each node. You may require other software packages depending on the
|
2019-06-10 19:41:27 +01:00
|
|
|
services you wish to use. For example, the HTTP service will require the apache2 package.**
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Installed Files
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
CORE files are installed to the following directories by default, when the installation prefix is **/usr**.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
Install Path | Description
|
|
|
|
-------------|------------
|
2018-08-02 18:12:05 +01:00
|
|
|
/usr/bin/core-gui|GUI startup command
|
2019-12-30 06:55:26 +00:00
|
|
|
/usr/bin/coretk-gui|BETA Python GUI
|
2018-07-31 20:57:30 +01:00
|
|
|
/usr/bin/core-daemon|Daemon startup command
|
2019-06-10 19:41:27 +01:00
|
|
|
/usr/bin/{core-cleanup, coresendmsg, core-manage}|Misc. helper commands/scripts
|
2018-07-31 20:57:30 +01:00
|
|
|
/usr/lib/core|GUI files
|
2019-10-18 22:52:08 +01:00
|
|
|
/usr/lib/python{3.6+}/dist-packages/core|Python modules for daemon/scripts
|
2019-06-10 19:41:27 +01:00
|
|
|
/etc/core/|Daemon and log configuration files
|
2018-07-31 20:57:30 +01:00
|
|
|
~/.core/|User-specific GUI preferences and scenario files
|
|
|
|
/usr/share/core/|Example scripts and scenarios
|
|
|
|
/usr/share/man/man1/|Command man pages
|
|
|
|
/etc/init.d/core-daemon|SysV startup script for daemon
|
2020-01-24 14:28:53 +00:00
|
|
|
/usr/lib/systemd/system/core-daemon.service|Systemd startup script for daemon
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Pre-Req Installing Python
|
2019-10-03 20:11:12 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
Python 3.6 is the minimum required python version. Newer versions can be used if available.
|
|
|
|
These steps are needed, since the system packages can not provide all the
|
|
|
|
dependencies needed by CORE.
|
|
|
|
|
|
|
|
### Ubuntu
|
2019-10-03 20:11:12 +01:00
|
|
|
|
|
|
|
```shell
|
2019-12-30 06:55:26 +00:00
|
|
|
sudo apt install python3.6
|
2019-10-03 20:11:12 +01:00
|
|
|
sudo apt install python3-pip
|
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### CentOS
|
|
|
|
|
|
|
|
```shell
|
|
|
|
sudo yum install python36
|
|
|
|
sudo yum install python3-pip
|
|
|
|
```
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### Dependencies
|
|
|
|
|
|
|
|
Install the current python dependencies.
|
2019-06-10 21:15:34 +01:00
|
|
|
|
|
|
|
```shell
|
2020-03-05 23:04:29 +00:00
|
|
|
sudo python3 -m pip install -r requirements.txt
|
2019-06-10 21:15:34 +01:00
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Pre-Req Installing OSPF MDR
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-12-20 20:55:52 +00:00
|
|
|
Virtual networks generally require some form of routing in order to work (e.g. to automatically populate routing
|
|
|
|
tables for routing packets from one subnet to another.) CORE builds OSPF routing protocol configurations by
|
|
|
|
default when the blue router node type is used.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-12-20 20:55:52 +00:00
|
|
|
* [OSPF MANET Designated Routers](https://github.com/USNavalResearchLaboratory/ospf-mdr) (MDR) - the Quagga routing
|
|
|
|
suite with a modified version of OSPFv3, optimized for use with mobile wireless networks. The **mdr** node type
|
2019-06-10 19:41:27 +01:00
|
|
|
(and the MDR service) requires this variant of Quagga.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### Ubuntu
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2020-03-05 23:04:29 +00:00
|
|
|
sudo apt install libtool gawk libreadline-dev
|
2018-07-31 20:57:30 +01:00
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### CentOS
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2020-03-05 23:04:29 +00:00
|
|
|
sudo yum install libtool gawk readline-devel
|
|
|
|
```
|
|
|
|
|
|
|
|
### Build and Install
|
2019-06-21 20:51:20 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
```shell
|
2019-12-17 18:58:03 +00:00
|
|
|
git clone https://github.com/USNavalResearchLaboratory/ospf-mdr
|
|
|
|
cd ospf-mdr
|
2019-06-21 20:51:20 +01:00
|
|
|
./bootstrap.sh
|
2019-06-21 20:57:32 +01:00
|
|
|
./configure --disable-doc --enable-user=root --enable-group=root --with-cflags=-ggdb \
|
2019-06-10 19:41:27 +01:00
|
|
|
--sysconfdir=/usr/local/etc/quagga --enable-vtysh \
|
|
|
|
--localstatedir=/var/run/quagga
|
|
|
|
make
|
|
|
|
sudo make install
|
2018-07-31 20:57:30 +01:00
|
|
|
```
|
|
|
|
|
2019-12-20 20:55:52 +00:00
|
|
|
Note that the configuration directory */usr/local/etc/quagga* shown for Quagga above could be */etc/quagga*,
|
|
|
|
if you create a symbolic link from */etc/quagga/Quagga.conf -> /usr/local/etc/quagga/Quagga.conf* on the host.
|
2019-06-10 19:41:27 +01:00
|
|
|
The *quaggaboot.sh* script in a Linux network namespace will try and do this for you if needed.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-06-10 19:41:27 +01:00
|
|
|
If you try to run quagga after installing from source and get an error such as:
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2019-06-10 19:41:27 +01:00
|
|
|
error while loading shared libraries libzebra.so.0
|
2018-07-31 20:57:30 +01:00
|
|
|
```
|
|
|
|
|
2019-06-10 19:41:27 +01:00
|
|
|
this is usually a sign that you have to run ```sudo ldconfig```` to refresh the cache file.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Installing from Packages
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
The easiest way to install CORE is using the pre-built packages. The package managers on Ubuntu or CentOS
|
2019-12-20 20:55:52 +00:00
|
|
|
will help in automatically installing most dependencies, except for the python ones described previously.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-06-10 19:41:27 +01:00
|
|
|
You can obtain the CORE packages from [CORE Releases](https://github.com/coreemu/core/releases).
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### Ubuntu
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-06-10 19:41:27 +01:00
|
|
|
Ubuntu package defaults to using systemd for running as a service.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2019-12-30 06:55:26 +00:00
|
|
|
sudo apt install ./core_$VERSION_amd64.deb
|
2018-07-31 20:57:30 +01:00
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### CentOS
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-06-10 19:41:27 +01:00
|
|
|
**NOTE: tkimg is not required for the core-gui, but if you get an error message about it you can install the package
|
2019-12-20 20:55:52 +00:00
|
|
|
on CentOS <= 6, or build from source otherwise**
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2019-12-30 06:55:26 +00:00
|
|
|
yum install ./core_$VERSION_x86_64.rpm
|
2018-07-31 20:57:30 +01:00
|
|
|
```
|
|
|
|
|
2019-06-10 22:59:42 +01:00
|
|
|
Disabling SELINUX:
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2019-06-10 22:59:42 +01:00
|
|
|
# change the following in /etc/sysconfig/selinux
|
|
|
|
SELINUX=disabled
|
|
|
|
|
|
|
|
# add the following to the kernel line in /etc/grub.conf
|
|
|
|
selinux=0
|
|
|
|
```
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
Turn off firewalls:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
systemctl disable firewalld
|
|
|
|
systemctl disable iptables.service
|
|
|
|
systemctl disable ip6tables.service
|
|
|
|
chkconfig iptables off
|
|
|
|
chkconfig ip6tables off
|
|
|
|
```
|
|
|
|
|
2018-08-02 18:12:05 +01:00
|
|
|
You need to reboot after making these changes, or flush the firewall using
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
|
|
|
iptables -F
|
|
|
|
ip6tables -F
|
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Installing from Source
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
Steps for building from cloned source code. Python 3.6 is the minimum required version
|
|
|
|
a newer version can be used below if available.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### Distro Requirements
|
|
|
|
|
|
|
|
System packages required to build from source.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
#### Ubuntu
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2020-03-05 23:04:29 +00:00
|
|
|
sudo apt install git automake pkg-config gcc libev-dev ebtables iproute2 \
|
|
|
|
python3.6 python3.6-dev python3-pip python3-tk tk libtk-img ethtool autoconf
|
2018-07-31 20:57:30 +01:00
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
#### CentOS
|
2018-09-10 23:25:28 +01:00
|
|
|
|
|
|
|
```shell
|
2020-03-05 23:04:29 +00:00
|
|
|
sudo yum install git automake pkgconf-pkg-config gcc gcc-c++ libev-devel iptables-ebtables iproute \
|
|
|
|
python36 python36-devel python3-pip python3-tkinter tk ethtool autoconf
|
2018-09-10 23:25:28 +01:00
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### Clone Repository
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
Clone the CORE repository for building from source.
|
2018-08-03 16:24:55 +01:00
|
|
|
|
|
|
|
```shell
|
2020-03-05 23:04:29 +00:00
|
|
|
git clone https://github.com/coreemu/core.git
|
2018-08-03 16:24:55 +01:00
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### Install grpcio-tools
|
2018-10-18 18:56:41 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
Python module grpcio-tools is currently needed to generate gRPC protobuf code.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2018-10-18 18:56:41 +01:00
|
|
|
```shell
|
2020-03-05 23:04:29 +00:00
|
|
|
sudo python3 -m pip install grpcio-tools
|
2018-10-18 18:56:41 +01:00
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
### Build and Install
|
2018-10-18 21:12:30 +01:00
|
|
|
|
2018-10-18 18:56:41 +01:00
|
|
|
```shell
|
|
|
|
./bootstrap.sh
|
2019-12-23 22:48:56 +00:00
|
|
|
./configure
|
2018-10-18 18:56:41 +01:00
|
|
|
make
|
2018-07-31 20:57:30 +01:00
|
|
|
sudo make install
|
2018-10-18 18:56:41 +01:00
|
|
|
```
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Building Documentation
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-06-10 19:41:27 +01:00
|
|
|
Building documentation requires python-sphinx not noted above.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2019-06-10 20:26:44 +01:00
|
|
|
sudo apt install python3-sphinx
|
|
|
|
sudo yum install python3-sphinx
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2018-10-18 18:56:41 +01:00
|
|
|
./bootstrap.sh
|
2019-12-23 22:48:56 +00:00
|
|
|
./configure
|
2019-06-10 19:41:27 +01:00
|
|
|
make doc
|
2018-07-31 20:57:30 +01:00
|
|
|
```
|
|
|
|
|
2020-03-05 23:04:29 +00:00
|
|
|
## Building Packages
|
2019-06-10 22:59:42 +01:00
|
|
|
Build package commands, DESTDIR is used to make install into and then for packaging by fpm.
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-06-10 22:59:42 +01:00
|
|
|
**NOTE: clean the DESTDIR if re-using the same directory**
|
2018-07-31 20:57:30 +01:00
|
|
|
|
2019-06-10 19:41:27 +01:00
|
|
|
* Install [fpm](http://fpm.readthedocs.io/en/latest/installing.html)
|
2018-07-31 20:57:30 +01:00
|
|
|
|
|
|
|
```shell
|
2019-06-10 19:41:27 +01:00
|
|
|
./bootstrap.sh
|
2019-12-23 22:48:56 +00:00
|
|
|
./configure
|
2018-07-31 20:57:30 +01:00
|
|
|
make
|
2019-06-10 19:41:27 +01:00
|
|
|
mkdir /tmp/core-build
|
|
|
|
make fpm DESTDIR=/tmp/core-build
|
2018-07-31 20:57:30 +01:00
|
|
|
```
|
|
|
|
|
2019-12-20 20:55:52 +00:00
|
|
|
This will produce and RPM and Deb package for the currently configured python version.
|
2020-03-05 23:04:29 +00:00
|
|
|
|
|
|
|
## Running CORE
|
|
|
|
|
|
|
|
Start the CORE daemon.
|
|
|
|
|
|
|
|
```shell
|
|
|
|
# systemd
|
|
|
|
sudo systemctl daemon-reload
|
|
|
|
sudo systemctl start core-daemon
|
|
|
|
|
|
|
|
# sysv
|
|
|
|
sudo service core-daemon start
|
|
|
|
```
|
|
|
|
|
|
|
|
Run the GUI
|
|
|
|
|
|
|
|
```shell
|
|
|
|
# default gui
|
|
|
|
core-gui
|
|
|
|
|
|
|
|
# new beta gui
|
|
|
|
coretk-gui
|
|
|
|
```
|