updates to install doc

This commit is contained in:
Blake Harnden 2020-03-05 15:04:29 -08:00
parent eb030aaca7
commit 595e77a1ef

View file

@ -3,30 +3,30 @@
* Table of Contents
{:toc}
# Overview
## Overview
This section will describe how to install CORE from source or from a pre-built package.
# Required Hardware
## Required Hardware
Any computer capable of running Linux should be able to run CORE. Since the physical machine will be hosting numerous
virtual machines, as a general rule you should select a machine having as much RAM and CPU resources as possible.
# Operating System
## Operating System
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
technology that CORE currently uses is Linux network namespaces.
Ubuntu and Fedora/CentOS Linux are the recommended distributions for running CORE. However, these distributions are
Ubuntu and CentOS Linux are the recommended distributions for running CORE. However, these distributions are
not strictly required. CORE will likely work on other flavors of Linux as well, assuming dependencies are met.
**NOTE: CORE Services determine what run on each node. You may require other software packages depending on the
services you wish to use. For example, the HTTP service will require the apache2 package.**
# Installed Files
## Installed Files
CORE files are installed to the following directories, when the installation prefix is **/usr**.
CORE files are installed to the following directories by default, when the installation prefix is **/usr**.
Install Path | Description
-------------|------------
@ -43,27 +43,35 @@ Install Path | Description
/etc/init.d/core-daemon|SysV startup script for daemon
/usr/lib/systemd/system/core-daemon.service|Systemd startup script for daemon
# Pre-Req Installing Python
## Pre-Req Installing Python
You may already have these installed, and can ignore this step if so, but if
needed you can run the following to install python and pip.
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
```shell
sudo apt install python3.6
sudo apt install python3-pip
```
# Pre-Req Python Requirements
The newly added gRPC API which depends on python library grpcio is not commonly found within system repos.
To account for this it would be recommended to install the python dependencies using the **requirements.txt** found in
the latest [CORE Release](https://github.com/coreemu/core/releases).
### CentOS
```shell
sudo pip3 install -r requirements.txt
sudo yum install python36
sudo yum install python3-pip
```
# Pre-Req Installing OSPF MDR
### Dependencies
Install the current python dependencies.
```shell
sudo python3 -m pip install -r requirements.txt
```
## Pre-Req Installing OSPF MDR
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
@ -73,23 +81,21 @@ default when the blue router node type is used.
suite with a modified version of OSPFv3, optimized for use with mobile wireless networks. The **mdr** node type
(and the MDR service) requires this variant of Quagga.
## Ubuntu <= 16.04 and Fedora/CentOS
There is a built package which can be used.
### Ubuntu
```shell
wget https://github.com/USNavalResearchLaboratory/ospf-mdr/releases/download/v0.99.21mr2.2/quagga-mr_0.99.21mr2.2_amd64.deb
sudo dpkg -i quagga-mr_0.99.21mr2.2_amd64.deb
sudo apt install libtool gawk libreadline-dev
```
## Ubuntu >= 18.04
Requires building from source, from the latest nightly snapshot.
### CentOS
```shell
# packages needed beyond what's normally required to build core on ubuntu
sudo apt install libtool libreadline-dev autoconf gawk
sudo yum install libtool gawk readline-devel
```
### Build and Install
```shell
git clone https://github.com/USNavalResearchLaboratory/ospf-mdr
cd ospf-mdr
./bootstrap.sh
@ -112,14 +118,14 @@ error while loading shared libraries libzebra.so.0
this is usually a sign that you have to run ```sudo ldconfig```` to refresh the cache file.
# Installing from Packages
## Installing from Packages
The easiest way to install CORE is using the pre-built packages. The package managers on Ubuntu or Fedora/CentOS
The easiest way to install CORE is using the pre-built packages. The package managers on Ubuntu or CentOS
will help in automatically installing most dependencies, except for the python ones described previously.
You can obtain the CORE packages from [CORE Releases](https://github.com/coreemu/core/releases).
## Ubuntu
### Ubuntu
Ubuntu package defaults to using systemd for running as a service.
@ -127,16 +133,7 @@ Ubuntu package defaults to using systemd for running as a service.
sudo apt install ./core_$VERSION_amd64.deb
```
Run the CORE GUI as a normal user:
```shell
core-gui
```
After running the *core-gui* command, a GUI should appear with a canvas for drawing topologies.
Messages will print out on the console about connecting to the CORE daemon.
## Fedora/CentOS
### CentOS
**NOTE: tkimg is not required for the core-gui, but if you get an error message about it you can install the package
on CentOS <= 6, or build from source otherwise**
@ -153,10 +150,6 @@ SELINUX=disabled
# add the following to the kernel line in /etc/grub.conf
selinux=0
# Fedora 15 and newer, disable sandboxd
# reboot in order for this change to take effect
chkconfig sandbox off
```
Turn off firewalls:
@ -176,63 +169,46 @@ iptables -F
ip6tables -F
```
Start the CORE daemon.
## Installing from Source
Steps for building from cloned source code. Python 3.6 is the minimum required version
a newer version can be used below if available.
### Distro Requirements
System packages required to build from source.
#### Ubuntu
```shell
# systemd
sudo systemctl daemon-reload
sudo systemctl start core-daemon
# sysv
sudo service core-daemon start
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
```
Run the CORE GUI as a normal user:
#### CentOS
```shell
core-gui
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
```
After running the *core-gui* command, a GUI should appear with a canvas for drawing topologies. Messages will print out on the console about connecting to the CORE daemon.
### Clone Repository
# Building and Installing from Source
This option is listed here for developers and advanced users who are comfortable patching and building source code.
Please consider using the binary packages instead for a simplified install experience.
## Download and Extract Source Code
You can obtain the CORE source from the [CORE GitHub](https://github.com/coreemu/core) page.
## Install grpcio-tools
Python module grpcio-tools is currently needed to generate code from the CORE protobuf file during the build.
Clone the CORE repository for building from source.
```shell
sudo pip3 install grpcio-tools
git clone https://github.com/coreemu/core.git
```
## Distro Requirements
### Install grpcio-tools
### Ubuntu 18.04 Requirements
Python module grpcio-tools is currently needed to generate gRPC protobuf code.
```shell
sudo apt install automake pkg-config gcc iproute2 libev-dev ebtables python3.6 python3.6-dev python3-pip tk libtk-img ethtool python3-tk
sudo python3 -m pip install grpcio-tools
```
### Ubuntu 16.04 Requirements
```shell
sudo apt-get install automake ebtables python3-dev libev-dev python3-setuptools libtk-img ethtool
```
### CentOS 7 with Gnome Desktop Requirements
```shell
sudo yum -y install automake gcc python36 python36-devel libev-devel tk ethtool iptables-ebtables iproute python3-pip python3-tkinter
```
## Build and Install
### Build and Install
```shell
./bootstrap.sh
@ -241,7 +217,7 @@ make
sudo make install
```
# Building Documentation
## Building Documentation
Building documentation requires python-sphinx not noted above.
@ -254,7 +230,7 @@ sudo yum install python3-sphinx
make doc
```
# Building Packages
## Building Packages
Build package commands, DESTDIR is used to make install into and then for packaging by fpm.
**NOTE: clean the DESTDIR if re-using the same directory**
@ -270,3 +246,26 @@ make fpm DESTDIR=/tmp/core-build
```
This will produce and RPM and Deb package for the currently configured python version.
## 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
```