4.8. 树内依赖项的符号链接
有些内核模块依赖于节点操作系统附带的其他内核模块。为了避免将这些依赖项复制到 kmod 镜像中,内核模块管理 (KMM) 将 /usr/lib/modules
挂载到构建和 worker pod 文件系统中。
通过创建从 /opt/usr/lib/modules/<kernel_version>/<symlink_name>
到 /usr/lib/modules/<kernel_version>
的符号链接,depmod
可以使用构建节点文件系统上的 in-tree kmods 来解析依赖项。
在运行时,worker pod 会提取整个镜像,包括 <symlink_name>
符号链接。该符号链接指向 worker pod 中的 /usr/lib/modules/<kernel_version>
,该链接从节点的文件系统挂载。modprobe
然后可以跟随该链接,并根据需要加载树内依赖项。
在以下示例中,host
是 /opt/usr/lib/modules/<kernel_version>
下的符号链接名称:
ARG DTK_AUTO FROM ${DTK_AUTO} as builder # # Build steps # FROM ubi9/ubi ARG KERNEL_FULL_VERSION RUN dnf update && dnf install -y kmod COPY --from=builder /usr/src/kernel-module-management/ci/kmm-kmod/kmm_ci_a.ko /opt/lib/modules/${KERNEL_FULL_VERSION}/ COPY --from=builder /usr/src/kernel-module-management/ci/kmm-kmod/kmm_ci_b.ko /opt/lib/modules/${KERNEL_FULL_VERSION}/ # Create the symbolic link RUN ln -s /lib/modules/${KERNEL_FULL_VERSION} /opt/lib/modules/${KERNEL_FULL_VERSION}/host RUN depmod -b /opt ${KERNEL_FULL_VERSION}
depmod
根据运行 kmod 镜像构建的节点上存在的内核模块生成依赖项文件。
在 KMM 加载内核模块的节点上,modprobe
要求文件存在于 /usr/lib/modules/<kernel_version>
下,以及相同的文件系统布局。强烈建议您构建和目标节点共享相同的操作系统和发行版本。