Install ECI Packages¶
This section will help you set up an ECI repository and install ECI packages.
You should have already downloaded and setup the public ECI repository or hosted a private ECI repository at this point. Now you’re ready to install ECI packages.
Setup Extra repositories¶
The section is applicable to:

Some of the ECI packages depend on additional APT repositories, specifically Intel® oneAPI, Intel® OpenVINO, and ROS2. Follow the steps below to configure the APT package manager with these additional APT repositories:
Setup the ROS 2 Humble Hawksbill or ROS 2 Jazzy Jalisco APT repositories.
# download the key to system keyring $ sudo -E wget -O- https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null # add signed entry to APT sources and configure the APT client to use ROS repository: $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $VERSION_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list
Attention
If you are located in the People’s Republic of China, modify the
/etc/hosts
file to directly connect to the raw.githubusercontent server:$ sudo bash -c "echo '185.199.108.133 raw.githubusercontent.com' >> /etc/hosts"
Setup the Intel® oneAPI APT repository and preference to install Intel® oneAPI runtime libraries version
2025.1.*
:# download the key to system keyring $ sudo -E wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null # add signed entry to APT sources and configure the APT client to use oneAPI repository: $ echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list $ sudo bash -c 'echo -e "Package: intel-oneapi-runtime-*\nPin: version 2025.1.*\nPin-Priority: 1001" > /etc/apt/preferences.d/oneapi'
Setup the Intel® OpenVINO APT repository:
# add signed entry to APT sources and configure the APT client to use OpenVINO repository: $ sudo bash -c 'echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/openvino/2023 ubuntu22 main" > /etc/apt/sources.list.d/intel-openvino-2023.list' $ sudo bash -c 'echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/openvino/2024 ubuntu22 main" > /etc/apt/sources.list.d/intel-openvino-2024.list'
Update the APT sources lists:
$ sudo apt update
Some of the ECI packages depend on additional DNF repositories, specifically Extra Packages for Enterprise Linux (EPEL). Follow the steps below to configure the DNF package manager with these additional DNF repositories:
Setup the Extra Packages for Enterprise Linux (EPEL) DNF repository:
$ sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Install Real-time Linux Kernel¶
The section is applicable to:

Make sure that you have setup the ECI repository.
Before using the ECI repository, update the APT packages list:
$ sudo apt update
The APT package manager will download the latest list of packages available for all configured repositories.
Tip
If the APT package manager is unable to connect to the repositories, follow these APT troubleshooting tips:
Make sure that the system has network connectivity.
Make sure that the ports
80
and8080
are not blocked by a firewall.Configure an APT proxy (if network traffic routes through a proxy server). To configure an APT proxy, add the following lines to a file at
/etc/apt/apt.conf.d/proxy.conf
(replace the placeholders as per your specific user and proxy server):Acquire::http::Proxy "http://user:password@proxy.server:port/"; Acquire::https::Proxy "http://user:password@proxy.server:port/";
ECI provides Deb packages named
customizations-*
which add a GRUB menu entry for ECI and prepares the system to be deterministic. Install these packages using theeci-customizations
meta-package:$ sudo apt install -y eci-customizations
ECI provides a firmware package which backports updates from upstream to bring better hardware support to the current distribution. Install this package:
$ sudo apt-get reinstall '(firmware-linux-nonfree|linux-firmware$)'
Next, install the ECI real-time Linux kernel. There are two options available: Linux Intel LTS PREEMPT_RT kernel and Linux Intel LTS Xenomai Dovetail kernel. It is recommended that you start with Linux Intel LTS PREEMPT_RT kernel, if you do not know which option to choose.
Click the corresponding tab to know more.
Linux Intel LTS PREEMPT_RT kernel is Intel’s Long-Term-Support kernel with PREEMPT_RT patches.
$ sudo apt install -y linux-intel-rt
Linux Intel LTS Xenomai Dovetail kernel is Intel’s Long-Term-Support kernel with Xenomai patches.
$ sudo apt install -y eci-xenomai
Attention
Please review Canonical Intellectual property rights policy regarding Canonical® Ubuntu®. Note that any redistribution of modified versions of Canonical® Ubuntu® must be approved, certified or provided by Canonical if you are going to associate it with the Trademarks. Otherwise you must remove and replace the Trademarks and will need to recompile the source code to create your own binaries.
Reboot the target system.
$ sudo reboot
The section is applicable to:

Make sure that you have setup the ECI repository.
Install the RHEL DNF repository:
$ sudo subscription-manager repos --enable rhel-9-for-x86_64-rt-rpms
The DNF package manager will download the latest list of packages available for all configured repositories.
Tip
If the DNF package manager is unable to connect to the repositories, follow these DNF troubleshooting tips:
Make sure that the system has network connectivity.
Make sure that the port
80
is not blocked by a firewall.Configure an DNF proxy (if network traffic routes through a proxy server). To configure an DNF proxy, perform the following command (replace the placeholders as per your specific user and proxy server):
$ sudo subscription-manager config --server.proxy_hostname=<proxy.server> --server.proxy_port=<port>
RHEL provides RPM packages group named
RT
which prepares the system to be deterministic. Install this package group:$ sudo dnf groupinstall RT
Update the GRUB config to set the default kernel to the newly installed real-time kernel. List the available kernels:
$ sudo grubby --info=ALL
index=0 kernel="/boot/vmlinuz-5.14.0-284.30.1.rt14.315.el9_2.x86_64" args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel_vecow--debian11-swap rd.lvm.lv=rhel_vecow-debian11/root rd.lvm.lv=rhel_vecow-debian11/swap rhgb quiet intel_iommu=on iommu=pt" root="/dev/mapper/rhel_vecow--debian11-root" initrd="/boot/initramfs-5.14.0-284.30.1.rt14.315.el9_2.x86_64.img $tuned_initrd" title="Red Hat Enterprise Linux (5.14.0-284.30.1.rt14.315.el9_2.x86_64) 9.2 (Plow)" id="41b5c9e83a1b44d7bace7339a08afabe-5.14.0-284.30.1.rt14.315.el9_2.x86_64" index=1 kernel="/boot/vmlinuz-5.14.0-284.25.1.el9_2.x86_64" args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel_vecow--debian11-swap rd.lvm.lv=rhel_vecow-debian11/root rd.lvm.lv=rhel_vecow-debian11/swap rhgb quiet intel_iommu=on iommu=pt" root="/dev/mapper/rhel_vecow--debian11-root" initrd="/boot/initramfs-5.14.0-284.25.1.el9_2.x86_64.img $tuned_initrd" title="Red Hat Enterprise Linux (5.14.0-284.25.1.el9_2.x86_64) 9.2 (Plow)" id="41b5c9e83a1b44d7bace7339a08afabe-5.14.0-284.25.1.el9_2.x86_64"
Set the default kernel to the real-time kernel. Hint: the real-time kernel usually contains
rt
in its name:$ sudo grubby --set-default /boot/vmlinuz-5.14.0-284.30.1.rt14.315.el9_2.x86_64
The default is /boot/loader/entries/41b5c9e83a1b44d7bace7339a08afabe-5.14.0-284.30.1.rt14.315.el9_2.x86_64.conf with index 0 and kernel /boot/vmlinuz-5.14.0-284.30.1.rt14.315.el9_2.x86_64
Reboot the target system.
$ sudo systemctl reboot
What Next after Installing Real-time Linux Kernel¶
After installing the real-time Linux kernel, proceed to Complete and Verify Deployment.