Yocto (리눅스)

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

Yocto 프로젝트는 리눅스 재단이 2010년 발표한 리눅스 배포판 구성을 위한 빌드 자동화 툴체인이다.

x86 계열(AMD64 포함), ARM 계열, RISC-V 등 임베디드 리눅스에 사용하는 CPU 플랫폼을 제조사 별로 다 지원하며[1], Gnome, Python, Qt 5~Qt 6 같은 소프트웨어 빌드 및 패키징도 가능한 만능 배포판 제작 툴이다.

역사[편집 | 원본 편집]

2010년 리눅스 재단이 리눅스가 프로젝트를 발족하였다.

여기에 2011년 오픈임베디드(OpenEmbbedded)[2] 를 비롯한 22개의 프로젝트가 호응하면서, yocto는 순식간에 임베디드 리눅스 업계의 대세로 떠오르게 된다.

버전[편집 | 원본 편집]

최초로 나온 1.0의 코드네임은 Laverne이다.

2020년 04월 발표된 3.1 버전(Dunfell)이 가장 오래된 LTS 버전이나, 현재 리눅스 4.19를 사용해야 할 경우가 아니면 추천되지 않으며, 공식적으로 유효한 가장 오래된 LTS 버전은 2022년 5월 나온 4.0버전(Kirkstone)이다.

최신 LTS는 2024년 4월에 나온 5.0(Scarthgap)이다.

특징[편집 | 원본 편집]

레이어, 레시피[편집 | 원본 편집]

각 애플리케이션은 meta-***라 불리는 레이어(Layer)에 빌드 설정 및 구성 요소 별 컴파일 설정인 레시피(recipe) 하위 폴더를 포함한다. 각 레시피에는 bb 확장자를 가진 기본 레시피와 기본 레시피를 확장하는 bbappend 확장자의 추가 레시피가 있다. 이 레이어들은 기본적으로 yocto 버전에 맞게 Git Branch가 존재하며, 브랜치가 존재하지 않는 경우 기본적으로 해당 버전의 욕토를 지원하지 않는 레시피라고 보면 된다. 레이어를 가져왔으면 전역 bblayer.conf 파일에 추가 후 bitbake 명령어로 빌드하면 된다.

또 안에 있는 소프트웨어의 버전이 욕토 버전에 따라 다른 경우도 있다. 대표적으로 리눅스 커널의 경우 dunfell은 4.19 버전, Kirkstone은 5.10과 5.15 버전을 지원한다.

모든 업스트림(upstream) 레이어[3]오픈임베디드 인덱스 에서 찾을 수 있다. 버전별 브랜치(기본값은 master)를 바꿔가며 필요한 레이어가 있는지 검색하면 된다. 하지만 여기 등록되지 않았으면서 GitHub 등지에 업로드된 레이어도 있으니 구글 검색으로 찾아보도록 하자.

그래서 빌드 자동화 및 배포판 관리에서 이점이 확실하기 때문에, 어느 정도 규모 있는 기업에서도 내부/외부 양 측면에서 모두 사용하는 모양. 당장 밑의 예시에 있는 webOS의 사례만 봐도 Python 스크립트로 오픈임베디드를 비롯한 프로젝트 레이어의 Git 브랜치들을 다수 받아온다.

배포판과 타깃 하드웨어에 따라 각각 레이어의 설정 폴더(meta-***/conf 폴더) 내에 distro 및 machine 하위 폴더를 만들어 설정을 분리할 수 있으며, 이것이 yocto 프로젝트의 진수(眞髓)다.

파이썬과 쉘 스크립트 지원[편집 | 원본 편집]

쉘 스크립트와 전용 명령어를 섞은 태스크 함수를 정의하여 빌드 과정을 설정할 수 있으나, 여기에 더해 파이썬으로도 빌드 스크립트를 짠 뒤 호출할 수 있다.

poky[편집 | 원본 편집]

poky는 욕토 프로젝트의 공식 리눅스 배포판이다. meta와 meta-openembedded 내 레이어들(예: openembedded-core, meta-network 등)만 사용하는 배포판이다. Yocto 전용 공식 추천 리눅스 커널 레시피인 linux-yocto 레시피를 사용한다.

난이도[편집 | 원본 편집]

리눅스 배포판 구성에 필요한 모든 종류의 설정을 다 가지기 때문에, 커스텀할 것이 많을 수록 설정할 것이 대단히 많다. 그래서 나온 별명이 '욕' 나오고 '토' 나와서 욕토 프로젝트다. 게다가 욕토 프로젝트가 주로 쓰이는 임베디드 리눅스 생태계에서 욕토가 지원하는 Python은 다소 낯선 언어라 한국어로 된 블로그 가이드나 서적 대부분 리눅스 쉘 스크립트 사용을 가정하고 작성되어 있다.

거기에 더해, 오픈 소스 커뮤니티에 각종 저작권 조항[4] 이 난립하는 관계로, 레이어 별도 아니고 레시피 별로 라이선스 파일 포함 및 체크섬(Checksum) 명시를 반드시 해 줘야 한다. 그렇지 않을 경우 빌드를 중단하는 것이 기본 설정.

사용법[편집 | 원본 편집]

Yocto에 의존하는 주요 프로젝트[편집 | 원본 편집]

  • LG webOS 오픈 소스 에디션(OSE): 2.X 버전 기준 욕토 4.0(Kirkstone)으로 빌드한다. 라즈베리파이 3과 4를 지원 중이지만, 라즈베리 파이 3의 경우 OSE 1.X를 대신 사용한다.
  1. ARM의 경우 어지간한 AP 제조사는 대응되는 하드웨어 세팅 yocto 레이어가 있다. 다만 x86 쪽은 제조사가 사실상 둘 뿐이라 규격 통일이 잘 되어 있어 제조사 별 특이 요소가 거의 없다.
  2. 2003년 시작된 임베디드 기기 전용 리눅스 빌드 자동화 프레임워크 개발 프로젝트다.
  3. 최신판이 나오고 기술 지원이 있는 레이어라고 보면 된다.
  4. GPL, MIT, BSD, 아파치 라이선스 및 기타 등등...