From 40b949d5ef3402a0cdf24dda457eabc7941ca0d9 Mon Sep 17 00:00:00 2001 From: Gregory Giguashvili Date: Thu, 8 Jan 2026 18:11:38 +0200 Subject: [PATCH 1/2] Pin OS version when installing kernel-devel package --- .../group2/build-serialsim.sh.template | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/test/image-blueprints-bootc/layer1-base/group2/build-serialsim.sh.template b/test/image-blueprints-bootc/layer1-base/group2/build-serialsim.sh.template index d659cd769d..9b6187e349 100644 --- a/test/image-blueprints-bootc/layer1-base/group2/build-serialsim.sh.template +++ b/test/image-blueprints-bootc/layer1-base/group2/build-serialsim.sh.template @@ -1,24 +1,26 @@ #!/bin/bash set -euo pipefail +set -x function get_kernel_ver() { - KERNEL_VER=$(rpm -q --qf "%{VERSION}-%{RELEASE}\n" kernel | sort | tail -1) + KERNEL_VER="$(rpm -q --qf "%{VERSION}-%{RELEASE}\n" kernel | sort | tail -1)" KERNEL_VER_ARCH="${KERNEL_VER}.$(uname -m)" + export KERNEL_VER export KERNEL_VER_ARCH } -# Upgrade the kernel only if necessary to align the procedure with both RHEL and CentOS. -# -# On CentOS, a kernel upgrade may be required due to its different package -# retention policy, which can cause the kernel in the base bootc image to be -# unavailable in the repositories. +# Set the current kernel version and architecture variables. get_kernel_ver -if ! dnf --quiet list available "kernel-devel-${KERNEL_VER}" >/dev/null 2>&1; then - dnf install -y kernel-devel-matched + +# Attempt to install the kernel-devel package for the current kernel version, +# falling back to the kernel-devel-matched package. +# Note: The OS release version is pinned to make sure that the potentially upgraded +# kernel package belongs to the current OS release. +source /etc/os-release +if ! dnf install -y --releasever="${VERSION_ID}" "kernel-devel-${KERNEL_VER}" ; then + dnf install -y --releasever="${VERSION_ID}" kernel-devel-matched get_kernel_ver -else - dnf install -y "kernel-devel-${KERNEL_VER}" fi # Install the necessary dependencies and clean up. From c604a4df9f6aff97d519d3b7f3cdbd4fbf6ad69c Mon Sep 17 00:00:00 2001 From: Gregory Giguashvili Date: Thu, 8 Jan 2026 19:20:47 +0200 Subject: [PATCH 2/2] Enable RHEL EUS repositories for kernel-devel version match --- .../group2/build-serialsim.sh.template | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/test/image-blueprints-bootc/layer1-base/group2/build-serialsim.sh.template b/test/image-blueprints-bootc/layer1-base/group2/build-serialsim.sh.template index 9b6187e349..a38a41b2fe 100644 --- a/test/image-blueprints-bootc/layer1-base/group2/build-serialsim.sh.template +++ b/test/image-blueprints-bootc/layer1-base/group2/build-serialsim.sh.template @@ -13,19 +13,35 @@ function get_kernel_ver() { # Set the current kernel version and architecture variables. get_kernel_ver -# Attempt to install the kernel-devel package for the current kernel version, -# falling back to the kernel-devel-matched package. -# Note: The OS release version is pinned to make sure that the potentially upgraded -# kernel package belongs to the current OS release. +# Lock the OS release version to prevent the installation of a newer kernel package +# belonging to a newer OS release. source /etc/os-release -if ! dnf install -y --releasever="${VERSION_ID}" "kernel-devel-${KERNEL_VER}" ; then - dnf install -y --releasever="${VERSION_ID}" kernel-devel-matched - get_kernel_ver +echo "${VERSION_ID}" > /etc/dnf/vars/releasever + +if [[ "${ID}" == "rhel" ]] ; then + # On RHEL, enable RHEL EUS repositories to allow the installation of the + # kernel-devel package for the current kernel version. + VERSION_ID_MAJOR="$(awk -F. '{print $1}' <<< "${VERSION_ID}")" + VERSION_ID_MINOR="$(awk -F. '{print $2}' <<< "${VERSION_ID}")" + if (( "${VERSION_ID_MINOR}" % 2 == 0 )) ; then + dnf config-manager --set-enabled \ + "rhel-${VERSION_ID_MAJOR}-for-$(uname -m)-baseos-eus-rpms" \ + "rhel-${VERSION_ID_MAJOR}-for-$(uname -m)-appstream-eus-rpms" + fi + dnf install -y "kernel-devel-${KERNEL_VER}" +else + # On CentOS, attempt to install the kernel-devel package for the current kernel + # version, falling back to kernel-devel-matched if the former is not available. + dnf install -y "kernel-devel-${KERNEL_VER}" || dnf install -y kernel-devel-matched fi +# Reset the current kernel version and architecture variables. +get_kernel_ver + # Install the necessary dependencies and clean up. dnf install -y git make python3-pyserial dnf clean all +rm -f /etc/dnf/vars/releasever # Clone the serialsim repository and build the serialsim module. git clone https://github.com/microshift-io/serialsim.git /tmp/serialsim