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.
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
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.
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.
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
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
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"
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
- Emulate raspberry-pi with QEMU
- CentOS AltArch Raspberry pi 3 documentation
- Compiling the Linux kernel for raspberry pi 3
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