Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

참조 보드 사용

Android 오픈소스 프로젝트(AOSP) 빌드 및 관련 하드웨어별 바이너리를 사용하여 Nexus 및 Pixel 기기용 빌드를 작성할 수 있습니다. 사용 가능한 Android 빌드 및 대상 기기는 소스 코드 태그 및 빌드를 참고하세요.

DragonBoard 845c, HiKey 960Khadas VIM3 Android 참조 보드용 빌드를 작성할 수도 있습니다. 이는 모바일이 아닌 구성요소 공급업체가 드라이버를 개발하고 Android 버전에 포팅하는 데 도움이 되도록 설계되었습니다. 참조 보드를 사용하면 업그레이드 작업을 간소화하고, 새로운 Android 기기의 출시 기간을 단축하며, ODM/OEM 업체가 호환되는 다양한 구성요소를 선택할 수 있도록 하여 기기 비용을 낮추고, 구성요소 공급업체 간의 혁신 속도를 높일 수 있습니다.

Google은 DragonBoard 845c, HiKey 960Khadas VIM3 Android 참조 보드를 지원합니다. AOSP는 이러한 보드용 커널 소스 및 보드 지원을 제공하므로 개발자는 주변기기 드라이버를 쉽게 생성 및 디버그하고 커널을 개발하며 OEM 방해가 적은 다른 작업을 처리할 수 있습니다.

DragonBoard 845c

DragonBoard 845c는 RB3 플랫폼의 일부로 96boards.org에서 사용할 수 있습니다.

Dragonboard 이미지

그림 1. DragonBoard 845c

사용자 공간 컴파일

다음 명령어를 사용하여 DragonBoard 845c에서 Android를 다운로드하고 빌드합니다.

  1. Android 소스 트리 다운로드:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 빌드:

    . ./build/envsetup.sh
    lunch db845c-userdebug
    make -j24
    

로컬 이미지 설치

  1. db845c를 빠른 부팅 모드(Fastboot mode)로 부팅합니다(DragonBoard 복구 참고).

  2. 다음 명령어를 실행합니다.

    ./device/linaro/dragonboard/installer/db845c/flash-all-aosp.sh
    

또는 db845c를 USB 플래시 모드로 부팅한 후 다음 스크립트를 실행하여 QDL 보드 복구를 실행할 수 있습니다.

./device/linaro/dragonboard/installer/db845c/recovery.sh

ci.android.com의 이미지 플래시

flash.android.com을 사용하여 ci.android.com에서 편리하게 최신 AOSP 빌드 아티팩트를 테스트할 수 있습니다. 빌드할 필요는 없지만, 시작하기 전에 미리 AOSP에서 최신 부트로더로 DragonBoard 845c를 플래시해야 합니다.

  1. 웹브라우저에서 flash.android.com으로 이동합니다.

  2. Get Started를 클릭한 후 1단계를 건너뜁니다(기기가 이미 개발자 모드이므로).

  3. available에서 DragonBoard 845c (db845c)를 찾습니다. 표시되지 않으면 + Add new device를 클릭한 후 목록에서 Android gadget 또는 Android device를 선택합니다.

  4. DragonBoard 845c (db845c)를 선택합니다.

  5. Select a build ID를 클릭한 후 최신 빌드를 선택합니다.

  6. Install을 클릭합니다.

  7. 나머지 안내에 따라 완료한 후 보드가 플래시되는 동안 기다립니다.

축하합니다. 이제 DragonBoard 845c에서 최신 AOSP 빌드가 실행됩니다.

커널 빌드

DragonBoard db845c Android GKI(Generic Kernel Image) 커널 아티팩트를 빌드하는 방법은 다음과 같습니다.

  1. 다음 명령어를 실행하여 커널 소스 및 사전 빌드된 Android 도구 모음과 빌드 스크립트를 복사합니다.

    mkdir repo-common
    cd repo-common
    repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
    repo sync -j8 -c
    rm -rf out
    BUILD_CONFIG=common/build.config.db845c ./build/build.sh
    
  2. ${AOSP_TOPDIR}device/linaro/dragonboard-kernel/android-mainline/의 객체를 모두 삭제한 후 out/android-mainline/dist/에서 ${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/로 빌드 아티팩트를 복사하고 다음을 사용하여 사용자 공간을 다시 빌드합니다.

    make TARGET_KERNEL_USE=mainline -j24
    

    그런 다음 새로운 커널로 기기를 플래시합니다(사용자 공간 컴파일 참고).

  3. 다음과 같이 GKI 커널을 테스트합니다.

    1. 최신 kernel_aarch64 빌드를 확인합니다.

    2. 아티팩트에서 Image.gz를 다운로드한 후 ${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/로 복사합니다.

    3. 기기를 새로운 커널로 빌드하고 플래시합니다(사용자 공간 컴파일 참고).

HiKey 960 보드

HiKey 960 보드는 Amazon 및 Lenovator에서 제공됩니다.

HiKey 960 보드 이미지

그림 2. Lenovator의 HiKey 960 보드

사용자 공간 컴파일

다음 명령어를 사용하여 HiKey 960 보드에서 Android를 다운로드하고 빌드합니다.

  1. Android 소스 트리 다운로드:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 빌드:

    . ./build/envsetup.sh
    lunch hikey960-userdebug
    make -j24
    

초기 이미지 설치

  1. 스위치 3을 켜서 빠른 부팅 모드(Fastboot mode)를 선택합니다. 자세한 내용은 HiKey 960 시작 가이드를 참고하세요.

  2. 보드 전원을 켭니다.

  3. 다음과 같이 초기 이미지를 플래시합니다.

    cd device/linaro/hikey/installer/hikey960
    
  4. 스위치 3을 끄고 보드의 전원을 껐다 켭니다.

이미지 플래시

  1. 스위치 3을 켜서 빠른 부팅 모드로 전환합니다.

  2. 다음 명령어를 실행하여 이미지를 플래시합니다.

    fastboot flash boot out/target/product/hikey960/boot.img
    
  3. 스위치 3을 끄고 보드의 전원을 껐다 켭니다.

커널 빌드

HiKey960 Android GKI 커널 아티팩트를 빌드하는 방법은 다음과 같습니다.

  1. 다음 명령어를 실행합니다.

    mkdir repo-common
    cd repo-common
    repo init -u https://android.googlesource.com/kernel/manifest -b common-android12-5.4
    repo sync -j8 -c
    rm -rf out
    BUILD_CONFIG=common/build.config.hikey960 build/build.sh
    
  2. ${AOSP_TOPDIR}device/linaro/hikey-kernel/hikey960/5.4/의 모든 객체를 삭제한 다음 out/android12-5.4/dist/의 커널 빌드에서 ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/로 빌드 아티팩트를 복사합니다.

  3. DTB를 연결합니다.

    cat device/linaro/hikey-kernel/hikey960/5.4/Image.gz
    device/linaro/hikey-kernel/hikey960/5.4/hi3660-hikey960.dtb  >
    device/linaro/hikey-kernel/hikey960/5.4/Image.gz-dtb
    
  4. Android 사용자 공간을 빌드합니다.

    lunch hikey960-userdebug
    make TARGET_KERNEL_USE=5.4 HIKEY_USES_GKI=true -j24
    

    그런 다음 새로운 커널로 기기를 플래시합니다(사용자 공간 컴파일 참고).

  5. GKI(Generic Kernel Image) 커널을 테스트합니다.

    • 최신 kernel_aarch64 빌드를 확인합니다.

    • 아티팩트에서 Image 파일을 다운로드하고 ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/에 복사합니다.

    • 이미지를 압축하고 DTB를 연결합니다.

    gzip ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image
    cat ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image.gz
    ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/hi3660-hikey960.dtb  >
    ${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/Image.gz-dtb
    

일련번호 설정

임의의 일련번호를 설정하려면 다음을 실행합니다.

  fastboot getvar nve:SN@16\_DIGIT\_NUMBER

부트로더는 생성된 일련번호를 androidboot.serialno=를 사용해 커널로 내보냅니다. 이 매개변수는 Android 11 및 이전 버전에서는 커널 명령줄을 통해 전달되고, Android 12(커널 버전 5.10 이상)에서는 bootconfig를 통해 전달됩니다.

모니터 해상도 설정

device/linaro/hikey/hikey960/BoardConfig.mk 매개변수 BOARD_KERNEL_CMDLINE을 수정하고 video 설정을 구성합니다. 예를 들어, 24인치 모니터의 설정은 video=HDMI-A-1:1280x800@60입니다.

VIM3 및 VIM3L 보드

Khadas의 Vim3 및 VIM3L 보드는 Khadas 웹사이트에서 제공됩니다.

VIM3 보드 이미지

그림 3. Khadas의 VIM3 보드

사용자 공간 컴파일

다음 명령어를 사용하여 VIM3 보드에서 Android를 다운로드하고 빌드합니다.

  1. Android 소스 트리 다운로드:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 빌드:

    . ./build/envsetup.sh
    lunch yukawa-userdebug
    make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true -j24
    

    기본적으로 Android는 4.19 커널로 빌드됩니다. 커널 5.4 사전 빌드 기능을 사용하려면 다음을 실행합니다.

    make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true TARGET_KERNEL_USE=5.4 -j24
    

    VIM3L의 경우 다음을 사용합니다.

    make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3L=true -j24
    

초기 이미지 설치

  1. VIM3 플래시 안내를 따라 보드를 USB 업그레이드 모드로 전환합니다.

  2. 초기 이미지를 RAM에 플래시합니다.

    cd path/to/aosp/device/amlogic/yukawa/bootloader/
    ./tools/update write u-boot_kvim3_noab.bin 0xfffa0000 0x10000
    ./tools/update run 0xfffa0000
    ./tools/update bl2_boot u-boot_kvim3_noab.bin
    
    • 권한 문제가 발생하는 경우 udev 규칙 섹션을 참고하여 적절한 USB 규칙을 추가합니다.
    • tools/update가 작동하지 않는 경우 pyamlboot 도구를 사용하여 보드를 플래시합니다.
  3. U-Boot가 부팅되고 빠른 부팅을 실행한 후 다음 명령어를 실행합니다.

    fastboot oem format
    fastboot flash bootloader u-boot_kvim3_noab.bin
    fastboot erase bootenv
    fastboot reboot bootloader
    
  4. 전원 케이블을 분리한 후 다시 연결합니다.

보드는 방금 플래시된 U-boot로 부팅되고 빠른 부팅 모드(Fastboot mode)로 진입해야 합니다.

이미지 플래시

  1. 빠른 부팅 모드(Fastboot mode)로 진입합니다(자세한 내용은 이전 섹션 참고).

  2. 모든 Android 이미지 플래시:

    cd out/target/product/yukawa
    fastboot flash boot boot.img
    fastboot flash super super.img
    fastboot flash cache cache.img
    fastboot flash userdata userdata.img
    fastboot flash recovery recovery.img
    fastboot flash dtbo dtbo-unsigned.img
    fastboot reboot
    

커널 빌드

VIM3 또는 VIM3L용 커널 아티팩트를 빌드하려면 다음 안내를 따르세요.

  1. 추가 도구 모음을 다운로드합니다.

    cd ${AOSP_TOPDIR}
    git clone https://android.googlesource.com/platform/prebuilts/gas/linux-x86 prebuilts/gas/linux-x86
    
  2. 커널 소스를 복사합니다.

    # for 4.19
    git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-4.19
    # for 5.4
    git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.4
    
  3. 빌드 변수를 내보냅니다.

    export PATH=${AOSP_TOPDIR}/prebuilts/clang/host/linux-x86/clang-r399163b/bin:$PATH
    export PATH=${AOSP_TOPDIR}/prebuilts/gas/linux-x86:$PATH
    export PATH=${AOSP_TOPDIR}/prebuilts/misc/linux-x86/lz4:$PATH
    export ARCH=arm64
    export CROSS_COMPILE=aarch64-linux-gnu-
    export LLVM=1
    
  4. 커널을 빌드합니다.

    cd hikey-linaro
    make meson_defconfig
    make DTC_FLAGS="-@" -j24
    
  5. 커널을 압축하고 build_artifacts를 ${AOSP_TOPDIR}/device/amlogic/yukawa-kernel에 복사합니다.

    lz4c -f arch/arm64/boot/Image arch/arm64/boot/Image.lz4
    KERN_VER=4.19 # for 4.19 kernel
    KERN_VER=5.4  # for 5.4 kernel
    for f in arch/arm64/boot/dts/amlogic/*{g12b-a311d,sm1}-khadas-vim3*.dtb; do
        cp -v -p $f ${AOSP_TOPDIR}/device/amlogic/yukawa-kernel/${KERN_VER}/$(basename $f)
    done
    cp -v -p arch/arm64/boot/Image.lz4 ${AOSP_TOPDIR}/device/amlogic/yukawa-kernel/${KERN_VER}/Image.lz4
    
  6. Android 사용자 공간을 다시 빌드하고(사용자 공간 컴파일 참고) 새 커널을 플래시합니다(이미지 플래시 참고).