Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- BSP
- 빌드 시스템
- ARM 아키텍처: 메모리모델과 배리어
- yocto
- Arm 아키텍처: 캐시
- Kernel
- 인프런
- 시스템 소프트웨어 개발을 위한 ARM 아키텍처의 구조와 원리
- udemy
- 코멘토
- 코멘토실무PT
- 실무PT후기
- arm
- ARM 아키텍쳐: 메모리 모델과 배리어
- Arm 아키텍처: 메모리 모델과 배리어
Archives
- Today
- Total
반도체 소프트웨어
요약 2. Bitbake 본문
- 사전 개념
- BBPATH
- bitbake의 환경 변수(메타데이터 파일 찾는 환경변수, bitbake 소스 가장 상위 디렉터리라고 보면 됨)
- 콜론으로 구분된 디렉터리 경로 목록을 갖는다. 레이어의 최상위 디렉터리를 저장한다
- Layer
- 연관된 메타데이터들을 포함하는 저장소(디렉터리)
- 위 그림에서 mylayer가 하나의 독립된 애플리케이션 정도라고 보면 되고
- Classes, conf 등은 기본적으로 필요한 시스템 레벨이라고 보면 될 듯
- layered 아키텍처로 구성된다
- 각 레이어가 다른 레이어에 독립적이다.
- 높은 유지보수성
- 앞선 레이어 기능 재정의 및 추가 가능
- 연관된 메타데이터들을 포함하는 저장소(디렉터리)
- BBPATH
- Bitbake 실행 전 준비 사항
- bitbake는 궁극적으로 .bb 레시피 파일을 실행(task를 실행)
- bitbake가 필요로 하는 최소한의 메타데이터 파일
- bitbake.conf
- bblayers.conf
- base.bbclass
- layer.conf
- exam.bb
- bitbake 동작 과정 개요
- bitbake는 가장 먼저 BBPATH/conf/bblayers.conf를 먼저 찾는다
- conf는 빌드 프로세스에 관련된 여러 가지 설정 파일을 포함하는 디렉터리
- bblayers.conf에서 BBLAYERS 변수는 bitbake에게 빌드 수행을 위해 어떤 레이어들이 존재하고 있는지 알려줌
- conf는 빌드 프로세스에 관련된 여러 가지 설정 파일을 포함하는 디렉터리
- layer.conf를 찾는다
- Layer.conf: bitbake에게 현재 레이어의 경로와 레이어 내에 있는 레시피 파일들(.bb .bbappend)의 경로를 알려준다
- BBPATH: 콜론으로 구분된 디렉터리 경로 목록을 갖는다. 레이어의 최상위 디렉터리를 저장한다 ex)mylayer/
- BBFILES: 레이어에서 레시피 및 레시피 확장 파일들이 위치하고 있는 경로를 저장 (결론적으로 BBFILES에 지정된 경로에서 레시피파일(.bb)을 찾아낸다)
- BBFILE_COLLECTIONS: 레이어 이름들 모음
- BBFILE_PATTERN_xxxx: 존재하는 각각의 레이어의 레시피 파일이 저장된 경로 저장 (보통 정규표현식 사용)
- ^는 정규표현식 시작을 의미
- 결론적으로 사용하는 모든 LAYER 정보가 담긴 BBFILE_COLLECTIONS에서 실행하고 싶은 레이어를 선택한 후, 그 LAYER의 레시피 파일을 BBFILE_PATTERN으로부터 위치를 알아내어 해당 경로에 있는 재료를 통해 bitbake를 실행시켜서 결과물(artifacts: rootfs, kernel, boot image 등)을 얻는 것
- bitbake 동작 세부 과정 개요
- 일단 모든 레이어 등 정보를 BB환경변수에 할당
- 실행시키고 싶은 레이어가 동작할때 필요한 파일들을 BBFILE_PATTERN 정규표현식을 사용해서 다 찾아냄
- 그것들을 재료로 bitbake 실행
- bitbake.conf: 다양한 기본 환경 설정 파일(보통 산출물들을 어디에 저장할지를 정의)
- TOPDIR: 최상위 디렉터리
- PN: 레시피 파일의 이름 할당(package name)
- bitbake hello 명령어 사용시에 hello에 해당함
- TMPDIR: 빌드 작업 진행하면서 나오는 산출물들 저장하는 임시 디렉터리
- CACHE: 메타데이터 분석후 결과를 캐시에 기록하며 그 경로
- STAMP: 각각의 태스크가 수행 완료되면 stamp 파일 생성하며 그 경로
- 재빌드할 필요없는 태스크 구분하는 용도로 주로 사용
- T: 임시적으로 생성되는 파일(태스크 실행 로그, 태스크 스크립트 파일)
- 빌드 끝나면 필요 없음
- B: 객체(산출물)이 저장되는 디렉터리
- base.bbclass
- addtask do_build 문구 사용: addtask 지시어로 bitbake에 do_build라는 함수(태스크) 추가
- addtask, after, before 를 사용하여 태스크 체인 형성 가능(태스크 순서 지정)
- 함수 선언한다고 보면 됨. 내용 정의는 레시피 파일에서 함
- bitbake가 실행되려면 적어도 하나의 클래스 파일이 존재해야한다
- addtask do_build 문구 사용: addtask 지시어로 bitbake에 do_build라는 함수(태스크) 추가
- hello.bb
- 레시피 파일은 실제로 bitbake가 실행하는 주체
- PV(package version): 새 릴리즈나오면 버전 관리하는 숫자 ex) linux-yocto_5.4_r0.bb
- <package name>_<package_version>_<package_revision>.bb
- 패키지: 어떤 일을 하는 데 필요한 소프트웨어나 프로그램
- bitbake는 레시피파일을 빌드해서 결론적으로 패키지를 만들어냄
- yocto에서 패키지란
- 소프트웨어를 빌드하고 배포할때 사용되는 소프트웨어 모음
- 루트파일시스템에 설치될 수 있는 실행가능한 파일, 라이브러리, 설정파일, 문서 등을 포함
- 레시피
- 변수와 실행이 가능한 메타데이터가 모인 파일
- 레시피파일을 빌드해서 패키지를 만들어냄
- 보통 패키지와 레시피 이름이 같음
- 하나의 레시피 파일은 하나 이상의 패키지를 만들 수 있다
- bitbake 실행 절차 요약
- bitbake는 레시피파일 안의 태스크를 실행
- bitbake는 파이썬과 쉘스크립트로 만들어진 태스크 스케줄러로, 메타데이터 파일에서 정의한 태스크를 실행
- 메타데이터는 소프트웨어를 어떻게 빌드할지 그리고 빌드하려는 소프트웨어들 간에 어떤 의존성이 있는지 기술
출처: Udemy, "Yocto(욕토), 쉽게 이해하고 깊게 다루기", https://www.udemy.com/course/yocto-ae/
출처: 알라딘, "Yocto(욕토), 쉽게 이해하고 깊게 다루기", http://aladin.kr/p/b4Ddg
'빌드 시스템 > Yocto Project' 카테고리의 다른 글
요약 1. Yocto Project 개요 (1) | 2024.01.08 |
---|---|
Yocto(욕토), 쉽게 이해하고 깊게 다루기 with Udemy (0) | 2024.01.08 |