이 페이지에서는 Cuttlefish 기기에서 Android 부트로더 기능을 빌드, 실행, 개발하는 방법을 설명합니다.
AOSP 소스
Android 부트로더 기능을 개발하려면 Cuttlefish가 aosp-main
또는 일반 시스템 이미지(GSI)(Android 11 및 이후 버전)에 있는 U-boot의 Cuttlefish 구성을 사용하세요. 다음은 AOSP의 소스입니다.
부트로더 개발
부트로더 기능을 로컬에서 빌드, 실행, 개발하려면 다음 단계를 따르세요.
U-boot의 Android 포크에 매니페스트를 클론합니다.
$ mkdir u-boot-mainline $ cd u-boot-mainline $ repo init -u https://android.googlesource.com/kernel/manifest -b u-boot-mainline $ repo sync -j$(nproc) -q
Cuttlefish 아키텍처에 적합한 부트로더 타겟을 빌드합니다. 예:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_dist
aarch64
$ tools/bazel run //u-boot:crosvm_aarch64_dist
결과로 생성되는 부트로더 바이너리(arm64:
u-boot.bin
, x86_64:u-boot.rom
)는$PATH_TO_REPO/out/u-boot-mainline/dist
에서 찾을 수 있습니다.부트로더가 적용된 Cuttlefish 기기를 실행합니다. 자동 부팅을 중지하고 부트로더와 직접 상호작용할 수 있도록
pause_in_bootloader
매개변수를 포함합니다.$ launch_cvd \ -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \ -pause_in_bootloader -console=true
부트로더 콘솔에 접속하여 부트로더와 상호작용합니다.
$ screen ~/cuttlefish_runtime/console
부트로더 상호작용이 완료되면 콘솔에
boot
을 입력하여 부팅을 계속합니다.
여러 커널을 사용하여 부트로더 흐름 테스트
여러 커널 또는 커널 모듈을 사용하여 부트로더 흐름을 테스트하려면 --kernel_path
및 --initramfs_path
인수를 사용하여 타겟 아티팩트(커널 및 커널 모듈)를 전달합니다. 어셈블러가 인수로 전달된 아티팩트를 기반으로 부트 이미지를 다시 패킹합니다.
cvd start \
-kernel_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/bzImage \
-initramfs_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/initramfs.img
자세한 내용은 Android 커널 개발을 참고하세요.