오픈임베디드

오픈임베디드(OpenEmbedded, OE)는 임베디드 장치용 리눅스 배포판을 만들기 위해 사용되는 빌드 자동화 소프트웨어 프레임워크이자 크로스 컴파일러 환경이다. 이 프레임워크는 2003년에 공식적으로 설립된 오픈임베디드 커뮤니티에 의해 개발되었다. 오픈임베디드는 리눅스 재단의 워크그룹인 욕토 프로젝트의 권장 빌드 시스템으로, 상업 회사들이 임베디드 제품을 위한 리눅스 기반 시스템을 개발하는 것을 돕는다.

빌드 시스템은 BitBake를 기반으로 한다. 레시피(recipe)라고 불리는 BitBake 설정 파일은 의존성 및 소스 코드 위치, 패키지를 빌드하는 방법, 컴파일된 패키지를 설치 및 제거하는 방법과 같은 다양한 정보를 지정한다. 오픈임베디드 도구는 이러한 레시피를 사용하여 소스 코드를 가져와 패치하고, 바이너리를 컴파일 및 링크하며, 바이너리 패키지(ipk, deb, rpm)를 생성하고, 부팅 가능한 디스크 이미지를 만든다.

과거에는 오픈임베디드 레시피가 단일 저장소에 저장되었고, 메타데이터는 현재 "OpenEmbedded-Classic"이라고 불리는 구조로 되어 있었다. 2010년부터는 계속 증가하는 레시피 수를 더 잘 지원하기 위해 구조가 수정되었다. 레시피 메타데이터는 여러 계층으로 분리되었다. 플랫폼 독립적이고 배포판 독립적인 메타데이터를 포함하는 가장 낮은 계층은 "OpenEmbedded-Core"라고 불린다. 아키텍처 특정, 애플리케이션 특정 및 배포판 종속 지침은 하위 계층의 지침을 재정의하거나 보완할 수 있는 적절한 대상 지원 계층에 적용된다. 또한, 코어 계층의 레시피 변경 사항은 이제 풀 모델로 관리된다: 개발자들은 (이전처럼) 변경 사항을 저장소에 직접 커밋하는 대신 메일링 리스트에 패치를 보낸다. 승인되면 패치는 관리자에 의해 병합(풀)된다..

오픈임베디드 프레임워크는 Git을 통해 설치하고 자동으로 업데이트할 수 있다..

Wic라고 불리는 오픈임베디드 이미지 생성기는 디스크 이미지 파일을 생성하는 데 사용될 수 있으며, 일반적으로 확장자는 .wic이다.

 역사 

크리스 라슨, 마이클 라우어, 홀거 슈리히가 만든 오픈임베디드 프로젝트는 OpenZaurus의 성과를 퍼밀리어 리눅스 및 OpenSIMpad와 같은 프로젝트의 기여와 함께 공통 코드베이스로 병합했다. 오픈임베디드는 이러한 프로젝트들을 대체하여 동일한 코드베이스에서 어떤 프로젝트도 빌드하는 데 사용되었다.

OpenEmbedded-Core (OE-Core)는 욕토 프로젝트와 오픈임베디드가 병합되어 탄생했다. 그 이후로 모든 패키지 레시피는 OpenEmbedded-Core를 통해 유지보수된다.

 계층 구성 
OpenEmbedded-Core는 욕토와의 병합에서 이러한 계층화된 구조를 채택했으며 시간이 지남에 따라 새로운 계층 항목이 추가되었다.Yocto & OpenEmbedded Core Layers  계층은 선언적 성격만을 가진 구조를 나타낸다. 특정 항목은 어떤 항목이 어떤 패키지를 제공할지를 결정하는 범위에서 더 엄격하다. 계층 개요는 다음에서 확인할 수 있다: 

 개발자 계층
 사용자 정의 Bitbake 레시피를 위한 사용자 정의 계층이다. 임베디드 시스템 소프트웨어 개발자는 소프트웨어가 상업용 또는 기본 계층에 맞지 않는 경우 여기에 레시피를 배치한다.

 상업 계층
 전문 오픈 소스 벤더의 패키지, 플러그인 및 구성이 이 계층에 포함된다.

 UI 특정 계층
 현재 메타-오픈임베디드 계층에 있는 계층:
 meta-efl (인라이튼먼트 창 관리자)
 meta-gnome (그놈 창 관리자)
 meta-gpe (GPE 창 관리자)
 meta-xfce (Xfce 창 관리자)

 하드웨어 특정 계층
 meta-efikamx (Efika 장치)
 meta-fsl-arm (프리스케일 세미컨덕터 공식 지원 개발 보드)
 meta-fsl-arm-extra (프리스케일 세미컨덕터 커뮤니티 지원 보드)
 meta-handheld (개인 정보 단말기, PDA)
 meta-intel (인텔 임베디드 장치)
 meta-nslu2 (NSLU2 장치)
 meta-openpandora (Openpandora 장치)
 meta-smartphone (다양한 스마트폰 장치)
 meta-ti (텍사스 인스트루먼트 장치)
 meta-xilinx (자일링스 장치)
 meta-altera (알테라 장치)
 meta-ettus (Ettus Research USRP SDR 장치)
 (기타)

 욕토 계층
 meta-yocto (욕토 프로젝트 계층)

 OpenEmbedded-Core 계층
 openembedded-core
 meta-openembedded

 지원되는 배포판 
OpenEmbedded-Classic에서는 Base에서 UI-계층까지의 구성이 다양한 리눅스 배포판으로 보완될 수 있다. 다음 목록은 오픈임베디드에서 사용할 수 있다:
 Ångström 배포판
 KaliOS
 오픈모코
 SHR
 SlugOS
 웹OSBen Combee on Palm Developer Forum - Fri Jul 16, 2010. Building static libs 
 기타

 지원되는 하드웨어 
다양한 장치가 지원된다:

 보드 및 프로세서
 텍사스 인스트루먼트의 비글보드와 ARM CPU 기반의 다양한 장치가 지원된다.

 스마트폰
 노키아 N800 및 네오 프리러너와 같은 스마트폰이 지원된다.

 새로운 하드웨어로 포팅
 오픈임베디드의 구성, 특히 개방형 설계는 오픈임베디드를 새로운 하드웨어에 상당히 쉽게 적응시킬 수 있도록 한다.Yocto Project Board Support Package guide

 같이 보기 







 각주 

 외부 링크 

 FOSDEM'05 presentation of OpenEmbedded
 FOSDEM'07 presentation of OpenEmbedded
 ELC'08 presentation of OpenEmbedded

분류:빌드 자동화
분류:임베디드 리눅스
분류:PDA 소프트웨어
분류:MIT 라이선스 소프트웨어