-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Fred Rolland <[email protected]>
- Loading branch information
Showing
3 changed files
with
187 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
# Common (multistage) args | ||
ARG D_OS="sles15sp2" | ||
ARG D_ARCH="x86_64" | ||
ARG D_CONTAINER_VER="0" | ||
ARG D_OFED_VERSION="23.10-0.5.5.0" | ||
ARG D_KERNEL_VER="5.3.18-22-default" | ||
ARG D_OFED_SRC_DOWNLOAD_PATH="/run/mellanox/src" | ||
ARG OFED_SRC_LOCAL_DIR=${D_OFED_SRC_DOWNLOAD_PATH}/MLNX_OFED_SRC-${D_OFED_VERSION} | ||
|
||
# Common for build and final clean image of precompiled driver container | ||
ARG D_BASE_IMAGE="registry.suse.com/suse/sle15:15.5" | ||
|
||
################################################################## | ||
# Stage: Minimal base image update and install common requirements | ||
FROM $D_BASE_IMAGE AS base | ||
|
||
ARG D_OFED_VERSION | ||
ARG D_CONTAINER_VER | ||
ARG D_OFED_SRC_DOWNLOAD_PATH | ||
|
||
ENV NVIDIA_NIC_DRIVER_VER=${D_OFED_VERSION} | ||
ENV NVIDIA_NIC_CONTAINER_VER=${D_CONTAINER_VER} | ||
|
||
WORKDIR /root | ||
|
||
RUN set -x && \ | ||
# Perform distro update and install prerequirements | ||
zypper --gpg-auto-import-keys ref -s && \ | ||
zypper --non-interactive update && \ | ||
zypper --non-interactive install --no-recommends \ | ||
# Driver build / install script requirements | ||
perl pciutils kmod lsof python3 \ | ||
# dh-python not found | ||
# Container functional requirements | ||
jq iproute2 udev ethtool awk | ||
|
||
WORKDIR / | ||
ADD ./entrypoint.sh /root/entrypoint.sh | ||
|
||
ENTRYPOINT ["/root/entrypoint.sh"] | ||
|
||
############################################################################################## | ||
# Stage: Download NVIDIA driver sources and install src driver container packages requirements | ||
|
||
FROM base AS driver-src | ||
|
||
# Inherited global args | ||
ARG D_OFED_VERSION | ||
ARG D_OFED_SRC_DOWNLOAD_PATH | ||
|
||
# Stage args | ||
ARG D_OFED_BASE_URL="https://www.mellanox.com/downloads/ofed/MLNX_OFED-${D_OFED_VERSION}" | ||
ARG D_OFED_SRC_TYPE="" | ||
|
||
ARG D_OFED_SRC_ARCHIVE="MLNX_OFED_SRC-${D_OFED_SRC_TYPE}${D_OFED_VERSION}.tgz" | ||
ARG D_OFED_URL_PATH="${D_OFED_BASE_URL}/${D_OFED_SRC_ARCHIVE}" | ||
|
||
ENV NVIDIA_NIC_DRIVER_PATH="${D_OFED_SRC_DOWNLOAD_PATH}/MLNX_OFED_SRC-${D_OFED_VERSION}" | ||
|
||
WORKDIR /root | ||
|
||
RUN set -x && \ | ||
for source in ${D_ZYPPER_REMOVE}; do rm -f /etc/zypp/repos.d/${source}.repo; done && \ | ||
# Perform distro update and install prerequirements | ||
zypper --gpg-auto-import-keys ref -s && \ | ||
zypper --non-interactive update && \ | ||
zypper --non-interactive install --no-recommends \ | ||
make autoconf chrpath automake hostname gcc quilt dracut rpm-build sysvinit-tools | ||
|
||
RUN set -x && \ | ||
# Download NVIDIA NIC driver sources | ||
mkdir -p ${D_OFED_SRC_DOWNLOAD_PATH} && \ | ||
cd ${D_OFED_SRC_DOWNLOAD_PATH} && (curl -sL ${D_OFED_URL_PATH} | tar -xzf -) | ||
|
||
CMD ["sources"] | ||
|
||
##################### | ||
# Stage: Build driver | ||
|
||
FROM driver-src AS driver-builder | ||
|
||
# Inherited global args | ||
ARG D_OS | ||
ARG D_KERNEL_VER | ||
ARG OFED_SRC_LOCAL_DIR | ||
|
||
# Driver build mandatory packages | ||
RUN set -x && \ | ||
# MOFED installation requirements | ||
zypper --non-interactive install --no-recommends autoconf gcc make rpm-build dracut | ||
RUN set -x && \ | ||
zypper search -s kernel-default-devel | ||
|
||
# Remove '-default' suffix if it exists | ||
RUN CLEANED_KERNEL_VER=${D_KERNEL_VER%-default} && \ | ||
echo "Installing kernel-default-devel=${CLEANED_KERNEL_VER}" && \ | ||
# Install the kernel source | ||
zypper --non-interactive install --no-recommends kernel-default-devel=${CLEANED_KERNEL_VER} | ||
|
||
RUN ls -l /lib/modules | ||
|
||
# Build driver --distro ${D_OS} | ||
RUN set -x && \ | ||
${OFED_SRC_LOCAL_DIR}/install.pl -vvv --distro ${D_OS} --kernel-sources /lib/modules/${D_KERNEL_VER}/build --without-depcheck --kernel ${D_KERNEL_VER} --kernel-only --build-only --copy-ifnames-udev --with-mlnx-tools --without-knem-modules --without-srp-modules --without-kernel-mft-modules --without-iser-modules --without-isert-modules | ||
RUN ls -l ${OFED_SRC_LOCAL_DIR}/RPMS/*/x86_64/ | ||
################################### | ||
# Stage: Install precompiled driver | ||
|
||
FROM base AS precompiled | ||
|
||
# Inherited global args | ||
ARG D_ARCH | ||
ARG D_KERNEL_VER | ||
ARG D_OFED_VERSION | ||
ARG D_CONTAINER_VER | ||
ARG OFED_SRC_LOCAL_DIR | ||
|
||
ENV NVIDIA_NIC_DRIVER_VER=${D_OFED_VERSION} | ||
ENV NVIDIA_NIC_DRIVER_PATH="" | ||
ENV NVIDIA_NIC_CONTAINER_VER=${D_CONTAINER_VER} | ||
|
||
ENV NVIDIA_NIC_DRIVER_PATH="" | ||
COPY --from=driver-builder ${OFED_SRC_LOCAL_DIR}/RPMS/sles-release-*/${D_ARCH}/*.rpm /root/ | ||
|
||
WORKDIR /root/ | ||
RUN set -x && \ | ||
rpm -ivh --nodeps \ | ||
./mlnx-nfsrdma-*.rpm \ | ||
./mlnx-nvme-*.rpm \ | ||
./mlnx-ofa_kernel-*.rpm \ | ||
./mlnx-tools-*.rpm | ||
|
||
RUN set -x && \ | ||
zypper --non-interactive install --no-recommends \ | ||
# MOFED functional requirements | ||
make autoconf chrpath automake hostname gcc quilt dracut rpm-build sysvinit-tools \ | ||
# Container functional requirements | ||
jq kmod | ||
|
||
# Prevent modprobe from giving a WARNING about missing files | ||
RUN touch /lib/modules/${D_KERNEL_VER}/modules.order /lib/modules/${D_KERNEL_VER}/modules.builtin && \ | ||
# Introduce installed kernel modules | ||
depmod ${D_KERNEL_VER} | ||
|
||
WORKDIR / | ||
ADD ./entrypoint.sh /root/entrypoint.sh | ||
ADD ./dtk_nic_driver_build.sh /root/dtk_nic_driver_build.sh | ||
|
||
ENTRYPOINT ["/root/entrypoint.sh"] | ||
CMD ["precompiled"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters