RK3399 이미지 커스터마이징
1. 개요
Yocto 프로젝트를 활용하면 임베디드 시스템을 위한 맞춤형 리눅스 배포판을 생성할 수 있습니다. 이 글에서는 Rockchip RK3399를 대상으로 Yocto 기반 이미지를 커스터마이징하는 방법을 설명합니다. 주요 작업으로는 local.conf
와 bblayers.conf
설정, 기본 패키지 추가 및 제거, 부트로더와 커널 설정 방법을 다룰 예정입니다.
2. Yocto 환경 준비 확인
이미 Yocto 빌드 환경은 이전 포스팅에서 설명한 대로 설정되어 있다고 가정합니다. RK3399용 Yocto 프로젝트 디렉터리(build
디렉터리)로 이동한 상태에서 작업을 진행하면 됩니다.
cd ~/yocto/build
3. local.conf
설정
local.conf
는 Yocto 빌드의 전반적인 구성을 제어하는 파일입니다. 주로 이미지 유형, 타겟 머신, 병렬 빌드 설정 등을 정의합니다.
3.1 기본 설정
conf/local.conf
파일을 열어 다음과 같이 주요 설정을 확인하고 수정합니다.
vim conf/local.conf
다음과 같은 항목을 수정합니다.
# 타겟 머신 설정
MACHINE ??= "rk3399"
# 병렬 빌드 설정 (CPU 코어 수에 맞게 설정)
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j8"
# 이미지 타입 설정
IMAGE_FSTYPES = "ext4 tar.gz"
# 루트 파일 시스템 크기 설정
IMAGE_ROOTFS_SIZE = "81920"
# 소스 코드 보존 (디버깅을 위해)
INHERIT += "rm_work"
3.2 주요 설정 항목 설명
- MACHINE: 타겟 보드를 지정합니다. RK3399의 경우
rk3399
로 설정합니다. - BB_NUMBER_THREADS: 빌드 시 사용할 BitBake 작업 수입니다. CPU 코어 수와 동일하게 설정하는 것이 좋습니다.
- PARALLEL_MAKE:
make
명령어에 전달할 병렬 작업 수입니다. - IMAGE_FSTYPES: 생성할 이미지 형식을 지정합니다. 일반적으로 ext4와 tar.gz 형식을 많이 사용합니다.
- IMAGE_ROOTFS_SIZE: 생성될 루트 파일 시스템의 기본 크기를 KB 단위로 지정합니다.
- INHERIT += "rm_work": 빌드 완료 후 임시 작업 파일을 제거하는 설정입니다.
4. bblayers.conf
설정
bblayers.conf
파일은 Yocto 빌드 시 사용할 레이어를 정의하는 파일입니다. RK3399에 필요한 레이어를 설정하는 방법은 다음과 같습니다.
vim conf/bblayers.conf
아래와 같이 레이어 경로를 추가합니다.
BBLAYERS ?= " \
${TOPDIR}/../meta \
${TOPDIR}/../meta-poky \
${TOPDIR}/../meta-openembedded \
${TOPDIR}/../meta-rockchip \
"
주요 레이어 설명
- meta: Yocto의 기본 메타 레이어입니다.
- meta-poky: Poky 빌드 시스템과 관련된 레이어입니다.
- meta-openembedded: 추가 패키지와 유틸리티를 제공하는 레이어입니다.
- meta-rockchip: Rockchip 보드를 위한 BSP(Board Support Package) 레이어입니다.
5. 기본 패키지 추가 및 제거
이미지에 포함될 패키지를 관리하려면 해당 이미지 레시피 파일이나 local.conf
에서 IMAGE_INSTALL
변수를 사용합니다.
5.1 패키지 추가
예를 들어, nano
, htop
, wget
등의 유틸리티를 추가하고 싶다면 local.conf
파일에 다음과 같이 설정합니다.
IMAGE_INSTALL:append = " nano htop wget"
5.2 패키지 제거
불필요한 패키지를 제거하려면 다음과 같이 설정합니다.
IMAGE_INSTALL:remove = "package_name"
5.3 패키지 리스트 확인
Yocto에서 제공하는 패키지 목록을 확인하려면 다음 명령어를 실행합니다.
bitbake -s
6. 부트로더 및 커널 설정
RK3399의 부트로더는 U-Boot를 사용하며, 커널 설정은 Yocto의 커널 레시피를 통해 관리됩니다.
6.1 부트로더 설정
U-Boot 설정은 meta-rockchip
레이어 내의 recipes-bsp/u-boot
디렉터리에서 관리됩니다. 기본 설정을 수정하려면 U-Boot 환경변수 설정 파일을 편집합니다.
vim meta-rockchip/recipes-bsp/u-boot/u-boot-rockchip_%.bbappend
아래와 같이 부트 인자를 추가하거나 수정합니다.
EXTRA_OECONF:append = " --with-spl --with-tpl"
6.2 커널 설정
커널 설정은 meta-rockchip
레이어의 linux-rockchip
레시피에서 관리됩니다.
vim meta-rockchip/recipes-kernel/linux/linux-rockchip_%.bbappend
defconfig
파일을 수정해 필요에 따라 커널 모듈을 활성화합니다.
bitbake virtual/kernel -c menuconfig
메뉴에서 필요한 모듈을 선택하고, 설정을 저장하면 .config
파일이 생성됩니다.
7. 이미지 빌드
모든 설정이 완료되었으면 BitBake를 사용해 이미지를 빌드합니다.
bitbake core-image-minimal
빌드가 완료되면 아래 경로에서 이미지를 확인할 수 있습니다.
ls tmp/deploy/images/rk3399/
8. SD 카드에 이미지 쓰기
생성된 이미지를 SD 카드에 플래시하려면 dd
명령어를 사용합니다.
sudo dd if=core-image-minimal-rk3399.ext4 of=/dev/sdX bs=4M status=progress
sync
/dev/sdX
는 SD 카드의 디바이스 경로입니다. 정확히 확인한 후 진행해야 데이터 손상을 방지할 수 있습니다.
9. 부팅 및 검증
이미지를 플래시한 후 RK3399 보드에 SD 카드를 삽입하고 부팅합니다. 부팅이 완료된 후 시리얼 콘솔이나 SSH로 접근하여 시스템을 확인합니다.
ssh root@<보드_IP주소>
정상적으로 부팅되면 Yocto 기반의 커스텀 이미지를 RK3399에서 성공적으로 실행한 것입니다.
10. 마무리
이 포스팅에서는 Yocto를 활용하여 RK3399용 커스텀 이미지를 빌드하고, local.conf
와 bblayers.conf
설정, 기본 패키지 추가/제거, 부트로더 및 커널 설정 과정을 다루었습니다.
'Linux > yocto' 카테고리의 다른 글
Yocto 커스텀 레이어: 애플리케이션과 라이브러리 레시피 작성 (0) | 2025.05.16 |
---|---|
Yocto RK3399 커스텀 Layer 생성 (0) | 2025.05.15 |
Yocto 기본 빌드 프로세스 이해 (2) - Bitbake 기본 사용법, 이미지와 패키지 빌드, 작업 디렉터리 및 로그 분석 (0) | 2025.05.13 |
Yocto의 주요 구성 요소 이해 (0) | 2025.05.12 |
Yocto 프로젝트 클론 및 첫 빌드 (0) | 2025.05.11 |