Yocto 프로젝트는 임베디드 리눅스 배포판을 구축하기 위한 오픈 소스 프로젝트로, 여러 가지 오픈 소스 소프트웨어 패키지를 결합하여 최적의 시스템을 구성할 수 있다. 하지만 이 과정에서 각각의 소프트웨어가 가지는 라이센스를 관리하고 준수하는 것은 매우 중요하다.

주요 라이센스 종류

Yocto 프로젝트는 다양한 종류의 오픈 소스 라이센스를 지원한다. 다음은 그 주요 라이센스의 예이다:

라이센스 파일 관리

Yocto 프로젝트에서는 라이센스 정보를 명확하게 파악하고 관리하기 위해 다양한 툴과 파일을 지원한다.

라이센스 정책 설정

라이센스 정책을 설정하는 것은 Yocto 빌드 시스템의 중요한 부분이다. 이를 위해 몇 가지 주요 설정 파일과 변수들이 사용된다.

INHERIT += "license"
BAD_RECIPE_LICENSES = "GPLv3 AGPLv3"

이 설정을 통해 프로젝트에서는 허용하지 않는 라이센스를 가진 패키지나 레시피를 제외할 수 있다.

라이센스 보고서 생성

Yocto 프로젝트는 라이센스를 추적하고 문서화하는데 유용한 라이센스 보고서 생성 기능을 제공한다. 이를 통해 사용된 패키지와 그 라이센스를 한눈에 확인할 수 있다.

bitbake your-image -c generate_license_manifest
bitbake your-image -c readme_create

이 명령어를 통해 생성된 보고서는 사용된 모든 패키지의 라이센스 정보를 포함하게 된다. 이를 통해 프로젝트의 법적 컴플라이언스 상태를 쉽게 점검할 수 있다.

라이센스 필터링

Yocto 프로젝트는 특정 라이센스를 기반으로 패키지를 필터링하는 기능을 제공한다. 이를 통해 프로젝트에 적합하지 않은 라이센스를 가진 패키지를 제외할 수 있다.

INCOMPATIBLE_LICENSE = "GPLv3"

위와 같이 설정하면 GPLv3 라이센스를 가진 모든 패키지가 빌드에서 제외된다. 이 설정은 정책적으로 특정 라이센스를 사용하지 않으려는 경우 유용하다.

예외 처리 및 커스터마이징

Yocto 프로젝트는 기본 라이센스 관리 기능 외에도 사용자 정의 가능한 여러 옵션을 제공한다. 예를 들어, 프로젝트 내부적으로 특정 소프트웨어 라이센스의 허용 기준을 재정의할 수 있다.

LICENSE:append = " Proprietary"
LIC_FILES_CHKSUM:append = " file://LICENSE;md5=abcdef123456..."

이와 같이 사용하면 기본적인 라이센스 모델에 사용자가 직접 정의한 라이센스를 추가하는 것도 가능한다.


Yocto 프로젝트에서 라이센스 관리는 프로젝트의 법적 및 윤리적 기준을 지키는 데 있어 매우 중요하다. 프로젝트의 라이센스 정책을 설정하고 관리하는 일은 임베디드 시스템 구축 과정에서 필수적인 과정이며, 이를 통해 법적 리스크를 최소화하고 프로젝트의 투명성을 유지할 수 있다.