ELT Linux Installation Guide

This guide describes how to install the ELT Development Environment (a Linux platform). The guide includes the installation of standard (typically third-party) packages that are supported in the DevEnv. The guide does not include the installation of ELT Control System infrastructure software (e.g. the ELT COmmon Software, ECOS), links to which are provided at the end of this guide.

The ELT Linux DevEnv is based on AlmaLinux (public Linux distribution from the The AlmaLinux OS Foundation). AlmaLinux is a the RedHat Linux rebuild. Therefore AlmaLinux can be installed on most relatively-modern bare-metal computers with x86_64 architecture (Intel, AMD) like laptops, desktops or servers that support at least the x86_64v3 microarchitecture (indicatively >= year 2010). Alternatively AlmaLinux can also be installed on virtual machines (VM) under Intel-based hypervisors like commercial VMware or public ones like VirtualBox.

The installation of DevEnv is based on Ansible, an open-source configuration management tool. The RPM elt-devenv-ansible contains the Ansible playbooks and scripts to complete and verify the DevEnv installation, consisting of:

  • Installation of supporting RPMs

  • Configuration of services

  • Creation of user accounts for software development

The ESO/ELT AlmaLinux repository

The current release of the ELT Linux DevEnv is based on the original AlmaLinux image with a minimal installation of software packages or RPMs (RPM Package Manager). The real DevEnv installation consists in the download and installation of software packages relevant to the development of the ELT project. Most of these packages (RPMs) were originally retrieved from public AlmaLinux and EPEL (Extra Packages for Enterprise Linux) repositories. In addition to these RPMs, the DevEnv also installs other public-domain tools and ESO packages not available at public repositories. The process should guarantee the same result in DevEnv installations done at ESO or by external contractors.

Traceability: For testing and support purposes it is necessary to provide a mechanism that can retrieve and install any of the previous releases of the DevEnv. In reality it means to have access to all RPMs referred by previous installations of the DevEnv. For this reason, the DevEnv cannot rely on public repositories like AlmaLinux and EPEL; they do not support traceability as old RPMs might be removed with new ones.

The DevEnv installation process has to rely on it:

At our ESO/ELT repositories we combine the packages downloaded from AlmaLinux release and updates, and with those packages developed at ESO. With new releases of the DevEnv new RPMs are accumulated to our repository; old RPMs are never removed. This repository is also the official channel to provide minor and patch releases to the DevEnv (A major release, e.g. a new OS, will require a new repository).

Prerequisites

Hardware requirements

The minimum requirements for the installation of the ELT Linux DevEnv are:

  • 4x CPUs x86_64 (Intel or AMD)

  • 8GB RAM

  • 40 GB disk

  • 1x NIC

  • HW compatible with AlmaLinux

Depending on your own requirements, e.g. disk-space, number of users, heavy usage of GUI components etc. or in your current HW configuration these requirements should be exceeded.

Configuring BIOS for low latency environments (RT)

If you plan to use the host for real-time applications (RT) you may need to set your BIOS options for low latency. Please notice that factory BIOS defaults are optimized to provide a good balance between performance and power efficiency for general-purpose environments. However there are environments where you many need to optimize your hardware for maximum throughput or lowest latency to provide optimal responsiveness where real-time responses are needed. The available BIOS options may vary, depending upon server model, processor/memory architecture, and BIOS revision. You have to consult your Hardware Owner’s Manual for more details.

For Dell PowerEdge 12th Generation Severs please follow recommendations for low latency as indicated in Dell document:

Step 1: AlmaLinux Installation

AlmaLinux image and documentation

The DVD ISO used for the ELT Linux DevEnv is the and can be downloaded from our ESO HTTPS area at:

AlmaLinux installation documents. There are many web pages that describe the server minimal AlmaLinux installation step by step, snapshots included. Here just a few of them:

You can download the DVD ISO image with any browser and the URL above.

AlmaLinux installation

1. Installation Settings

OS installation details are not part of this document and some screenshot may refer to previous AlmaLinux base versions. Please use any of the many documents already available in the web (see any of the list in the OS documentation section above). The ELT DevEnv requires the following setting (in bold text where input is required):

  1. LOCALIZATION
    • DATE & TIME: Etc/UTC

    • KEYBOARD: English (US)

    • LANGUAGE SUPPORT: English (United States)

  2. SECURITY
    • SECURITY POLICY: No profile selected

  3. SOFTWARE
    • INSTALLATION SOURCE: Local media

    • SOFTWARE SELECTION: Custom Operating System

      ../_images/installation_summary_1.png
      ../_images/software_selection.png
  4. SYSTEM
    • INSTALLATION DESTINATION: Select the disk for the OS installation. Choose also the storage configuration Automatic as described below (Custom variant is described after this section):

      ../_images/installation_summary_2.png
      ../_images/installation_destination.png

      If your selected disk for the OS is already partitioned (e.g. from a previous OS installation) you might need to delete the existing partition table and reclaim the disk space for the new OS. Just follow this sequence:

      ../_images/installation_options.png
      ../_images/reclaim_disk_space_1.png
      ../_images/reclaim_disk_space_2.png

      For disk exceeding 200GiB, Custom Storage Configuration is preferable. Suggested partition and logical volume sizes:

      / -> 64GiB
      /home_local -> 64GiB
      /var -> 64GiB
      swap -> 8GiB
      /boot -> 1024MiB
      /boot/efi -> 512MiB
      

      This configuration allows for expansion of specific logical volumes in case needed, see Increase Filesystem.

  5. NETWORK & HOSTNAME: Select your NIC, activate it, and select a hostname (e.g. elthost):

    ../_images/installation_summary_3.png
    ../_images/network_selection.png

    By default, the NIC is configured with DHCP. If DHCP is what you need (e.g. your elthost is a VM on your Desktop/Laptop) then you are done. If you need to give the VM a static IP address you can go in the configuration window:

    ../_images/network_configuration.png
    ../_images/network_editing.png
  6. USER SETTINGS
    • ROOT ACCOUNT: Enable root account, set root password and Allow root SSH login with password.

      Do not create any other user account at this time. The ELT DevEnv installation will create later accounts eltdev and eltmgr automatically.

      ../_images/installation_summary_4.png
      ../_images/root_password.png

2. Commence Installation

When above selections are completed

3. Finish Installation and Reboot

Note: You might need to stop the system and dismount the DVD before rebooting. In same cases, the DVD remains mounted and next reboot will bring you back to the AlmaLinux installation.

After rebooting the system will presents the following text prompt:

AlmaLinux 10.2 (Lavender Lion)
Kernel 6.12.0-211.7.3.el10_2.x86_64 on an x86_64
elthost login:
  1. Login as root with the password selected during the OS installation:

elthost login: root
Password: <your_password>
Last login: <date & time> on tty1

IMPORTANT: DO NOT execute any “dnf update” in this Minimal Server Installation as you might get newer RPMs than those required in our DevEnv distribution. The installation of DevEnv is unable to downgrade them. If this happens you have two alternatives: remove the newer RPMs by hand (it is risky and not always possible), or start the installation from the beginning.

4. Increase Filesystem

The default partition table only allocates 15GB for the “/” partition, leaving the rest of the disk free. You can increase the “/” partition to the full disk size with the following sequence:

[root@elthost ~]# df
Filesystem 1K-blocks Used Avail Use% Mounted
/dev/mapper/os-root 15718400 1342472 14375928 9% /
[root@elthost ~]# lvextend /dev/mapper/os-root -l +100%FREE
[root@elthost ~]# xfs_growfs /dev/mapper/os-root
[root@elthost ~]# df
Filesystem 1K-blocks Used Avail Use% Mounted
/dev/mapper/os-root 25151488 1400300 23743100 6% /

In similar way other partitions previously created can be resized if there is available space in the logical volume by pointing to the correct volume. Below example shows how to check available volume group size, logical volumes current sizing and how to extend “/home” volume by 25GiB with filesystem resize:

[root@elthost ~]# vgs
  VG #PV #LV #SN Attr   VSize    VFree
  os   1   4   0 wz--n- <930.01g 730.10g
[root@elthost ~]# lvs
  LV   VG Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home os -wi-ao---- 64.00g
  root os -wi-ao---- 64.00g
  swap os -wi-ao---- <7.91g
  var  os -wi-ao---- 64.00g
[root@elthost ~]# lvextend /dev/mapper/os-home -r -L +25G

5. Access the internet

To complete the ELT Linux installation is necessary for the machine to have access to internet. If the network configuration during the OS installation was skipped or incomplete you can still configure hostname and IP address with commands:

[root@elthost ~]# hostnamectl set-hostname <hostname>
[root@elthost ~]# nmcli device # to see available NICs
[root@elthost ~]# nmcli connection modify <device> ipv4.addresses <IP>/<mask>
[root@elthost ~]# nmcli connection modify <device> ipv4.gateway <IP>
[root@elthost ~]# nmcli connection modify <device> ipv4.dns <IP>
[root@elthost ~]# nmcli connection modify <device> ipv4.dns-search "<comma-separtated list of qualified names>"
[root@elthost ~]# nmcli connection modify <device> ipv4.method manual
[root@elthost ~]# nmcli device reapply <device>

Example of the configuration of host eltint63 at ESO:

[root@elthost ~]# hostnamectl set-hostname eltint63
[root@elthost ~]# nmcli connection modify ens192 ipv4.addresses 134.171.3.174/24
[root@elthost ~]# nmcli connection modify ens192 ipv4.gateway 134.171.3.254
[root@elthost ~]# nmcli connection modify ens192 ipv4.dns 10.255.1.1
[root@elthost ~]# nmcli connection modify ens192 ipv4.dns-search "hq.eso.org, eso.org"
[root@elthost ~]# nmcli connection modify ens192 ipv4.method manual
[root@elthost ~]# nmcli device reapply ens192

If you are installing the ELT DevEnv as a VM on a local hypervisor as VirtualBox or VMware Worsktation, please notice that the network card of your VM can be created basically with two options:

  • NAT: The guest VM shares the IP of the host. With the internet access of the host but the guest is isolated from the world. The guest is typically configured with DHCP. This is the default.

  • Bridged: The guest VM has direct access to the network card of the host. With your own internet access and the guest can be accessed from the world. You can chose DHCP or a static IP.

Step 2: ELT DevEnv Installation

With the minimal installation of AlmaLinux completed and with the system connected to the internet it is now possible to install ELT DevEnv and execute installation scripts corresponding to the latest release. To install ELT DevEnv execute the following:

[root@elthost ~]# sh <(curl https://ftp.eso.org/pub/elt/repos/GetPlatform.sh)

The script may takes 40 minutes or more to complete; it depends largely on the internet speed and the connection to the ESO/ELT repository. The procedure will always generate a log-file that can be used in case of problems. The log-file contains detailed information about each step performed and is located in the /tmp directory. The log-file is named elt-ansible-YYYYMMDD.log where YYYYMMDD is the string describing the year, month and day of execution.

Reboot the system after a successful DevEnv installaltion

Very likely, DevEnv installation will install a new kernel that will only becomes active at the next reboot of the system. So to complete the installation, please always reboot the machine:

[root@elthost ~]# reboot

Installing the specific ELT DevEnv variant

If you need a particular variant of ELT DevEnv there is an environment variable defining it. The name of the variant has to be exported before proceeding with the effective installation. If nothing is indicated, the Ansible installation assumes these default is:

  • ELT_ROLE=ELTDEV

The values of ELT development variables is saved by the installation script in the shell profile configuration file: /etc/profile.d/eltdev.sh. It will be loaded in the environment with the next login in the system as a reminder of the current installation. You can still change the configuration, with certain limitations, by re-exporting a new value and re- executing the script /root/elt/ansible-force-align. See the different options below.

The ELT ROLE environment variable

It defines the scope of the installation. The currently known variants for the ELT_ROLE in the DevEnv are:

  • ELTDEV: Software development workstation. Includes tools and packages necessary for a standard developer. This is the default choice if nothing is indicated.

  • MINIMAL: A minimal installation, for use in specific hosts (e.g. Jenkins or in operations). It is subset of ELTDEV.

[root@elthost ~]# export ELT_ROLE=MINIMAL
[root@elthost ~]# sh <(curl https://ftp.eso.org/pub/elt/repos/GetPlatform.sh)

Note: You can upgrade a MINIMAL installation to ELTDEV, but not viceversa.

Installing specific version of ELT Platform

ELT DevEnv is part of ELT Platform delivery. While installing ELT DevEnv it’s possible to install a selected version of the ELT Platform.

[root@elthost ~]# sh <(curl https://ftp.eso.org/pub/elt/repos/GetPlatform.sh) -- 26.1

Verifying the ELT DevEnv installation

You can execute the below ansible-playbook command line any time later to verify the system remains complaint with the ELT DevEnv:

[root@elthost ~]# cd /root/elt
[root@elthost ~]# ansible-playbook --check -i localhost devenv.yml

Step 3: Installing ELT Common Software (ECOS, including CII)

At this point the ELT DevEnv is installed and verified, but there is no ELT Control System infrastructure software installed on the machine.

To install the infrastructure software, please follow the steps (and links) below:

Other ELT DevEnv Operations

ELT DevEnv releases

The ELT Linux DevEnv is defined by the environment variable $ELT_RELEASE. It follows standard numeration major.minor.patch-iteration, where an increase in:

  • The major number indicates a considerable change largely affecting the complete DevEnv, e.g. with a new OS. (2: CentOS-7, 3: CentOS-8, 4: Fedora-34, 5: Fedora-38, 6: Fedora-40, 7: AlmaLinux-10).

  • The minor number indicates a change affecting important components of the DevEnv, like toolkits or their releases.

  • The patch number will be used to fix a severe bug of a minor release.

To know which release of the DevEnv is installed on any system execute:

[root@elthost ~]# echo $ELT_RELEASE

The release is also indicated in the login welcome message at /etc/motd.

../_images/login_output.png

Updating the ELT DevEnv

To check if there are newer releases available, execute as root:

[root@elthost ~]# dnf makecache
[root@elthost ~]# dnf --showduplicates list elt-devenv-ansible

The first command is needed to dowload the latest metadata from repositories. The option –showduplicates will list all available releases in the repository; and in green font the current release. You can install an upgrade to any newer release by explicitely indicating that release:

[root@elthost ~]# dnf -y update elt-devenv-ansible-7.0.1

or to the latest release:

[root@elthost ~]# dnf -y update elt-devenv-ansible

After the installation of a newer or latest elt-devenv-ansible RPM, complete the upgrade with the execution of the remaining Ansible installation:

[root@elthost ~]# cd /root/elt
[root@elthost ~]# ./ansible-force-align

With updates you might get new kernels, therefore it is always recommended to reboot the host after the upgrade. At least, users of the system will have to logout/login to reload the new enviroment.