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
메뉴에서 다음 옵션을 설정합니다.
Bootloaders
→U-Boot
선택Board defconfig
를rockchip_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 및 커널 빌드, 루트 파일 시스템 구성, 네트워크 설정까지 다루었으며, 이와 유사한 다른 보드에도 적용할 수 있도록 설명하였습니다. 향후 추가적인 커스터마이징이나 성능 최적화 방법에 대한 내용을 다룰 예정이니 계속해서 참고해 주시기 바랍니다.
'Linux > buildroot' 카테고리의 다른 글
디바이스 트리(Device Tree) 설정 및 수정 (0) | 2025.04.29 |
---|---|
SD 카드 또는 eMMC에 Buildroot 이미지 굽기 (0) | 2025.04.28 |
Bootloader 커스터마이징 및 환경설정 (0) | 2025.04.26 |
Buildroot에서 커널 설정 및 패치 적용 방법 (0) | 2025.04.25 |
Buildroot에서 U-Boot 및 커널 빌드 과정 (0) | 2025.04.24 |