10-27 12:45
Recent Posts
Recent Comments
관리 메뉴

너와나의 관심사

U-Boot / Linux kernel early boot 단계 본문

카테고리 없음

U-Boot / Linux kernel early boot 단계

벤치마킹 2026. 5. 9. 01:21
반응형

1. U-Boot 단계

U-Boot는 부트로더 역할을 한다. 이 단계에서는 DRAM, 저장장치, 콘솔, 디바이스 트리, 커널 이미지, ramdisk를 준비한다.

현재 FVP 로그에서는 다음이 확인된다.

U-Boot 2023.04
DRAM 초기화
MMC 인식
non-AVB Android boot 선택
Linux Image 이동
Total Compute Ramdisk 로드
FDT(Device Tree) 로드
Starting kernel
 

업로드된 로그에서도 U-Boot가 booting non-avb android를 수행하고, kernel image, ramdisk, FDT를 로드한 뒤 Starting kernel로 넘어간다.

이 단계의 핵심 역할은 다음과 같다.

항목설명
DRAM 초기화 커널과 ramdisk를 올릴 메모리 준비
Kernel image 로드 Linux kernel을 메모리에 배치
Ramdisk 로드 Android first-stage init이 포함된 초기 rootfs 제공
DTB/FDT 로드 하드웨어 구성 정보를 kernel에 전달
Kernel command line 전달 console, androidboot.hardware, SELinux, IOMMU 옵션 전달
Kernel jump CPU 제어권을 Linux kernel entry point로 넘김

현재 로그의 kernel command line에는 다음과 같은 Android/FVP 관련 옵션이 포함되어 있다.

androidboot.hardware=total_compute
androidboot.boot_devices=1c050000.mmci
androidboot.selinux=permissive
iommu.passthrough=1
 

이 값들은 이후 init, SELinux, fs_mgr, Android hardware 선택에 영향을 준다.


2. Linux kernel early boot 단계

U-Boot가 kernel에 제어권을 넘기면 Linux kernel이 실행된다.

이 단계에서는 CPU, 메모리, interrupt controller, timer, scheduler, device driver, block device, network, display, input 장치 등이 초기화된다.

현재 로그에서는 다음이 확인된다.

Booting Linux on physical CPU 0
Linux version 6.1.0-dirty
Machine model: arm,tc
GICv3 초기화
8개 CPU 활성화
SMMU 초기화
virtio block 인식
network device 인식
display DRM/KMS 초기화
keyboard / mouse input device 인식
 

특히 FVP에서는 다음 장치들이 kernel 단계에서 이미 보인다.

장치로그상 의미
GICv3 interrupt controller 초기화
arch timer kernel scheduler timer 기반
SMMU IOMMU / DMA address translation
virtio block Android system/data/vendor 이미지가 올라간 block device
Komeda / Mali-D71 display controller
Mali GPU GPU kernel driver
PL011 UART console
keyboard/mouse input device

현재 로그에서는 virtio_blk가 /dev/vda를 만들고 vda1, vda2, vda3 파티션을 인식한다. 이 파티션들이 이후 /system, /data, /vendor 등의 Android 파티션으로 사용된다.


Comments