RaspberryPi4

Buildroot를 통해 RPI4 u-boot 부팅

728x90

이 글에서는 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

 

728x90