이 글에서는 Raspberry Pi에 Buildroot를 설정하고 U-boot를 통해 커널을 로드하는 방법을 안내합니다.전
이 가이드를 실행하려면 Raspberry Pi에 직렬 콘솔 연결이 필요합니다. 또한 네트워크를 통해 부팅하려면 TFTP 서버가 필요합니다.
테스트 환경
- Ubuntu 22.04
- Raspberry Pi 4
Buildroot로 이미지 빌드
Buildroot 프로젝트를 다운
git clone https://github.com/buildroot/buildroot.git
cd buildroot
다음으로, 보드에 맞는 defconfig를 선택합니다.
make raspberrypi4_64_defconfig
다음으로 메뉴를 통해 빌드 시스템에서 몇 가지 사항을 구성해보겠습니다.
make menuconfig
Bootloader → U-Boot 활성화

이미지 빌드
make -j$(nproc)
완료 후 생성 파일:
output/images/sdcard.img
SD 카드에 이미지 굽기
lsblk # SD 카드 위치 확인
sudo dd if=output/images/sdcard.img of=/dev/sdX bs=4M status=progress
sync
config.txt 수정
/boot/config.txt
수정 내용:
# ---------------------
# Boot U-Boot on RPi4
# ---------------------
kernel=u-boot.bin
Raspberry Pi 4 부팅
아래 Header Pin 구성을 확인하여 Uart to USB 장치를 연결해준다.

연결 후 부팅하면 아래 로그창이 나오게 된다.

U-Boot Shell에서 수동 부팅
SD 카드 이미지의 커널을 로드:
fatload mmc 0 ${kernel_addr_r} Image
booti ${kernel_addr_r} - ${fdt_addr}

TFTP 부팅 예시:
dhcp ${kernel_addr_r} Image
booti ${kernel_addr_r} - ${fdt_addr}
setenv serverip '10.0.0.1'
setenv ipaddr '10.0.0.101'
tftp ${kernel_addr_r} Image
booti ${kernel_addr_r} - ${fdt_addr}
재부팅 후에 는 모든 setenv 설정이 사라집니다. saveenv를 사용하여 설정을 저장합니다.
참고:
https://casan.se/blog/linux/buildroot-and-u-boot-on-raspberry-pi/
Buildroot and U-boot on Raspberry Pi | Casper Andersson
This post guides you through setting up Buildroot together with U-boot on your Raspberry Pi and loading a kernel through U-boot (rootfs is separate and still needs to be flashed). Having a dedicated bootloader allows controlling the boot process without ha
casan.se
'RaspberryPi4' 카테고리의 다른 글
| RaspberryPi - MQTT(Mosquit (0) | 2021.09.26 |
|---|---|
| 라즈베리파이 - 실시간 웹 스트리밍(pi-camera-streaming-flask) (0) | 2021.07.23 |
| 라즈베리파이 - 실시간 웹 스트리밍(MJPG-Streamer) (0) | 2021.07.22 |
| 라즈베리파이 - 실시간 웹 스트리밍(UV4L) (1) | 2021.07.21 |
| 라즈베리 파이 - 실시간 웹 스트리밍(AWS-Kinesis Video Stream) (0) | 2021.07.20 |