Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,19 @@ RUN if [ $(arch) == "x86_64" ] || [ $(arch) == "aarch64" ]; then \

RUN dnf clean all && rm -rf /var/cache/dnf/*

COPY manifests /manifests
COPY manifests/01-openshift-imagestream.yaml /manifests/01-openshift-imagestream.yaml
COPY manifests/image-references /manifests/image-references

ARG TAGS=''
RUN if echo "${TAGS:-}" | grep -q scos > /dev/null 2>&1; then sed -i 's/rhel-coreos/stream-coreos/g' /manifests/*; fi

LABEL io.k8s.description="driver-toolkit is a container with the kernel packages necessary for building driver containers for deploying kernel modules/drivers on OpenShift" \
name="driver-toolkit" \
io.openshift.release.operator=true \
version="0.1"
version="0.1" \
io.openshift.os.streamclass=rhel-9 \
kernel-version=${KERNEL_VERSION} \
kernel-rt-version=${RT_KERNEL_VERSION}

# Last layer for metadata for mapping the driver-toolkit to a specific kernel version
RUN export INSTALLED_KERNEL=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-devel); \
Expand Down
76 changes: 76 additions & 0 deletions Dockerfile.rhel10
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
FROM registry.ci.openshift.org/ocp/4.22:rhel-coreos-10
Copy link
Member Author

@ybettan ybettan Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@joepvd
There is no registry.ci.openshift.org/ocp/4.22:base-rhel10 in the release repo.
Should I use registry.ci.openshift.org/ocp/4.22:rhel-coreos-10 or should we add a new registry.ci.openshift.org/ocp/4.22:base-rhel10 image in the CI registry?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: Replace the base image.
The base-rhel10 should be available in the next few days:
https://redhat-internal.slack.com/archives/CBN38N3MW/p1772993158695559?thread_ts=1772982114.642989&cid=CBN38N3MW

ARG KERNEL_VERSION=''
ARG RT_KERNEL_VERSION=''
ARG RHEL_VERSION=''
# If RHEL_VERSION is empty, we infer it from the /etc/os-release file. This is used by OKD as we always want the latest one.
RUN [ "${RHEL_VERSION}" == "" ] && source /etc/os-release && RHEL_VERSION=${VERSION_ID}; echo ${RHEL_VERSION} > /etc/dnf/vars/releasever \
&& dnf config-manager --best --setopt=install_weak_deps=False --save

# kernel packages needed to build drivers / kmods
RUN dnf -y install \
kernel-devel${KERNEL_VERSION:+-}${KERNEL_VERSION} \
kernel-devel-matched${KERNEL_VERSION:+-}${KERNEL_VERSION} \
kernel-headers${KERNEL_VERSION:+-}${KERNEL_VERSION} \
kernel-modules${KERNEL_VERSION:+-}${KERNEL_VERSION} \
kernel-modules-extra${KERNEL_VERSION:+-}${KERNEL_VERSION}

# real-time kernel packages
# Also, assert that the kernel and kernel-rt rpms come from the same build. Relevant for 9.3+.
RUN if [ $(arch) = x86_64 ]; then \
dnf -y install \
kernel-rt-devel${RT_KERNEL_VERSION:+-}${RT_KERNEL_VERSION} \
kernel-rt-modules${RT_KERNEL_VERSION:+-}${RT_KERNEL_VERSION} \
kernel-rt-modules-extra${RT_KERNEL_VERSION:+-}${RT_KERNEL_VERSION}; \
diff --side-by-side <(rpm -qi kernel-core | grep 'Source RPM') <(rpm -qi kernel-rt-core | grep 'Source RPM'); \
fi

# 64k-pages kernel packages for aarch64
# Headers are not compiled, so there is no kernel-64k-headers packages,
# and compilation will use the headers from kernel-headers
RUN if [ $(arch) = aarch64 ]; then \
dnf -y install \
kernel-64k-devel${KERNEL_VERSION:+-}${KERNEL_VERSION} \
kernel-64k-modules${KERNEL_VERSION:+-}${KERNEL_VERSION} \
kernel-64k-modules-extra${KERNEL_VERSION:+-}${KERNEL_VERSION}; \
fi

RUN dnf -y install kernel-rpm-macros

# Additional packages that are mandatory for driver-containers
RUN dnf -y install autoconf automake binutils elfutils-libelf-devel glibc kabi-dw kmod libtool

# Find and install the GCC version used to compile the kernel
# If it cannot be found (fails on some architectures), install the default gcc
RUN export INSTALLED_KERNEL=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-devel) && \
GCC_VERSION=$(cat /lib/modules/${INSTALLED_KERNEL}/config | grep -Eo "gcc \(GCC\) ([0-9\.]+)" | grep -Eo "([0-9\.]+)") && \
dnf -y install gcc-${GCC_VERSION} gcc-c++-${GCC_VERSION} || dnf -y install gcc gcc-c++

# Additional packages that are needed for a subset (e.g DPDK) of driver-containers
RUN dnf -y install xz diffutils flex bison

# Packages needed to build driver-containers
RUN dnf -y install git make rpm-build

# Packages needed to sign and run externally build kernel modules
RUN if [ $(arch) == "x86_64" ] || [ $(arch) == "aarch64" ]; then \
ARCH_DEP_PKGS="mokutil"; fi \
&& dnf -y install openssl keyutils $ARCH_DEP_PKGS

RUN dnf clean all && rm -rf /var/cache/dnf/*

COPY manifests/01-openshift-imagestream.yaml /manifests/01-openshift-imagestream.yaml
COPY manifests/image-references-rhel10 /manifests/image-references

LABEL io.k8s.description="driver-toolkit is a container with the kernel packages necessary for building driver containers for deploying kernel modules/drivers on OpenShift" \
name="driver-toolkit" \
io.openshift.release.operator=true \
version="0.1" \
io.openshift.os.streamclass=rhel-10 \
kernel-version=${KERNEL_VERSION} \
kernel-rt-version=${RT_KERNEL_VERSION}

# Last layer for metadata for mapping the driver-toolkit to a specific kernel version
RUN export INSTALLED_KERNEL=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}" kernel-devel); \
export INSTALLED_RT_KERNEL=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}+rt" kernel-rt-core); \
echo "{ \"KERNEL_VERSION\": \"${INSTALLED_KERNEL}\", \"RT_KERNEL_VERSION\": \"${INSTALLED_RT_KERNEL}\", \"RHEL_VERSION\": \"$(</etc/dnf/vars/releasever)\" }" > /etc/driver-toolkit-release.json

12 changes: 12 additions & 0 deletions manifests/image-references-rhel10
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
kind: ImageStream
apiVersion: image.openshift.io/v1
spec:
tags:
- name: driver-toolkit
from:
kind: DockerImage
name: example.com/image-reference-placeholder:driver-toolkit
- name: rhel-coreos-10
from:
kind: DockerImage
name: example.com/image-reference-placeholder:rhel-coreos-10