Linux/buildroot

Buildroot 파일 시스템 크기 최적화 기법

임베디드 친구 2025. 5. 6. 08:43
728x90
반응형

Buildroot 파일 시스템 크기 최적화 기법

개요

Buildroot를 이용해 임베디드 시스템을 구축할 때, 파일 시스템의 크기를 최적화하는 것은 매우 중요한 작업입니다. 특히, 저장 공간이 제한된 환경에서는 불필요한 파일을 줄이고, 필수적인 구성 요소만 유지하는 것이 필수적입니다. 본 글에서는 Buildroot에서 파일 시스템의 크기를 줄이는 다양한 기법에 대해 설명합니다.


1. 불필요한 패키지 제거

1.1 사용하지 않는 패키지 확인

Buildroot는 기본적으로 다양한 패키지를 포함하고 있습니다. 하지만 모든 패키지가 필요한 것은 아니므로 불필요한 패키지를 제거하면 상당한 용량을 절약할 수 있습니다.

  • make menuconfig 실행
  • Target Packages 메뉴에서 불필요한 패키지를 비활성화
  • Filesystem images 옵션에서 사용하지 않는 파일 시스템 포맷 제거
make menuconfig

1.2 BR2_PACKAGE_* 옵션 활용

Buildroot의 .config 파일을 직접 편집하여 패키지를 제거할 수도 있습니다. 예를 들어, Python 패키지를 사용하지 않는다면 다음과 같이 설정할 수 있습니다.

BR2_PACKAGE_PYTHON=n
BR2_PACKAGE_PYTHON3=n

2. 압축을 활용한 최적화

2.1 파일 시스템 압축

파일 시스템을 압축하면 크기를 줄일 수 있습니다. Buildroot에서는 여러 가지 압축 방식이 제공되며, 다음과 같은 옵션을 고려할 수 있습니다.

  • ext4 파일 시스템에서 gzip 또는 xz 압축 사용
  • squashfs 파일 시스템 사용
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_GZIP=y

2.2 BusyBox 크기 줄이기

BusyBox는 임베디드 시스템에서 많이 사용되는 경량화된 유틸리티 모음입니다. 불필요한 기능을 비활성화하면 실행 파일 크기를 줄일 수 있습니다.

make busybox-menuconfig

예를 들어, vi 편집기가 필요하지 않다면 다음과 같이 설정할 수 있습니다.

CONFIG_FEATURE_VI=n

3. 디버그 심볼 및 문서 제거

3.1 디버그 심볼 제거

컴파일 시 디버그 심볼을 제거하면 바이너리 크기를 줄일 수 있습니다. 다음과 같이 설정하면 디버그 정보를 포함하지 않은 상태로 빌드됩니다.

BR2_ENABLE_DEBUG=n
BR2_STRIP_STRIP=y
BR2_STRIP_EXCLUDE_FILES=""

3.2 문서 및 매뉴얼 제거

패키지 설치 시 매뉴얼과 문서 파일이 포함되는 경우가 많습니다. 이를 제거하면 파일 시스템 크기를 절약할 수 있습니다.

rm -rf /usr/share/doc /usr/share/man /usr/share/info

또는 Buildroot의 설정을 통해 이를 자동화할 수도 있습니다.

BR2_PACKAGE_DOC=n

4. 라이브러리 및 바이너리 크기 줄이기

4.1 정적 링크 활용

공유 라이브러리 대신 정적 링크를 사용하면 필요하지 않은 라이브러리 파일을 제거할 수 있습니다.

BR2_STATIC_LIBS=y

4.2 uClibc 또는 musl 사용

Buildroot는 glibc, uClibc, musl 등의 C 라이브러리를 지원합니다. 기본적으로 glibc는 크기가 크므로, uClibcmusl을 선택하면 더 작은 크기의 바이너리를 생성할 수 있습니다.

BR2_TOOLCHAIN_USES_MUSL=y

5. 루트 파일 시스템에서 불필요한 파일 제거

5.1 특정 디렉터리 삭제

일반적으로 필요하지 않은 로그 파일, 캐시 파일 등을 삭제하면 크기를 줄일 수 있습니다.

rm -rf /var/log/* /tmp/* /var/cache/*

5.2 기본 파일 시스템 크기 조정

파일 시스템 크기를 직접 설정할 수도 있습니다. 예를 들어 ext4 파일 시스템 크기를 32MB로 제한하는 경우:

BR2_TARGET_ROOTFS_EXT2_SIZE=32M

6. 커널 및 드라이버 최적화

6.1 커널에서 불필요한 모듈 제거

커널 빌드 설정을 최적화하면 루트 파일 시스템 크기를 줄일 수 있습니다. make linux-menuconfig를 실행하여 불필요한 드라이버와 기능을 비활성화할 수 있습니다.

make linux-menuconfig

예를 들어, 필요하지 않은 파일 시스템 지원을 비활성화할 수 있습니다.

CONFIG_NTFS_FS=n
CONFIG_ISO9660_FS=n

6.2 모듈 대신 빌트인 사용

일부 필수 드라이버를 모듈 대신 빌트인으로 설정하면 별도의 모듈 파일이 생성되지 않아 용량을 절약할 수 있습니다.

CONFIG_USB_STORAGE=y

결론

Buildroot에서 파일 시스템 크기를 최적화하는 방법에는 여러 가지가 있으며, 불필요한 패키지를 제거하고, 압축을 활용하며, 디버그 심볼과 문서를 제거하는 등의 기법을 통해 용량을 줄일 수 있습니다. 또한, 경량화된 라이브러리를 사용하고, 불필요한 커널 모듈을 제거하면 최적화된 임베디드 시스템을 구축할 수 있습니다. 각 프로젝트의 요구 사항에 맞춰 최적화 기법을 적용하여, 효율적인 파일 시스템을 구성하는 것이 중요합니다.

반응형