Linux/buildroot

Rockchip RK3399 등 특정 보드에 Buildroot 적용 예제

임베디드 친구 2025. 4. 27. 16:22
반응형

Rockchip RK3399 등 특정 보드에 Buildroot 적용 예제

1. 개요

Buildroot는 임베디드 시스템을 위한 경량의 루트 파일 시스템을 구성하는 강력한 도구입니다. 본 포스팅에서는 Rockchip RK3399 보드를 대상으로 Buildroot를 적용하는 과정을 다룹니다. RK3399 외에도 유사한 아키텍처를 가진 다른 보드에서도 응용할 수 있도록 설명하겠습니다.

2. Buildroot 환경 설정

Buildroot를 이용하여 특정 보드에 맞는 이미지 및 루트 파일 시스템을 생성하려면 환경 설정이 필요합니다.

2.1 Buildroot 다운로드

먼저, 최신 Buildroot를 다운로드합니다.

$ git clone https://git.buildroot.net/buildroot
$ cd buildroot
$ git checkout 2024.02  # 최신 안정 버전 선택

2.2 Buildroot 기본 설정

Buildroot에는 다양한 보드를 지원하는 기본적인 설정이 포함되어 있습니다. make menuconfig를 사용하여 설정할 수도 있지만, 특정 보드를 타겟으로 하는 경우 적절한 설정 파일을 불러와 시작하는 것이 효율적입니다.

예를 들어, RK3399의 기본 설정을 적용하려면 다음 명령어를 실행합니다.

$ make rockchip_rk3399_defconfig

이 기본 설정을 기반으로 추가적인 커스터마이징이 가능합니다.

3. 커널 및 부트로더 빌드

Buildroot를 사용하면 커널과 부트로더를 함께 빌드할 수 있습니다. RK3399는 U-Boot 부트로더를 사용하므로, 이에 대한 설정을 진행해야 합니다.

3.1 U-Boot 설정 및 빌드

U-Boot는 보드의 부팅을 담당하는 필수 요소입니다. 먼저, Buildroot의 menuconfig에서 U-Boot를 활성화해야 합니다.

$ make menuconfig

메뉴에서 다음 옵션을 설정합니다.

  • BootloadersU-Boot 선택
  • Board defconfigrockchip_rk3399로 지정
  • 추가적인 환경 설정 조정 가능

설정이 완료되면 빌드를 진행합니다.

$ make

3.2 커널 설정 및 빌드

RK3399의 기본 커널 설정을 적용하려면 다음 명령을 실행합니다.

$ make linux-menuconfig

여기에서 필요한 드라이버 및 추가 기능을 설정한 후 빌드를 진행합니다.

$ make

4. Root File System 구성

Root File System은 보드가 부팅 후 동작하기 위해 필요한 환경을 제공합니다. Buildroot는 자동으로 파일 시스템을 생성하지만, 추가적인 패키지를 설치하거나 특정 구성을 추가할 수도 있습니다.

4.1 패키지 추가

Buildroot의 menuconfig를 사용하여 필요한 패키지를 추가할 수 있습니다.

$ make menuconfig

패키지 관련 옵션은 Target Packages에서 설정할 수 있습니다. 예를 들어, networking applications에서 dropbear를 선택하면 SSH 서버가 포함됩니다.

4.2 커스텀 애플리케이션 추가

사용자 정의 애플리케이션을 포함하려면 package/ 디렉터리에 새로운 패키지를 추가해야 합니다.
예제 애플리케이션을 추가하는 과정은 다음과 같습니다.

$ mkdir -p package/myapp
$ touch package/myapp/Config.in
$ touch package/myapp/myapp.mk

Config.in 파일을 다음과 같이 작성합니다.

config BR2_PACKAGE_MYAPP
    bool "Enable my custom application"

myapp.mk 파일을 작성합니다.

MYAPP_VERSION = 1.0
MYAPP_SITE = $(TOPDIR)/../myapp
MYAPP_SITE_METHOD = local
MYAPP_INSTALL_TARGET = YES
$(eval $(generic-package))

이후 menuconfig에서 해당 패키지를 활성화하고 다시 빌드하면 패키지가 포함됩니다.

5. 이미지 생성 및 보드 플래싱

Buildroot 빌드가 완료되면 생성된 이미지를 SD 카드 또는 eMMC에 플래싱하여 사용할 수 있습니다.

5.1 생성된 이미지 확인

빌드가 완료되면 output/images/ 디렉터리에 필요한 파일들이 생성됩니다.

$ ls output/images/

주요 파일은 다음과 같습니다.

  • u-boot.bin: U-Boot 부트로더
  • Image: Linux 커널 이미지
  • rootfs.ext4: 루트 파일 시스템

5.2 SD 카드 또는 eMMC 플래싱

SD 카드에 이미지를 기록하려면 dd 명령을 사용할 수 있습니다.

$ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=4M status=progress
$ sync

/dev/sdX 부분을 실제 장치명으로 변경해야 합니다.

5.3 보드 부팅

SD 카드를 삽입한 후 보드를 부팅하면 Buildroot 기반의 커스텀 OS가 실행됩니다.

6. 네트워크 및 SSH 설정

보드에서 SSH 접속을 활성화하려면 dropbear 같은 경량 SSH 서버를 사용합니다. menuconfig에서 dropbear를 활성화하고, /etc/init.d/rcS에 다음과 같은 초기화 스크립트를 추가할 수 있습니다.

#!/bin/sh
mkdir -p /var/run
dropbear -E -B

이후, 보드에서 다음과 같은 명령으로 SSH 서버를 실행할 수 있습니다.

$ /etc/init.d/rcS

이제 원격에서 SSH를 통해 보드에 접속할 수 있습니다.

$ ssh root@<보드 IP>

7. 결론

이 포스팅에서는 Rockchip RK3399 보드를 대상으로 Buildroot를 적용하는 방법을 단계별로 설명하였습니다. U-Boot 및 커널 빌드, 루트 파일 시스템 구성, 네트워크 설정까지 다루었으며, 이와 유사한 다른 보드에도 적용할 수 있도록 설명하였습니다. 향후 추가적인 커스터마이징이나 성능 최적화 방법에 대한 내용을 다룰 예정이니 계속해서 참고해 주시기 바랍니다.

반응형