U-Boot 포팅 (9. 추가 심화 과정)

2025. 3. 5. 12:56프로그래밍/시스템

추가 심화 과정 (선택적 기능 확장)

U-Boot의 기본적인 포팅과 리눅스 커널 부팅이 완료되었다면, 추가적인 기능을 적용하여 시스템을 더욱 강력하게 만들 수 있습니다.
이 문서에서는 Fastboot 지원 추가, Secure Boot 및 Trusted Firmware 적용, UEFI 기능 활용, Custom Boot Logo 적용 방법을 설명합니다.


1. Fastboot 지원 추가

Fastboot는 안드로이드 개발 및 펌웨어 업데이트를 위한 빠른 플래싱 프로토콜입니다.
U-Boot에서 Fastboot를 지원하면 USB를 통해 펌웨어를 직접 업데이트하거나 플래시 메모리를 관리할 수 있습니다.

🔹 1) Fastboot 기능 활성화

📌 configs/myboard_defconfig에서 Fastboot 옵션 추가

CONFIG_CMD_FASTBOOT=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x80000000
CONFIG_FASTBOOT_BUF_SIZE=0x10000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=0

Fastboot를 활성화하면 U-Boot에서 fastboot 명령어를 사용할 수 있음


🔹 2) Fastboot 사용법

📌 USB를 통해 Fastboot 실행

fastboot 0

📌 호스트(PC)에서 Fastboot 사용

fastboot devices
fastboot flash boot zImage
fastboot reboot

이제 USB를 통해 U-Boot에서 직접 부팅 이미지 업데이트 가능


2. Secure Boot 및 Trusted Firmware 적용

Secure Boot는 부팅 과정에서 서명된 코드만 실행하도록 하여 보안성을 강화하는 기능입니다.
Trusted Firmware-A (TF-A)를 활용하면 ARM 기반의 신뢰할 수 있는 부팅 환경을 구축할 수 있습니다.

🔹 1) Secure Boot 활성화

📌 U-Boot에서 Secure Boot 지원 옵션 추가 (configs/myboard_defconfig)

CONFIG_SECURE_BOOT=y
CONFIG_FIT_SIGNATURE=y
CONFIG_RSA=y
CONFIG_SHA256=y

FIT 이미지(Firmware Image Tree) 서명을 활성화하여 무결성을 확인할 수 있음


🔹 2) FIT 이미지 서명 및 검증

📌 서명 키 생성

openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -in private.pem -pubout -out public.pem

📌 FIT 이미지 생성 및 서명

mkimage -f fit.its fitImage
mkimage -F -k keys -K fitImage -r fitImage

📌 U-Boot에서 Secure Boot 검증 실행

bootm verify=1

부팅 시 무결성 검증을 수행하여 보안 강화


3. UEFI 기능 활용

UEFI (Unified Extensible Firmware Interface)는 표준화된 부팅 인터페이스로, U-Boot에서도 이를 지원할 수 있습니다.
이를 통해 GRUB 부트로더 사용, 다중 부팅 지원, UEFI 애플리케이션 실행이 가능합니다.

🔹 1) UEFI 지원 활성화

📌 U-Boot에서 UEFI 기능 활성화 (configs/myboard_defconfig)

CONFIG_EFI=y
CONFIG_EFI_PARTITION=y
CONFIG_EFI_GRUB=y

이제 U-Boot에서 EFI 애플리케이션을 실행할 수 있음


🔹 2) GRUB 부팅 설정

📌 UEFI 모드에서 GRUB 부팅

setenv bootcmd 'load mmc 0:1 0x82000000 /EFI/BOOT/BOOTAA64.EFI; bootefi 0x82000000'
saveenv
reset

GRUB을 사용하여 다중 OS 부팅이 가능해짐


4. Custom Boot Logo 적용하기

U-Boot의 부팅 화면을 커스텀 로고로 변경하면 브랜드 아이덴티티를 강화할 수 있습니다.

🔹 1) BMP 이미지 준비

📌 BMP 이미지 파일 준비 (24비트, 800x480 해상도 예제)

  • logo.bmp 파일을 준비하여 U-Boot에서 불러올 수 있도록 /boot/ 경로에 저장

📌 U-Boot 환경 변수에서 로고 설정

setenv splashimage 0x82000000
setenv splashpos m,m
saveenv

🔹 2) U-Boot에서 로고 표시

📌 U-Boot에서 로고 불러오기

fatload mmc 0:1 0x82000000 /boot/logo.bmp
bmp display 0x82000000

📌 부팅 시 자동으로 로고 표시하도록 bootcmd 수정

setenv bootcmd 'fatload mmc 0:1 0x82000000 /boot/logo.bmp; bmp display 0x82000000; bootz 0x82000000 - 0x83000000'
saveenv
reset

부팅 시 커스텀 로고가 화면에 표시됨


📌 정리

Fastboot 지원을 추가하여 USB를 통한 빠른 펌웨어 업데이트 가능
Secure Boot 및 Trusted Firmware를 적용하여 부팅 보안 강화
UEFI를 활용하여 GRUB 부트로더 실행 및 다중 OS 지원
Custom Boot Logo 적용을 통해 부팅 시 브랜드 로고 표시 가능