4.9. 트리 내 종속성에 대한 심볼릭 링크
일부 커널 모듈은 노드의 운영 체제와 함께 제공되는 다른 커널 모듈에 의존합니다. 해당 종속성을 kmod 이미지에 복사하는 것을 방지하기 위해 커널 모듈 관리(KMM)는 /usr/lib/modules를 빌드와 워커 포드의 파일 시스템 모두에 마운트합니다.
/opt/usr/lib/modules/<kernel_version>/<symlink_name> 에서 /usr/lib/modules/<kernel_version> 으로 심볼릭 링크를 생성하면 depmod는 빌딩 노드의 파일 시스템에 있는 트리 내 kmods를 사용하여 종속성을 해결할 수 있습니다.
런타임 시, 워커 포드는 <symlink_name> 심볼릭 링크를 포함한 전체 이미지를 추출합니다. 해당 심볼릭 링크는 노드의 파일 시스템에서 마운트된 워커 포드의 /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> 아래에 있고 파일 시스템 레이아웃이 동일하다고 예상합니다. 빌드 노드와 대상 노드가 동일한 운영 체제와 릴리스를 공유하는 것이 좋습니다.