16장. RHEL의 이미지 모드에서 타사 드라이버 통합
이미지 업데이트 및 재부팅 시 네트워킹, 스토리지 및 보안 드라이버가 유지되도록 타사 커널 모듈을 컨테이너 빌드 프로세스에 직접 포함할 수 있습니다.
16.1. 타사 공급자의 패키지 모드와 이미지 모드 간의 차이점 링크 복사링크가 클립보드에 복사되었습니다!
기존 패키지 기반 배포에서 이미지 모드로 전환할 때 변경 가능한 실시간 시스템에서 변경 불가능한 빌드 시간 환경으로 전환할 수 있도록 타사 공급자 설치 논리를 조정해야 합니다.
| 기능 | 기존 패키지 모드 | 이미지 모드(bootc) |
|---|---|---|
| 설치 타이밍 | 실행 중인 하드웨어(Post-deployment)에서 | 컨테이너 빌드 중(Pre-deployment). |
| 파일 시스템 상태 | 변경 가능(읽기-쓰기). |
|
| 하드웨어 액세스 | 펌웨어/DMI 데이터에 대한 직접 액세스. | 이미지 빌드 중에 대상 서버 하드웨어에 액세스할 수 없습니다. |
| 드라이버 지속성 |
라이브 호스트에서 | 계층화된 컨테이너 이미지에 통합/임베드됩니다. |
이미지 모드에서 /usr 에서 사용 가능한 운영 체제 콘텐츠는 bootc 이미지의 일부로 관리되며 런타임 시 변경 불가능한 영역으로 처리됩니다. 반대로 /etc 및 /var 은 영구 런타임 상태로 처리됩니다. 자세한 내용은 RHEL의 이미지 모드 소개 를 참조하십시오.
파일 시스템은 변경 불가능한, 네트워킹, 파일 시스템 또는 보안 모듈로 취급되므로 기본 RHEL 커널에 포함되지 않은 보안 모듈은 업그레이드 및 재부팅 시 사용할 수 있도록 이미지에 포함되어야 합니다. dnf 를 사용하여 드라이버가 라이브 시스템에 설치된 기존 패키지 모드와 달리 RHEL의 이미지 모드를 사용하여 사용자 지정 드라이버를 포함할 수 있습니다. 결과적으로 이미지 빌드 중에 /usr/lib/modules 아래에 드라이버 자체 및 파일을 통합하고 대상 시스템이 부팅된 후 하드웨어 종속 구성 및 상태 파일을 생성해야 합니다.
- 사용자 정의 드라이버용 설치 전략 선택
사용자 지정 드라이버를 이미지에 통합할 때 커널 업데이트 처리 방법에 따라 크게 달라지는 두 가지 기본 방법 중에서 선택할 수 있습니다.
- 다중 단계 빌드: 이 방법은 컨테이너 빌드 프로세스 중에 기본 이미지에 포함된 커널 헤더에 대해 드라이버를 직접 컴파일합니다. 기본 이미지가 커널을 업데이트할 때마다 시스템은 드라이버를 자동으로 다시 빌드하여 호환성을 보장합니다.
-
사전 빌드된 RPM 복사: 자동화된 파이프라인에는 사용하지 마십시오. 이 방법은 사전 컴파일된 드라이버 RPM을 외부 소스에서 단일 단계 컨테이너
파일에 직접복사합니다. 기본 이미지 커널이 업데이트되면 RPM이 자동으로 다시 빌드되지 않으므로 드라이버가 호환되지 않는 경우 자동으로 부팅 오류가 발생할 수 있습니다. 이 방법을 사용하는 경우 컨테이너 빌드 외부의 새 커널 버전에 대해 드라이버 RPM을 수동으로 확인, 다시 빌드 및 다시 테스트합니다. - 타사 드라이버에 대한 기술 제한
이미지 모드 빌드 프로세스는 컨테이너화된 환경에서 이루어지므로 레거시 RPM 스크립트가 실패할 수 있는 특정 제약 조건이 발생합니다.
- 하드웨어가 존재하지 않음
-
dmidecode및lspci와 같은 명령 또는/sys/class/dmi/…에 대한 쿼리는 최종 프로덕션 하드웨어에 대한 정보를 반환하지 않습니다. - 제한된 펌웨어 액세스
-
드라이버가
%post또는%pre설치 스크립트 중에 펌웨어 버전 또는 UUID의 유효성을 검사하면 스크립트가 대상 서버 대신 빌드 호스트의 환경을 실패하거나 잘못 탐지합니다. - 변경 불가능한
/usr디렉토리 -
최종 부팅 가능한 이미지에서
/usr디렉터리는 읽기 전용입니다.Containerfile빌드 단계에서 이미지에 있는 모든 드라이버 파일을 배치해야 합니다. depmod요구 사항-
빌드 환경에 실행 중인 대상 커널이 없으므로 빌드 단계에서 이미지 내의 특정 대상 커널 버전에 대해
depmod를 명시적으로 실행해야 합니다. - 초기 부팅 요구 사항
시스템이 루트 장치에 액세스하는 데 필요한 스토리지 컨트롤러 드라이버와 같이 실제 루트 파일 시스템을 마운트하기 전에 드라이버가 필요한 경우 image
initramfs에 드라이버도 포함해야 합니다./usr/lib/modules만으로 모듈을 설치할 수 없습니다. 구성 지침은 bootc 이미지 initramfs의 콘텐츠 추가 또는 변경을 참조하십시오.- 드라이버 공급자에 대한 지침
- 분리된 하드웨어 검증
-
RPM
.spec파일에는 설치 단계에서 하드웨어 제공 논리가 포함되어 있지 않습니다. 처음 부팅할 때 실행되는systemd서비스로 하드웨어 검증을 이동합니다. - 상태 비저장 설치
-
시스템은 이미지 모드에서 이러한 디렉터리를 쓰기 가능한 런타임 오버레이로 처리하기 때문에 빌드 중에 생성된
/var또는/etc디렉터리의 영구 상태에 의존하지 않습니다.