Yocto에서의 라이센스 정책

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

주요 라이센스 종류

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

  • GPL (General Public License): 소스 코드의 공개를 요구하는 강력한 카피레프트(코드 공개) 라이센스. GPL의 다양한 버전이 존재하며 각각의 조건이 조금씩 다르다.

  • LGPL (Lesser General Public License): GPL 규제를 조금 완화한 것으로, 라이브러리 형태로 사용될 때 원 소스 코드를 수정하지 않는다면 소스 코드 공개 의무가 없다.

  • MIT License: 소프트웨어의 사용, 복사, 수정, 병합, 발행, 배포, 재라이센스를 거의 제한 없이 허용하는 라이센스.

  • BSD License: MIT 라이센스와 유사하지만, 광고조항이 포함된 버전도 있다.

  • Apache License: 특허권 문제를 명시적으로 다루고, MIT와 비슷한 조건의 라이센스를 제공한다.

라이센스 파일 관리

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

  • meta/conf/licenses.conf: 이 파일은 프로젝트에서 사용 가능한 라이센스의 목록과 그 설명을 제공하는 역할을 한다.

  • LIC_FILES_CHKSUM: 패키지의 라이센스 파일 위치와 그 Checksum(해시 값)을 지정하며, 이를 통해 소스 코드와 라이센스 파일의 일관성을 유지한다.

라이센스 정책 설정

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

  • INHERIT += "license": 라이센스 관련 기능을 활성화하는 기본 설정이다.

  • LICENSE: 특정 패키지가 어떤 라이센스를 따르는지 지정한다. 예를 들어, LICENSE = "GPLv2" 와 같이 사용한다.

  • LICENSE_FLAGS: 추가적인 라이센스 조건이나 주석을 지정할 때 사용된다.

  • BAD_RECIPE_LICENSES: 허용되지 않는 라이센스를 가진 레시피를 건너 뜁니다.

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

라이센스 보고서 생성

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

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

라이센스 필터링

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

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

예외 처리 및 커스터마이징

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

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


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

Last updated