Skip to content

Automatic dependency installation and management for the raspberry pi 3 B+ as experimentation platform

License

Notifications You must be signed in to change notification settings

hexoxide/raspberry-dependency

Repository files navigation

https://travis-ci.com/hexoxide/raspberry-dependency

raspberry-dependency

Automatic dependency installation and management for the raspberry pi 3 B+. This project will setup the necessary tools to run experiments related to the CERN O2-balancer. O2-balancer experiments are used to determine feasible network load-balancing algorithms which will be required after the upgrade to ALICE. ALICE will be upgraded during LS2 which is due to finish February 2021.

The following tools will be installed by using this tool.

Library/Tool Version required Version specified
FairMQ 1.3.6* 1.1.5
ZeroMQ 4.2.5* 4.2.1
Zookeeper 3.4.9 3.4.9
Cmake 3.12.4* 3.11.0
Boost 1.68.0* 1.66.0
Yaml-cpp NONE 0.5.2
FairLogger 1.3.0* NONE
Compiler gcc 6.3.0 gcc 6.3.0

*Version differs from specification as defined in Mitch Puls his paper.

Index

  1. Requirements
  2. Setup
  3. Emulating raspberry-pi hardware
  4. Testing
  5. References
  6. Glossary
  7. Setup manjaro old

1. Requirements

A raspberry-pi model 3 B+ is required with the appropriate operating system image installed on the inserted MicroSD card. A MicroSD card of at least 16GB in size is highly recommended. Alternatively the raspberry-pi can be emulated using QEMU, please see 2. Emulating raspberry-pi hardware.

  • Raspberry-pi 3 B+ (alternatively see 2.)
  • 16GB MicroSD card
  • Raspbian stretch lite

1.1 Reasons for choosing Raspbian as Linux distribution

An environment as similar as possible to the one used at CERN is desired, however, it has proven to be unfeasible to use CentOS. This is due to the limitations the Raspberry pi version has in comparison to the CentOS x86_64 image. One of the main reasons is the inability to switch of gcc version, normally, a tool called scl provides the switching for specific versions of many development tools. The version of gcc supplied with CentOS is incompatible with the version of boost that is specified in many of the previous experiments. Furthermore the version of gcc is not capable of compiling c++2011 features which is required by CERN. To continue to use CentOS gcc would have been required to be build from source.

2. Setup

Before continuing install the following dependencies using aptitude by executing the commands below:

su root
apt update
apt upgrade
apt install sudo gcc g++ git wget htop make icu-devtools python python-dev ant libcppunit-dev 
apt install doxygen automake autoconf libtool zookeeper libzookeeper-mt-dev

Afterwards execute the install-dependencies.sh script to perform the entire setup operation. The entire process can take up to 4 hours to complete.

2.1 Setup unique hostnames for nodes

Execute the code below to set a unique hostname for the node(Change the HOSTNAME value). This code will also change the SSH banner.

sudo -s
HOSTNAME="raspbian-arm-1"
echo "$HOSTNAME" > /etc/hostname
echo -e "CERN loadbalancing pi \nHostname: $HOSTNAME" > /etc/motd

2.2 Setup DHCP on control node

The DHCP server is run on the usb network interface so that auxiliary network traffic can be transfered over it without interfering with experiments.

sudo -s
systemctl stop dhcpd.service
systemctl stop dnsmasq.service
ip address add 10.42.0.1/24 dev eth1
dnsmasq --conf-file=/dev/null --no-hosts --keep-in-foreground --bind-interfaces --except-interface=lo --clear-on-reload --strict-order --listen-address=10.42.0.1 --dhcp-range=10.42.0.10,10.42.0.254,60m --dhcp-lease-max=50

3. Emulating raspberry-pi hardware

qemu-system-aarch64 -M raspi3 -m 1024 -kernel kernel8.img -dtb bcm2837-rpi-3-b.dtb -serial stdio -drive file=qemu-rasp/2018-06-27-raspbian-stretch-lite.img,format=raw,if=sd -append "console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait"

4. Testing

Automated testing is done using Travis and shellcheck. Shellcheck is a linting tool for various types of shell scripts, therefor any passed shell scripts are guaranteed to be portable to other architectures and operating systems. For more details please see Travis configuration

5. References

  1. Emulate raspberry-pi with QEMU
  2. CentOS AltArch Raspberry pi 3 documentation
  3. Compiling the Linux kernel for raspberry pi 3

6. Glossary

Online glossary

7. Setup manjaro old

After setting up a fresh image of manjaro-17 a few commands need to be executed to install necessary dependencies.

sudo -s
pacman-mirrors -g
pacman -Syu
pacman -Sy archlinux-keyring manjaro-keyring
pacman-key --refresh-keys
pacman -S gcc git wget htop make icu base-devel python jdk8-openjdk ant cppunit doxygen
exit

About

Automatic dependency installation and management for the raspberry pi 3 B+ as experimentation platform

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published