Linux/buildroot

기본 설정을 통한 RootFS 빌드 과정

임베디드 친구 2025. 4. 4. 09:03
728x90
반응형

기본 설정을 통한 RootFS 빌드 과정

Buildroot는 간단한 설정만으로도 최소한의 Root File System(RootFS)을 빌드할 수 있는 강력한 도구입니다. 이번 포스팅에서는 기본적인 설정을 통해 RootFS를 빌드하는 과정을 자세히 설명하겠습니다.

1. Buildroot 다운로드 및 준비

먼저 Buildroot를 공식 저장소에서 다운로드합니다.

# Buildroot 저장소 클론
git clone https://git.buildroot.net/buildroot
cd buildroot

# 최신 안정 버전 체크아웃 (예: 2024.02)
git checkout 2024.02

Buildroot는 다양한 패키지를 포함하고 있으므로, 빌드 전에 필요한 기본 패키지가 설치되어 있어야 합니다. Ubuntu/Debian 기반 시스템에서는 다음과 같이 의존성을 설치할 수 있습니다.

sudo apt update
sudo apt install -y build-essential bison flex libncurses5-dev \
    wget gawk git cpio unzip rsync file bc

2. Buildroot 기본 설정

Buildroot는 make menuconfig 명령을 통해 설정할 수 있습니다.

make menuconfig

이 명령을 실행하면 설정 메뉴가 나타나며, 여기서 다음 항목을 기본적으로 설정합니다.

  • Target Architecture: x86_64 (QEMU에서 테스트할 경우)
  • Build options: 빌드 디렉토리 설정
  • Filesystem images: ext4 선택
  • Bootloaders: GRUB2 선택 (x86_64 기준)

설정을 완료한 후 .config 파일을 저장하고 종료합니다.

3. RootFS 빌드 실행

이제 RootFS 빌드를 실행합니다.

make

빌드 과정은 시스템 성능에 따라 다소 시간이 걸릴 수 있으며, 완료되면 output/images 디렉토리에 결과물이 생성됩니다.

ls output/images/
bzImage  rootfs.ext4  boot.vfat  disk.img

이제 빌드된 RootFS를 활용하여 QEMU에서 실행할 수 있습니다.


QEMU를 이용한 테스트 환경 구축

RootFS를 빌드한 후, 이를 테스트하기 위한 QEMU 환경을 구성합니다.

1. QEMU 설치

먼저, QEMU를 설치합니다.

sudo apt install -y qemu-system-x86

2. QEMU를 이용한 RootFS 부팅

이제 빌드한 bzImagerootfs.ext4를 이용하여 QEMU에서 실행해 봅니다.

qemu-system-x86_64 -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext4,format=raw \
    -append "root=/dev/sda rw console=ttyS0" \
    -nographic

위 명령을 실행하면, 터미널에 커널 부팅 메시지가 출력되면서 Buildroot 기반의 간단한 시스템이 실행됩니다. 정상적으로 부팅되면 쉘 프롬프트가 나타납니다.

Welcome to Buildroot
buildroot login:

기본 로그인 계정은 root이며, 패스워드는 없습니다.

3. 네트워크 설정 (Optional)

QEMU에서 네트워크를 활성화하려면 다음과 같은 추가 옵션을 사용합니다.

qemu-system-x86_64 -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext4,format=raw \
    -append "root=/dev/sda rw console=ttyS0" \
    -netdev user,id=mynet0 -device e1000,netdev=mynet0 \
    -nographic

이 설정을 통해 QEMU 내에서 간단한 네트워크 연결이 가능합니다.


Buildroot로 생성한 이미지 부팅 테스트

Buildroot에서 생성한 이미지를 실제 하드웨어나 다른 에뮬레이터에서 실행할 수도 있습니다. 여기서는 USB 부팅을 위한 이미지를 생성하는 방법을 설명하겠습니다.

1. USB 부팅 이미지 생성

GRUB을 이용하여 USB 부팅이 가능한 이미지를 만들 수 있습니다. 이를 위해 disk.img를 생성하는 설정을 추가합니다.

make menuconfig
  • Bootloaders → GRUB2 활성화
  • Filesystem images → ext4 및 disk image 활성화

이후 다시 빌드를 실행하면 output/images/disk.img가 생성됩니다.

make
ls output/images/
bzImage  rootfs.ext4  boot.vfat  disk.img

2. USB 드라이브에 이미지 쓰기

생성된 이미지를 USB에 복사하여 부팅할 수 있습니다.

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

/dev/sdX는 USB 장치의 경로이므로 lsblk 명령으로 정확한 장치를 확인한 후 사용해야 합니다.

3. 실제 하드웨어에서 부팅 테스트

USB 드라이브를 부팅 가능한 장치로 설정한 후, 시스템을 재부팅하여 Buildroot 기반의 OS가 정상적으로 실행되는지 확인합니다.


마무리

이번 포스팅에서는 Buildroot를 이용하여 RootFS를 빌드하는 과정과, QEMU를 이용한 테스트 환경 구축 및 실제 하드웨어에서 실행하는 방법을 설명하였습니다.

반응형