4.9. kmod 이미지 생성


커널 모듈 관리(KMM)는 .ko 파일이 포함된 표준 OCI 이미지인 용도 빌드된 kmod 이미지와 함께 작동합니다. .ko 파일의 위치는 < prefix>/lib/modules/[kernel-version]/ 과 일치해야 합니다.

.ko 파일로 작업할 때 다음 사항에 유의하십시오.

  • 대부분의 경우 < prefix&gt;는 /opt 와 같아야 합니다. Module CRD의 기본값입니다.
  • kernel-version 은 비어 있지 않아야 하며 커널 모듈이 빌드된 커널 버전과 같아야 합니다.

4.9.1. depmod 실행

빌드 프로세스 종료 시 depmod 를 실행하여 modules.dep.map 파일을 생성하는 것이 좋습니다. 이는 kmod 이미지에 여러 커널 모듈이 포함되어 있고 모듈 중 하나가 다른 모듈에 종속되는 경우 특히 유용합니다.

참고

kernel-devel 패키지를 다운로드하려면 Red Hat 서브스크립션이 있어야 합니다.

프로세스

  • 다음 명령을 실행하여 특정 커널 버전의 modules.dep.map 파일을 생성합니다.

    $ depmod -b /opt ${KERNEL_FULL_VERSION}+`.
    Copy to Clipboard Toggle word wrap

4.9.1.1. Dockerfile 예

OpenShift Container Platform에서 이미지를 빌드하는 경우 Driver Tool Kit (DTK) 사용을 고려하십시오.

자세한 내용은 권한이 부여된 빌드 사용을 참조하십시오.

apiVersion: v1
kind: ConfigMap
metadata:
  name: kmm-ci-dockerfile
data:
  dockerfile: |
    ARG DTK_AUTO
    FROM ${DTK_AUTO} as builder
    ARG KERNEL_FULL_VERSION
    WORKDIR /usr/src
    RUN ["git", "clone", "https://github.com/rh-ecosystem-edge/kernel-module-management.git"]
    WORKDIR /usr/src/kernel-module-management/ci/kmm-kmod
    RUN KERNEL_SRC_DIR=/lib/modules/${KERNEL_FULL_VERSION}/build make all
    FROM registry.redhat.io/ubi9/ubi-minimal
    ARG KERNEL_FULL_VERSION
    RUN microdnf install 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}/
    RUN depmod -b /opt ${KERNEL_FULL_VERSION}
Copy to Clipboard Toggle word wrap

4.9.2. 클러스터의 빌드

KMM은 클러스터에 kmod 이미지를 빌드할 수 있습니다. 다음 지침을 따르십시오.

  • 커널 매핑의 build 섹션을 사용하여 빌드 지침을 제공합니다.
  • 컨테이너 이미지의 Dockerfile을 dockerfile 키 아래의 ConfigMap 리소스에 복사합니다.
  • ConfigMapModule 과 동일한 네임스페이스에 있는지 확인합니다.

KMM은 containerImage 필드에 지정된 이미지 이름이 있는지 확인합니다. 이 경우 빌드를 건너뜁니다.

그러지 않으면 KMM에서 Build 리소스를 생성하여 이미지를 빌드합니다. 이미지가 빌드된 후 KMM은 Module 조정을 진행합니다. 다음 예제를 참조하십시오.

# ...
- regexp: '^.+$'
  containerImage: "some.registry/org/<my_kmod>:${KERNEL_FULL_VERSION}"
  build:
    buildArgs:  
1

      - name: ARG_NAME
        value: <some_value>
    secrets: 
2

      - name: <some_kubernetes_secret> 
3

    baseImageRegistryTLS:
      insecure: false 
4

      insecureSkipTLSVerify: false 
5

    dockerfileConfigMap:  
6

      name: <my_kmod_dockerfile>
  registryTLS:
    insecure: false 
7

    insecureSkipTLSVerify: false 
8
Copy to Clipboard Toggle word wrap
1
선택 사항:
2
선택 사항:
3
/run/secrets/some-kubernetes-secret 으로 빌드 Pod에 마운트됩니다.
4
선택 사항: 이 매개변수를 사용하지 마십시오. true 로 설정하면 빌드가 일반 HTTP를 사용하여 Dockerfile FROM 명령에서 이미지를 가져올 수 있습니다.
5
선택 사항: 이 매개변수를 사용하지 마십시오. true 로 설정하면 빌드에서 일반 HTTP를 사용하여 Dockerfile FROM 명령에서 이미지를 가져올 때 모든 TLS 서버 인증서 검증을 건너뜁니다.
6
필수 항목입니다.
7
선택 사항: 이 매개변수를 사용하지 마십시오. true 로 설정하면 KMM이 일반 HTTP를 사용하여 컨테이너 이미지가 이미 존재하는지 확인할 수 있습니다.
8
선택 사항: 이 매개변수를 사용하지 마십시오. true 로 설정하면 KMM은 컨테이너 이미지가 이미 존재하는지 확인할 때 모든 TLS 서버 인증서 검증을 건너뜁니다.

성공적인 빌드 Pod는 Operator 구성에 job.gcDelay 매개변수가 설정되지 않는 한 즉시 가비지 수집됩니다. 실패한 빌드 Pod는 항상 보존되며 관리자가 빌드를 다시 시작하려면 수동으로 삭제해야 합니다.

4.9.3. Driver Toolkit 사용

Driver Toolkit(DTK)은 빌드 kmod 로더 이미지를 빌드하기 위한 편리한 기본 이미지입니다. 여기에는 현재 클러스터에서 실행 중인 OpenShift 버전의 툴과 라이브러리가 포함되어 있습니다.

프로세스

여러 단계 Dockerfile의 첫 번째 단계로 DTK를 사용합니다.

  1. 커널 모듈을 빌드합니다.
  2. .ko 파일을 ubi-minimal 과 같은 작은 최종 사용자 이미지에 복사합니다.
  3. 클러스터 내 빌드에서 DTK를 활용하려면 DTK_AUTO 빌드 인수를 사용합니다. 이 값은 Build 리소스를 생성할 때 KMM에 의해 자동으로 설정됩니다. 다음 예제를 참조하십시오.

    ARG DTK_AUTO
    FROM ${DTK_AUTO} as builder
    ARG KERNEL_FULL_VERSION
    WORKDIR /usr/src
    RUN ["git", "clone", "https://github.com/rh-ecosystem-edge/kernel-module-management.git"]
    WORKDIR /usr/src/kernel-module-management/ci/kmm-kmod
    RUN KERNEL_SRC_DIR=/lib/modules/${KERNEL_FULL_VERSION}/build make all
    FROM ubi9/ubi-minimal
    ARG KERNEL_FULL_VERSION
    RUN microdnf install 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}/
    RUN depmod -b /opt ${KERNEL_FULL_VERSION}
    Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat