-
Notifications
You must be signed in to change notification settings - Fork 16
Added precompiled container build instructions for DOCA drivers #58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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 hidden or 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,141 @@ | ||
| # Common (multistage) args | ||
| ARG D_OS="rhel9.2" | ||
| ARG D_ARCH="x86_64" | ||
| ARG D_CONTAINER_VER="0" | ||
| ARG D_OFED_VERSION="24.04-0.6.6.0" | ||
| ARG D_KERNEL_VER="5.14.0-284.32.1.el9_2.x86_64" | ||
| 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} | ||
|
|
||
| # Final clean image of precompiled driver container | ||
| ARG D_FINAL_BASE_IMAGE=registry.access.redhat.com/ubi9/ubi:latest | ||
|
|
||
| ################################################################## | ||
| # Stage: Minimal base image update and install common requirements | ||
|
|
||
| # DTK base image (below example for specific kernel headers version) | ||
| ARG D_BASE_IMAGE="registry.redhat.io/openshift4/driver-toolkit-rhel9:v4.13.0-202309112001.p0.gd719bdc.assembly.stream" | ||
| # Standart: registry.access.redhat.com/ubi9:latest | ||
|
|
||
| ARG D_PYTHON_VERSION="36" | ||
| ARG D_PYTHON="python${D_PYTHON_VERSION}" | ||
|
|
||
| FROM $D_BASE_IMAGE AS base | ||
|
|
||
| # Inherited global args | ||
| ARG D_OS | ||
|
|
||
| RUN if [[ "${D_OS}" == *"rhel9"* ]] ; then \ | ||
| sed -i 's#/etc/pki/entitlement#/etc/pki/entitlement-host#g' /etc/rhsm/rhsm.conf ;\ | ||
| fi | ||
|
|
||
| RUN set -x && \ | ||
| # Driver build / install script requirements | ||
| dnf -y install perl \ | ||
| # Container functional requirements | ||
| jq iproute kmod procps-ng udev | ||
|
|
||
| ############################################################################################## | ||
| # 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_CONTAINER_VER | ||
| 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_VER=${D_OFED_VERSION} | ||
| ENV NVIDIA_NIC_CONTAINER_VER=${D_CONTAINER_VER} | ||
| ENV NVIDIA_NIC_DRIVER_PATH="${D_OFED_SRC_DOWNLOAD_PATH}/MLNX_OFED_SRC-${D_OFED_VERSION}" | ||
|
|
||
| WORKDIR /root | ||
| RUN set -x && \ | ||
| # Install prerequirements | ||
| dnf install -y curl --allowerasing \ | ||
| # Driver build requirements | ||
| autoconf python3-devel ethtool automake pciutils libtool hostname | ||
|
|
||
| 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 -) | ||
|
|
||
| WORKDIR / | ||
| ADD ./entrypoint.sh /root/entrypoint.sh | ||
| ADD ./dtk_nic_driver_build.sh /root/dtk_nic_driver_build.sh | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. dtk_nic_driver_build.sh missing?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fixed |
||
|
|
||
| ENTRYPOINT ["/root/entrypoint.sh"] | ||
| 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 | ||
|
|
||
| RUN set -x && \ | ||
| # MOFED installation requirements | ||
| dnf install -y autoconf gcc make rpm-build | ||
|
|
||
| # Build driver | ||
| RUN set -x && \ | ||
| ${OFED_SRC_LOCAL_DIR}/install.pl --without-depcheck --distro ${D_OS} --kernel ${D_KERNEL_VER} --kernel-sources /lib/modules/${D_KERNEL_VER}/build --kernel-only --build-only --without-iser --without-srp --without-isert --without-knem --without-xpmem --with-mlnx-tools --with-ofed-scripts --copy-ifnames-udev | ||
|
|
||
| ################################### | ||
| # Stage: Install precompiled driver | ||
|
|
||
| ARG D_FINAL_BASE_IMAGE | ||
|
|
||
| FROM $D_FINAL_BASE_IMAGE 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} | ||
|
|
||
| COPY --from=driver-builder ${OFED_SRC_LOCAL_DIR}/RPMS/redhat-release-*/${D_ARCH}/*.rpm /root/ | ||
|
|
||
| WORKDIR /root/ | ||
| RUN set -x && \ | ||
| rpm -ivh --nodeps \ | ||
| ./kmod-mlnx-nfsrdma-*.rpm \ | ||
| ./kmod-mlnx-nvme-*.rpm \ | ||
| ./kmod-mlnx-ofa_kernel-*.rpm \ | ||
| ./mlnx-ofa_kernel-*.rpm \ | ||
| ./mlnx-tools-*.rpm | ||
|
|
||
| RUN set -x && \ | ||
| # MOFED functional requirements | ||
| dnf install -y pciutils hostname udev ethtool \ | ||
| # Container functional requirements | ||
| jq iproute kmod procps-ng udev | ||
|
|
||
| # 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 hidden or 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,123 @@ | ||
| # Common (multistage) args | ||
| ARG D_OS="ubuntu22.04" | ||
| ARG D_ARCH="x86_64" | ||
| ARG D_CONTAINER_VER="0" | ||
| ARG D_OFED_VERSION="24.04-0.6.6.0" | ||
| ARG D_KERNEL_VER="5.15.0-25-generic" | ||
| 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="ubuntu:22.04" | ||
|
|
||
| ################################################################## | ||
| # Stage: Minimal base image update and install common requirements | ||
| FROM $D_BASE_IMAGE AS base | ||
|
|
||
| ARG D_APT_REMOVE="" | ||
| 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 && \ | ||
| for source in ${D_APT_REMOVE}; do rm -f /etc/apt/sources.list.d/${source}.list; done && \ | ||
| # Perform distro update and install prerequirements | ||
| apt-get -yq update && \ | ||
| DEBIAN_FRONTEND=noninteractive apt-get -yq upgrade && \ | ||
| DEBIAN_FRONTEND=noninteractive apt-get -yq install apt-utils \ | ||
| # Driver build / install script requirements | ||
| perl pciutils kmod lsof python3 dh-python \ | ||
| # Container functional requirements | ||
| jq iproute2 udev ethtool | ||
|
|
||
| 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="debian-" | ||
|
|
||
| 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 && \ | ||
| # Install prerequirements | ||
| DEBIAN_FRONTEND=noninteractive apt-get -yq install curl \ | ||
| dkms make autoconf autotools-dev chrpath automake hostname debhelper gcc quilt libc6-dev build-essential pkg-config && \ | ||
| # Cleanup | ||
| apt-get clean autoclean && \ | ||
| rm -rf /var/lib/apt/lists/* | ||
|
|
||
| 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 manadatory packages | ||
| RUN set -x && \ | ||
| apt-get update && \ | ||
| DEBIAN_FRONTEND=noninteractive apt-get -yq install linux-image-${D_KERNEL_VER} linux-headers-${D_KERNEL_VER} | ||
|
|
||
| # Build driver | ||
| RUN set -x && \ | ||
| ${OFED_SRC_LOCAL_DIR}/install.pl --without-depcheck --distro ${D_OS} --without-dkms --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 | ||
|
|
||
| ################################### | ||
| # Stage: Install precompiled driver | ||
|
|
||
| FROM base AS precompiled | ||
|
|
||
| # Inherited global args | ||
| ARG D_OS | ||
| ARG D_ARCH | ||
| ARG D_KERNEL_VER | ||
| ARG OFED_SRC_LOCAL_DIR | ||
|
|
||
| ENV NVIDIA_NIC_DRIVER_PATH="" | ||
|
|
||
| RUN set -x && \ | ||
| apt-get install -y lsb-release && \ | ||
| # Cleanup | ||
| apt-get clean autoclean && \ | ||
| rm -rf /var/lib/apt/lists/* | ||
|
|
||
| # Install driver | ||
| COPY --from=driver-builder ${OFED_SRC_LOCAL_DIR}/DEBS/${D_OS}/${D_ARCH}/*.deb /root/ | ||
| RUN dpkg -i /root/*.deb | ||
|
|
||
| # 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} | ||
|
|
||
| CMD ["precompiled"] |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
D_BASE_IMAGE is the DTK image should explain above to use this param for OCP4.14^ and how to detect required DTK image
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done