# Yocto 프로젝트 소스 코드 다운로드

Yocto 프로젝트를 사용하여 임베디드 리눅스 배포판을 만들기 위해서는, 먼저 Yocto 프로젝트의 소스 코드를 다운로드해야 한다. 아래 단계별로 Yocto 프로젝트 소스 코드를 다운로드하는 방법을 설명하겠다.

#### 작업 디렉토리 생성

Yocto 프로젝트를 위한 작업 디렉토리를 생성한다.

```sh
mkdir -p ~/yocto
cd ~/yocto
```

#### Yocto 프로젝트 저장소 클론

Yocto 프로젝트에는 여러 개의 Git 저장소가 있다. 이 중에서 `poky`라는 메타 레이어가 기본 메타 레이어로 가장 기본적인 도구들과 레이어들을 포함하고 있다. `poky` 저장소를 클론하는 명령어는 다음과 같다:

```bash
git clone git://git.yoctoproject.org/poky
```

이 명령어를 실행하면 `poky` 디렉터리가 현재 작업 디렉터리에 생성되며, 이 안에 Yocto 프로젝트의 소스 코드가 포함된다.

#### 특정 브랜치 또는 태그 체크아웃

Yocto 프로젝트는 다양한 버전을 가지므로, 특정 브랜치나 릴리스 태그를 지정하여 클론할 수 있다. 예를 들어, "kirkstone" 버전을 사용하고 싶다면 다음과 같이 한다:

```bash
cd poky
git checkout -b yocto-kirkstone origin/kirkstone
```

#### Poky 디렉터리 구성

`poky` 디렉터리 안에는 여러 서브 디렉터리와 파일들이 있다. 주요 디렉터리 구조는 다음과 같다:

* **bitbake/**: BitBake 도구와 스크립트.
* **meta/**: 기본 메타데이터 레이어.
* **meta-yocto/**: Yocto 프로젝트 관련 메타데이터.
* **meta-yocto-bsp/**: 샘플 보드 지원 패키지(BSP) 메타데이터.

#### 추가 메타 레이어 다운로드

필요한 경우 프로젝트에 따라 추가 메타 레이어가 필요할 수 있다. 추가 메타 레이어를 다운로드하여 설정하는 방법은 다음과 같다:

1. **meta-openembedded**:

   ```bash
   git clone git://git.openembedded.org/meta-openembedded
   ```
2. **meta-raspberrypi**:

   ```bash
   git clone https://github.com/agherzan/meta-raspberrypi.git
   ```

추가 메타 레이어의 경로를 `bblayers.conf` 파일에 추가하여 빌드 환경을 설정한다.

```bash
vi conf/bblayers.conf
```

```plaintext
  BBLAYERS ?= " \
    /path/to/poky/meta \
    /path/to/poky/meta-poky \
    /path/to/meta-openembedded/meta-oe \
    /path/to/meta-raspberrypi \
  "
```

#### 주의 사항

* **패키지 충돌**: 호스트 시스템에 설치된 다른 패키지와의 충돌 가능성을 확인하라.
* **시스템 업데이트**: 최신 패키지로 시스템을 업데이트하면 빌드 과정에서 발생할 수 있는 많은 오류를 방지할 수 있다.

#### 환경 변수 설정

빌드 환경을 설정하기 위해 필요한 환경 변수를 설정한다. Yocto 프로젝트 빌드를 효과적으로 수행하기 위해 `oe-init-build-env` 스크립트를 사용한다:

```sh
source oe-init-build-env
```

이 스크립트는 설정 파일과 빌드 디렉토리 구조를 생성하며, `poky/build` 디렉토리를 기본 빌드 디렉토리로 설정한다. 빌드 디렉토리 이름을 지정하고 싶다면 명령 뒤에 원하는 디렉토리 이름을 추가할 수 있다:

```sh
source oe-init-build-env my-build-directory
```
