Linux/buildroot

SD 카드 또는 eMMC에 Buildroot 이미지 굽기

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

SD 카드 또는 eMMC에 Buildroot 이미지 굽기

1. 개요

Buildroot를 이용하여 생성한 임베디드 리눅스 이미지를 실제 타겟 보드에서 실행하려면, 해당 이미지를 SD 카드 또는 eMMC에 기록해야 합니다. 이 과정에서는 Buildroot에서 생성한 파일들을 올바르게 배포하는 방법과, SD 카드 또는 eMMC에 이미지를 굽는 절차를 설명합니다.

2. Buildroot 이미지 구성

Buildroot에서 생성한 출력물은 output/images/ 디렉터리에 위치합니다. 일반적으로 다음과 같은 파일들이 존재합니다:

  • rootfs.ext4: 파일 시스템 이미지
  • zImage 또는 Image: 커널 이미지
  • bootloader (예: u-boot.bin): 부트로더 바이너리
  • sdcard.img: SD 카드에 바로 기록할 수 있는 전체 이미지 파일 (선택적)

3. SD 카드 또는 eMMC 준비하기

SD 카드 또는 eMMC에 이미지를 굽기 전에 다음 준비 과정이 필요합니다.

3.1. 디바이스 식별

리눅스 환경에서 lsblk 또는 fdisk -l 명령어를 사용하여 SD 카드 또는 eMMC의 디바이스 노드를 확인합니다.

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0  500G  0 disk
├─sda1        8:1    0  200G  0 part /
└─sda2        8:2    0  100G  0 part /home
mmcblk0     179:0    0  16G   0 disk
├─mmcblk0p1 179:1    0  100M  0 part /boot
└─mmcblk0p2 179:2    0  15.9G 0 part /

이 예제에서 SD 카드 또는 eMMC는 mmcblk0로 표시됩니다.

3.2. 파티션 테이블 생성

fdisk 또는 parted를 사용하여 SD 카드 또는 eMMC를 초기화하고 파티션을 생성합니다.

$ sudo fdisk /dev/mmcblk0
  • 기존 파티션 삭제 (d 키)
  • 새로운 파티션 생성 (n 키 -> p 키 -> 1 -> 엔터)
  • 부팅 가능한 파티션 설정 (a 키 -> 1 선택)
  • 변경사항 저장 (w 키)

4. Buildroot 이미지 굽기

4.1. SD 카드에 직접 이미지 쓰기

Buildroot가 sdcard.img 파일을 생성한 경우, dd 명령어를 이용해 SD 카드에 복사할 수 있습니다.

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

4.2. 개별 파일 복사 (부트로더, 커널, 루트 파일 시스템)

만약 sdcard.img가 없는 경우, 개별 파일을 수동으로 복사할 수도 있습니다.

4.2.1. 부트로더 설치

부트로더(U-Boot)를 SD 카드의 시작 부분에 기록합니다.

$ sudo dd if=output/images/u-boot.bin of=/dev/mmcblk0 bs=1K seek=8
$ sync

4.2.2. 부트 파티션 마운트 및 커널 복사

$ sudo mkfs.vfat /dev/mmcblk0p1
$ sudo mount /dev/mmcblk0p1 /mnt
$ sudo cp output/images/zImage /mnt/
$ sudo umount /mnt
$ sync

4.2.3. 루트 파일 시스템 설치

$ sudo mkfs.ext4 /dev/mmcblk0p2
$ sudo mount /dev/mmcblk0p2 /mnt
$ sudo tar -xvf output/images/rootfs.tar -C /mnt
$ sudo umount /mnt
$ sync

5. 부팅 및 확인

SD 카드 또는 eMMC를 타겟 보드에 삽입한 후, 보드를 부팅합니다.

터미널에서 시리얼 콘솔을 통해 부트 로그를 확인하고, 정상적으로 부팅되는지 검토합니다.

$ sudo minicom -D /dev/ttyUSB0 -b 115200

부팅 후 루트 파일 시스템이 정상적으로 마운트되었는지 확인합니다.

$ df -h

6. 결론

이 글에서는 Buildroot에서 생성한 이미지를 SD 카드 또는 eMMC에 굽는 방법을 설명하였습니다. dd 명령어를 사용한 전체 이미지 복사 방식과, 개별 파일을 복사하는 방법을 모두 다루었습니다. 이 과정을 통해 타겟 보드에서 Buildroot 기반 시스템을 정상적으로 부팅할 수 있습니다.

반응형