Linux/Yocto?
Yocto Project Poky Compile & Execute [minimal
Hans_S_92
2023. 3. 13. 11:38
1. 빌드 시스템
욕토 프로젝트는 임베디드 리눅스 배포판을 만들기 위해 여러 오픈 소스 프로젝트를 갖고 있는 상위 프로젝트이다. 욕토 프로젝트를 대표하는 특징은 아래와 같다.
- 포키 : 욕토 프로젝트의 임베디드 리눅스 레퍼런스 빌드 시스템
- 비트베이크 : 빌드 시스템에서 이미지를 빌드하는 데에 사용하는 명령어
- 오픈임베디드-코어 : 메타 데이터의 공통 레이어
포키의 목적은 다음과 같다.
- 부트로더 이미지
- 리눅스 커널 이미지
- 루트 파일 시스템 이미지
- 툴체인과 SW 개발 키트를 제공( 독립적이다)
빌드 과정에서 최적의 컴파일을 고려하기 위한 시스템 사양은 다음을 만족하면 된다.
- 8코어 16GB 메모리 이상 ( 그이상은 병목현상으로 드라마틱한 효과를 볼 수 없다.)
욕토를 사용하기 위한 필수 패키지
- git(1.7.8이상)
- tar(1.24이상)
- python (2.7.3이상)
sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
sudo apt-get install pzstd python3-distutils
포키 설치
포키 빌드 시스템은 다음 아키텍처의 가상화된 QMEU만 지원한다. 또한 각 아키텍처를 대표하는 여러 레퍼런스 하드웨어 BSP도 지원한다.
- ARM
- x86, x86-64
- PowerPC
- MIPS
포키를 보면 몇 가지의 디렉터리가 있다.
- meta > QEMU 가능한 하드웨어를 지원하는 오픈임베디드-코어 메타데이터를 갖는다.
- meta-yocto > 포키 배포판에 특화된 메타 데이터를 갖는다.
- meta-yocto-bsp > 레퍼런스 하드웨어 개발 보드에 대한 BSP 메타데이터를 갖는다.
- meta-skeleton > 레이어 생성할 때 사용하는 레이어 탬플릿
빌드하기 위해선 아래를 따른다.
- $ git clone git://git.yoctoproject.org/poky
- $ cd poky
- $ git branch -a
- $ git checkout -t origin/langdale -b my-langdale
- $ source oe-init-build-env qemuarm
- $ vi ./conf/local.conf에서 MACHINE ?= "qemuarm"을 추가
- bitbake core-image-minimal
- runqemu qemuarm core-image-minimal
oe-init-build-env 는 현재 쉘에만 적용되기 때문에 새로운 쉘에서는 항상 source 명령어로 새로 실행해야 한다. 이것을 실행하면 qemuarm 디렉터리 아래에 있는 script/oe-setup-builddir을 호출한다.
이미지 빌드에는 몇 가지 종류가 있다.
- core-image-minimal
- core-image-full-cmdline
- core-image-lsb
- core-image-x11
- core-image-sato
- core-image weston
만약 bitbake에서 target recipes를 변경하면 다음 설정 파일이 우선 파싱된다.
- conf/bblayres.conf 모든 설정된 레이어를 찾는데 유용함.
- conf/layers.conf 각 설정된 레이어에서 사용
- meta/conf/bitbake.conf 비트베이크 설정
- conf/local.conf 현재 빌드에서 필요한 사용자 설정
- conf/machine/.conf 머신 설정 파일
- conf/distro/.conf 배포판 정책 파일
빌드가 끝나면 qemuarm 디렉터리 안에 /tmp/deploy/images/qemuarm 디렉토리에서 이미지를 얻을 수 있다.