Linux/buildroot

Buildroot에서 사용자 정의 디렉터리 및 파일 추가 방법

임베디드 친구 2025. 4. 12. 14:38
728x90
반응형

Buildroot에서 사용자 정의 디렉터리 및 파일 추가 방법

1. 개요

Buildroot를 활용하여 Root File System을 커스터마이징할 때, 특정한 디렉터리 및 파일을 추가해야 하는 경우가 많습니다. 예를 들어, 애플리케이션 실행을 위한 설정 파일을 추가하거나, 특정 디렉터리를 미리 생성해 두어야 하는 경우가 있을 수 있습니다. 본 글에서는 Buildroot를 이용하여 사용자 정의 디렉터리 및 파일을 Root File System에 추가하는 방법을 자세히 설명하겠습니다.

2. Buildroot에서 Root File System 구성 개요

Buildroot는 Root File System을 생성할 때 target 디렉터리 내의 파일 시스템 트리를 기반으로 합니다. 또한, rootfs overlay 기능을 활용하여 사용자 정의 파일과 디렉터리를 추가할 수도 있습니다. 주로 사용하는 방법은 다음과 같습니다.

  • rootfs overlay 기능을 활용한 파일 추가
  • post-build 스크립트를 이용한 추가 방법
  • BR2_ROOTFS_OVERLAY 옵션을 활용하는 방법
  • 패키지를 생성하여 파일을 추가하는 방법

각 방법을 예제와 함께 설명하겠습니다.

3. rootfs overlay를 이용한 파일 및 디렉터리 추가

3.1 rootfs overlay 개념

Buildroot에서는 rootfs overlay라는 기능을 제공하며, 이는 특정 디렉터리를 Root File System에 그대로 복사하는 방식으로 동작합니다. 사용자가 원하는 파일 및 디렉터리를 overlay 디렉터리에 미리 생성해 두면, 빌드 시 해당 내용이 Root File System에 반영됩니다.

3.2 rootfs overlay 설정 방법

  1. Buildroot의 board 디렉터리 또는 프로젝트 폴더에 overlay 디렉터리를 생성합니다.

    mkdir -p board/custom_overlay/rootfs_overlay
  2. 원하는 파일 및 디렉터리를 생성합니다.

    mkdir -p board/custom_overlay/rootfs_overlay/etc/myconfig
    echo "Custom configuration" > board/custom_overlay/rootfs_overlay/etc/myconfig/config.txt
  3. BR2_ROOTFS_OVERLAY 설정을 활성화합니다.

    Buildroot의 menuconfig에서 다음 경로로 이동합니다.

    Filesystem images  --->
        [*] Root filesystem overlay directories

    그리고 board/custom_overlay/rootfs_overlay 경로를 추가합니다.

  4. 빌드를 수행하면 해당 파일과 디렉터리가 Root File System에 반영됩니다.

4. post-build 스크립트를 이용한 추가 방법

post-build 스크립트는 Buildroot가 Root File System을 생성한 후 실행되는 스크립트입니다. 이를 이용하면 파일 및 디렉터리를 동적으로 추가할 수 있습니다.

4.1 post-build 스크립트 생성 및 등록

  1. board/custom_overlay 디렉터리 내에 post-build.sh 파일을 생성합니다.

    mkdir -p board/custom_overlay
    touch board/custom_overlay/post-build.sh
    chmod +x board/custom_overlay/post-build.sh
  2. post-build.sh 파일을 편집하여 사용자 정의 디렉터리와 파일을 추가합니다.

    #!/bin/sh
    TARGET_DIR=$1
    
    mkdir -p $TARGET_DIR/etc/myconfig
    echo "Custom configuration" > $TARGET_DIR/etc/myconfig/config.txt
  3. Buildroot의 BR2_ROOTFS_POST_BUILD_SCRIPT 설정을 활성화합니다.

    make menuconfig
    Filesystem images  --->
        (board/custom_overlay/post-build.sh) Path to the post-build script
  4. 빌드를 수행하면 post-build.sh 스크립트가 실행되며, 파일 및 디렉터리가 추가됩니다.

5. 패키지를 이용한 추가 방법

만약 특정 애플리케이션과 함께 파일을 배포하려면, Buildroot 패키지를 생성하는 것이 좋은 방법입니다.

5.1 패키지 디렉터리 생성

  1. package/custom_package 디렉터리를 생성합니다.

    mkdir -p package/custom_package
  2. Config.in 파일을 생성하고 내용을 추가합니다.

    config BR2_PACKAGE_CUSTOM_PACKAGE
        bool "Custom Package"
  3. custom_package.mk 파일을 생성합니다.

    CUSTOM_PACKAGE_VERSION = 1.0
    CUSTOM_PACKAGE_SITE = $(TOPDIR)/package/custom_package
    CUSTOM_PACKAGE_SITE_METHOD = local
    
    define CUSTOM_PACKAGE_INSTALL_TARGET_CMDS
        mkdir -p $(TARGET_DIR)/etc/myconfig
        echo "Custom configuration" > $(TARGET_DIR)/etc/myconfig/config.txt
    endef
    
    $(eval $(generic-package))
  4. Buildrootmenuconfig에서 해당 패키지를 활성화합니다.

    make menuconfig
    Package Selection for the target  --->
        [*] Custom Package
  5. 빌드를 수행하면 해당 패키지가 자동으로 파일을 추가합니다.

6. 결론

Buildroot에서 사용자 정의 디렉터리 및 파일을 추가하는 방법은 여러 가지가 있으며, 프로젝트의 필요에 따라 적절한 방법을 선택하면 됩니다. rootfs overlay는 정적인 파일을 추가할 때 간단한 방법이며, post-build 스크립트는 빌드 과정에서 동적으로 파일을 추가하는데 유용합니다. 또한, 패키지를 이용하면 관리가 편리한 방식으로 파일을 추가할 수 있습니다.

본 가이드를 참고하여 사용자 정의 Root File System을 효과적으로 구성하시기 바랍니다.

반응형