달력

52024  이전 다음

  • 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
  • 31

※ 출처 : makersweb(https://makersweb.net/embedded/13896) 에서 가져온 글

※ QT 또는 Embedde 관련 검색을 하다 보면 makersseb 의 글들이 간간이 보인다. 나한테는 나름 유용한 사이트이다. ^^

 

비트베이크 (bitbake):

포키 빌드 시스템의 태스크 스케줄러이다. 메타데이터를 파싱하고 태스크로 만들어 관리한다.

 

Metadata:

이미지를 빌드 할 때 BitBake가 분석하는 파일들을 말한다. 일반적으로 메타 데이터에는 레시피(.bb와 .bbappend파일), 클래스(.bbclass파일), 그리고 환경설정(.conf파일)이 있다.

 

poky:

Pah-kee로 발음되는 "poky"라는 용어는 여러 가지 의미가 있다. 가장 일반적인 의미에서, poky는 OpenedHand가 처음 개발 한 오픈 소스 프로젝트이다. OpenedHand는 기존의 OpenEmbedded 빌드 시스템에서 벗어나서 임베디드 리눅스 용으로 상업적으로 지원 가능한 빌드 시스템을 만들었다. poky 프로젝트는 Yocto Project의 빌드 시스템의 기초가 되었다. 

마지막으로, "poky"는 Yocto Project를 poky 저장소와 함께 사용하여 이미지를 빌드할 때 생성되는 기본 DISTRO (즉, 배포판)을 나타낼 수 있다.

 

Classes:

로직 캡슐화 및 상속을 제공하는 파일로 일반적으로 사용되는 패턴을 한 번 정의한 다음 여러 레시피에서 쉽게 사용할 수 있다.

Classes 파일은 .bbclass 파일 이름 확장자로 끝난다.

 

Configuration File(xxx.conf):

다양한 .conf 파일의 설정 정보는 변수의 전역 정의를 제공한다. Build Directory의 conf/local.conf 설정 파일에는 모든 빌드에 영향을 주는 사용자 정의 변수가 들어 있다.

meta-poky/conf/distro/poky.conf 설정 파일은 이 정책으로 빌드 할 때만 사용되는 Yocto "distro"설정 변수를 정의한다.

설정 파일은 .conf 파일 이름 확장명으로 끝난다.

 

Recipe:

패키지를 빌드하기 위한 명령어 세트.

레시피는 소스 코드를 어디에서 얻을 수 있는지, 적용 할 패치, 소스 설정 방법, 컴파일 방법 등을 설명한다. 

레시피는 또한 library 또는 다른 레시피에 대한 의존성을 설명한다.

레시피은 실행 논리 단위, 빌드 할 소프트웨어, 빌드 할 이미지를 표현하고, .bb 파일 확장명을 사용한다.

 

Image:

이미지는 레시피 모음 및 관련 메타 데이터가 제공된 BitBake 빌드 프로세스의 결과물(자동생성데이터)이다.

이미지는 특정 하드웨어 또는 QEMU에서 실행되는 바이너리 output이며 특정 유스케이스에 사용된다.

 

Layer:

core, BSP 또는 애플리케이션 스택을 나타내는 레시피 모음.

 

oe-init-build-env:

OpenEmbedded 빌드 환경을 설정하는 스크립트파일이다.

'karma( 업 ) > YOCTO' 카테고리의 다른 글

빌드 시스템-Yocto  (0) 2022.02.23
YOCTO 준비하기 - wsl2 에 Docker 설치하다.  (1) 2021.12.21
YOCTO 준비하기-win10에 wsl2 설치하다.  (0) 2021.12.20
Posted by 생짜
|

처음에 등장한 빌드 시스템은 uClib 프로젝트에 기원을 둔 빌드루트(buildroot)다.
빌드루트 초기 목표는 테스트로 uclibc 라이브러리 기반의 루트 파일 시스템을 생성하는 것이다.
빌드루트는 설정 도구로 kconfig와 Makefile 구조에 기반을 두고 있다. 빌드하기 전에 여러 소프트웨어 패키지에 
패치를 적용한다. 요즘 빌드루트는 여러 아키텍처를 지원하고 루트 파일 시스템, 커널, 부트로더 이미지를 빌드할 수 있다.


이후에 오픈임베디드(OpenEmbedded)가 나타났다. 리눅스 배포판 빌드를 위한 것이기 때문에 목적이 약간 달랐다. 오픈임베디드는 비트베이크(bitbake)빌드 엔진에 의해 해석한 레시피(recipe)에 기반을 둔다. 비트베이크는 Portage(젠투의 배포 패키지 관리자)에서 파생한 도구다. 오픈임베디드의 특징으로는 패키지들 사이에 의존성을 지정할 수 있고 나중에 비트베이크가 모든 레시피를 파싱하고 의존성을 만족하는 올바른 순서로 태스트( 오픈 임베디드에서 일의 단위) 큐를 생성한다는 점이다. 오픈임베디드로 만든 배포판으로는 Angstrom과 OpenMoko가 있다.

또 다른 오픈임베디드에 기반을 둔 배포판은 포키(Poky)리눅스이다. 포키는 욕토가 배포하는 방식으로 욕토 프로젝트의 레퍼런스 시스템이며, 툴과 메타데이터의 집합으로 구성된다.
포키는 욕토의 빌드 시스템이고 바탕에 오픈임베디드 코어 메타데이터(레시피, 클래스, 설정 파일)와 비트베이크 빌드 엔진을 사용한다.

욕토 프로젝트는 리눅스 기반의 임베디드 시스템 빌드에 도움을 주는 도구를 제공하는 것을 목표로 하는 오픈소스 프로젝트이다. 욕토 프로젝트 아래 포키, 비트베이크 빌드 엔진, 오픈임베디드 코어 같은 여러 소프트웨어 프로젝트가 있다. 

Posted by 생짜
|

일반적인 리눅스 기준으로 디렉토리 목록을 기술한다.

디렉토리 설명
/ 루트 디렉토리, 파일시스템의 시작점
/bin 시스템 부팅과 실행에 필요한 바이너리(프로그램)들을 포함하고 있다.
/boot 리눅스 커널, 시작 RAM 디스크 이미지(시스템 부팅 시 필요한 드라이버가 있음)와 부트로더를 포함하고 있다. 
/boot/grub/grub.conf 또는 menu.lst -> 부트로더 설정 파일
/boot/vmlinux -> 리눅스 커널
/dev 디바이스 노드를 갖고 있는 특수한 디렉토리, "모두 다 파일이다"라는 말에는 디바이스도 포함하고 있다. 이 디렉토리는 커널이 인식하고 있는 모든 디바이스들을 관리한다.
/etc 시스템 전반의 환경설정 파일이 들어있다. 또한 시스템 부팅 시에 시스템의 각 서비스를 시작하는 쉘 스크립 전부가 있다. 이 디렉토리의 모든 파일은 텍스트 형식이다.
/etc/crontab : 자동 실행되는 업무(job)를 정의하는 파일
/etc/fstab : 저장장치 테이블과 해당 마운트 포인트 정보
/etc/passwd : 사용자 계정 정보
/home 일반적인 설정 상태에서는 각 사용자마다 /home 디렉토리를 갖게 된다. 일반 사용자는 홈 디렉토리 내에서만 파일을 편집할 수 있으며 이러한 제한은 사용자의 잘못된 조작으로부터 시스템을 보호하기 위한 조치다.
/lib 주요 시스템 프로그램에서 사용하는 공유 라이브러리 파일이 저장되어 있다. 이는 윈도우의 DLL과 비슷한 것이다.
/lost+found 포맷된 각 파티션이나 ext3처럼 리눅스 파일시스템에서 사용하는 디바이스라면 이 디렉토리가 있다. 이것은 파일시스템에 문제가 생겼을 때 부분적인 복구를 도와준다. 시스템에 심각한 상황이 발생하지만 않는다면 이 디렉토리는 늘 비어있다.
/media 최신 리눅스 시스템에서 /media 디렉토리는 USB 드라이버, CD-ROM 등과 같은 휴대용 장치가 시스템에 연결될 때 자동으로 마운트되는 마운트 포인트는 여기에 저장된다.
/mnt 구식 리눅스 시스템에서 /mnt 디렉토리가 수동으로 휴대용 장치가 제거하니 위한 마운트 포인트를 저장한다.
/opt /opt 디렉토리는 추가적인 소프트웨어를 설치할 때 사용한다. 여기에 주로 상업용 소프트웨어가 설치된다.
/proc /proc 디렉토리는 특수하다. 하드 드라이브에 실제로 저장된 파일이라는 의미의 파일시스템이 아니라 이것은 리눅스 커널이 관리하는 가상 파일시스템을 말한다. 이곳에 저장된 것들은 커널 자체를 들여다 볼 수 있는 파일이다. 이 파일들은 텍스트 형식이고 커널이 컴퓨터는 어떻게 관리하고 있는지에 대한 단면을 보여줄 것이다.
/root 루트 계정의 홈 디렉토리이다.
/sbin 시스템 바이너리 파일들이 있다. 이 파일들은 일반적인 슈펴유저를 위한 중요한 시스템 작업을 수행하는 프로그램들이다.
/tmp /tmp 디렉토리는 임시 저장용 디렉토리다.  다양한 프로그램들에 의해서 만들어지는 임시 파일들을 저장하는 공간이다. 일부 설정 환경에서는 시스템이 재부팅할 때마다 이 디렉토리를 비우도록 하는 옵션이 있다.
/usr /usr 디렉토리 트리는 리눅스 시스템에서 가장 큰 트리 구조를 갖고 있다. 여기에는 일반 사용자가 사용하는 모든 프로그램과 지원 파일들이 모두 들어 있다.
/usr/bin 이 디렉토리에는 사용중인 리눅스 배포판이 설치한 실행 프로그램들이 있다. 여기는 일반적인 수많은 프로그램들을 저장하는 공간으로 사용되지 않는다.
/usr/lib /usr/bin 디렉토리에 있는 프로그램을 위한 공유 라이브러리가 있다.
/usr/local /usr/local 트리에는 일반적으로 사용하는 배포판 프로그래들 대신 시스템 전반에 걸쳐 사용되는 프로그램들이 저장되는 공간이다. 소스 코드로 컴파일된 프로그램은 주로 /usr/local/bin 디렉토리에 설치된다. 최신 리눅스 시스템에서는 이러한 트리가 존재하나 시스템 관리자가 이 디렉토리에 별도 작업을 하지 않는 이상 비어 있는 상태일 것이다.
/usr/sbin 시스템 관리 프로그램이 있다.
/usr/share /usr/share 디렉토리에는 /usr/bin 디렉토리에 있는 프로그램이 사용하는 공유 데이터를 저장하며 또한 디폴트 설정 파일, 아이콘, 스크린 배경화면, 음악 파일 등이 있다.
/usr/share/doc 시스템에 설치된 대부분의 패키지에는 문서파일이 포함되어 있다. /usr/share/doc 디렉토리에는 패키지 문서 파일이 저장된다.
/var /tmp 및 /home 디렉토리를 제외하면 지금까지 살펴본 대부분의 디렉토리들은 상대적으로 정적인 디렉토리들이다. 즉 디렉토리 내용이 거의 변하지 않는다는 것을 말한다. 그러한 점에서 /var 디렉토리 트리는 상대적으로 변하기 위훈 데이터를 모아두는 공간이다. 다양한 데이터베이스, 스폴 파일, 사용자 메일 등과 같은 데이터가 저장된다.
/var/log /var/log 디렉토리에는 시스템 활동을 기록하는 로그 파일이 들어 있다. 매시간마다 시스템 상황을 확인하는 매우 중요한 기록 파일이다. 그 중에서도 가장 유용한 것 하나가 /var/log/messages 디렉토리다. 보안상의 이유로 일부 시스템에서는 슈퍼유저 권한이 있어야만 로그 파일들을 확인할 수 있다.
Posted by 생짜
|