Installation

You will need the following dependencies installed:

  • docker

  • docker-compose

  • git

  • make

You start with checking out the source code, f.e. the master branch, as well as the git submodules we use:

git clone https://git.astron.nl/lofar2.0/tango.git
cd tango
git submodule init
git submodule update

Next, we bootstrap the system. This will build our docker images, start key ones, and load the base configuration. This may take a while:

cd docker-compose
make bootstrap

If you do have access to LOFAR station hardware, you must upload its configuration to the configuration database. See Enter your LOFAR2.0 Hardware Configuration.

Now we are ready to start the other containers:

make start

and make sure they are all up and running:

make status

You should see the following state:

  • Containers astor, hdbpp-viewer, jive, log-viewer and pogo will have State Exit 1. These are containers that are interactive X11 tools, and not needed for now,

  • Other containers have either State Up or Exit 0.

If not, you can inspect why with docker logs <container>. Note that the containers will automatically be restarted on failure, and also if you reboot. Stop them explicitly to bring them down (make stop <container>).

Post-boot Initialisation

After bootstrapping, and after a reboot, the software and hardware of the station needs to be explicitly initialised. Note that the docker containers do restart automatically at system boot.

The following commands start all the software devices to control the station hardware, and initialise the hardware with the configured default settings. Go to http://localhost:8888, start a new Station Control notebook, and initiate the software boot sequence:

# reset our boot device
boot.off()
assert boot.state() == DevState.OFF
boot.initialise()
assert boot.state() == DevState.STANDBY
boot.on()
assert boot.state() == DevState.ON

# start and initialise the other devices
boot.initialise_station()

# wait for the devices to be initialised
import time

while boot.initialising_station_R:
  print(f"Still initialising station. {boot.initialisation_progress_R}% complete. State: {boot.initialisation_status_R}")
  time.sleep(1)

# print conclusion
if boot.initialisation_progress_R == 100:
  print("Done initialising station.")
else:
  print(f"Failed to initialise station: {boot.initialisation_status_R}")

See Boot for more information on the boot device.

ELK

The ELK stack requires some kernel settings to be tuned, before it will start. Although make bootstrap configures the kernel, these settings will not stick after a reboot. You will need to run either:

make start elk-configure-host
make restart elk

after reboot, or configure your system to set sysctl -w vm.max_map_count=262144 (or higher) as root during boot.