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 기반 시스템을 정상적으로 부팅할 수 있습니다.
'Linux > buildroot' 카테고리의 다른 글
Buildroot 기반의 시스템 OTA 업데이트 방법 (0) | 2025.04.30 |
---|---|
디바이스 트리(Device Tree) 설정 및 수정 (0) | 2025.04.29 |
Rockchip RK3399 등 특정 보드에 Buildroot 적용 예제 (0) | 2025.04.27 |
Bootloader 커스터마이징 및 환경설정 (0) | 2025.04.26 |
Buildroot에서 커널 설정 및 패치 적용 방법 (0) | 2025.04.25 |