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 적용을 통해 부팅 시 브랜드 로고 표시 가능
'프로그래밍 > 시스템' 카테고리의 다른 글
U-Boot 포팅 (마무리 및 학습 자료 / 추가 학습을 위한 추천 실습) (0) | 2025.03.05 |
---|---|
U-Boot 포팅 (마무리 및 학습 자료 / U-Boot 공식 문서 및 관련 자료 정리) (0) | 2025.03.05 |
U-Boot 포팅 (실습 프로젝트: 새로운 보드에 U-Boot 포팅 / 최종 목표: 새로운 보드에서 U-Boot 및 리눅스 커널 부팅 성공) (0) | 2025.03.05 |
U-Boot 포팅 (실습 프로젝트: 새로운 보드에 U-Boot 포팅 / U-Boot 포팅 프로젝트 개요) (0) | 2025.03.05 |
U-Boot 포팅 (7. U-Boot 디버깅 및 문제 해결 / 부팅 실패 시 해결 방법) (0) | 2025.03.05 |