Android 오픈소스 프로젝트(AOSP) 빌드 및 관련 하드웨어별 바이너리를 사용하여 Nexus 및 Pixel 기기용 빌드를 작성할 수 있습니다. 사용 가능한 Android 빌드 및 대상 기기는 소스 코드 태그 및 빌드를 참고하세요.
DragonBoard 845c, HiKey 960, Khadas VIM3 및 Qualcomm Robotics Board RB5 Android 참조 보드용 빌드를 작성할 수도 있습니다. 이는 모바일이 아닌 구성요소 공급업체가 드라이버를 개발하고 Android 버전에 포팅하는 데 도움이 되도록 설계되었습니다. 참조 보드를 사용하면 업그레이드 작업을 간소화하고, 새로운 Android 기기의 출시 기간을 단축하며, ODM/OEM 업체가 호환되는 다양한 구성요소를 선택할 수 있도록 하여 기기 비용을 낮추고, 구성요소 공급업체 간의 혁신 속도를 높일 수 있습니다.
Google은 DragonBoard 845c, HiKey 960, Khadas VIM3 및 Qualcomm Robotics Board RB5 Android 참조 보드를 지원합니다. AOSP는 이러한 보드용 커널 소스 및 보드 지원을 제공하므로 개발자는 주변기기 드라이버를 쉽게 생성 및 디버깅하고 커널을 개발하며 OEM 방해가 적은 다른 작업을 처리할 수 있습니다.
DragonBoard 845c
DragonBoard 845c는 RB3 플랫폼의 일부로 96boards.org에서 사용할 수 있습니다.
그림 1. DragonBoard 845c
사용자 공간 컴파일
다음 명령어를 사용하여 DragonBoard 845c에서 Android를 다운로드하고 빌드합니다.
Android 소스 트리 다운로드:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
현재 공급업체 패키지 다운로드:
./device/linaro/dragonboard/fetch-vendor-package.sh
AOSP 빌드:
. ./build/envsetup.sh
lunch db845c-userdebug
make -j24
로컬 이미지 설치
db845c를 빠른 부팅 모드(Fastboot mode)로 부팅합니다.
다음 명령어를 실행합니다.
./device/linaro/dragonboard/installer/db845c/flash-all-aosp.sh
필요한 경우 USB 플래시 모드로 db845c를 부팅한 후 다음 스크립트를 실행하여 QDL 보드 복구를 실행할 수 있습니다(DragonBoard 복구 참고).
./device/linaro/dragonboard/installer/db845c/recovery.sh
커널 빌드
DragonBoard db845c Android GKI(Generic Kernel Image) 커널 아티팩트를 빌드하는 방법은 다음과 같습니다.
다음 명령어를 실행하여 커널 소스 및 사전 빌드된 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
${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
그리고 결과 boot.img 및 super.img로 기기를 플래시합니다(사용자 공간 컴파일 참고).
다음과 같이 GKI 커널을 테스트합니다.
최신 kernel_aarch64 빌드를 확인합니다.
아티팩트에서 이미지를 다운로드합니다.
이미지를 Gzip으로 압축합니다.
gzip Image
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
에 복사합니다.AOSP를 다시 빌드하고 새 boot.img로 기기를 플래시합니다(사용자 공간 컴파일 참고).
HiKey 960 보드
HiKey 960 보드는 Amazon 및 Lenovator에서 제공됩니다.
그림 2. Lenovator의 HiKey 960 보드
사용자 공간 컴파일
다음 명령어를 사용하여 HiKey 960 보드에서 Android를 다운로드하고 빌드합니다.
Android 소스 트리 다운로드
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
현재 공급업체 패키지 다운로드
./device/linaro/hikey/fetch-vendor-package.sh
빌드
. ./build/envsetup.sh
lunch hikey960-userdebug
make -j24
로컬 이미지 설치
스위치 3을 켜서 빠른 부팅 모드(Fastboot mode)를 선택합니다. 자세한 내용은 HiKey 960 시작 가이드를 참고하세요.
보드 전원을 켭니다.
로컬 이미지 플래시:
./device/linaro/hikey/installer/hikey960/flash-all.sh
스위치 3을 끄고 보드의 전원을 껐다 켭니다.
커널 빌드
HiKey960 Android GKI 커널 아티팩트를 빌드하는 방법은 다음과 같습니다.
다음 명령어를 실행합니다.
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
${AOSP_TOPDIR}device/linaro/hikey-kernel/hikey960/5.4/
의 모든 객체를 삭제한 다음out/android12-5.4/dist/
의 커널 빌드에서${AOSP_TOPDIR}/device/linaro/hikey-kernel/hikey960/5.4/
로 빌드 아티팩트를 복사합니다.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
Android 사용자 공간을 빌드합니다.
lunch hikey960-userdebug
make TARGET_KERNEL_USE=5.4 HIKEY_USES_GKI=true -j24
그런 다음 새로운 커널로 기기를 플래시합니다(사용자 공간 컴파일 참고).
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 웹사이트에서 제공됩니다.
그림 3. Khadas의 VIM3 보드
사용자 공간 컴파일
다음 명령어를 사용하여 VIM3 보드에서 Android를 다운로드하고 빌드합니다.
Android 소스 트리 다운로드:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
빌드:
. ./build/envsetup.sh
lunch yukawa-userdebug
make TARGET_USE_TABLET_LAUNCHER=true TARGET_VIM3=true -j24
기본적으로 Android는 5.10 커널로 빌드됩니다. 커널 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
초기 이미지 설치
VIM3 플래시 안내를 따라 보드를 USB 업그레이드 모드로 전환합니다.
초기 이미지를 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 도구를 사용하여 보드를 플래시합니다.
U-Boot가 부팅되고 빠른 부팅을 실행한 후 다음 명령어를 실행합니다.
fastboot oem format
fastboot flash bootloader u-boot_kvim3_noab.bin
fastboot erase bootenv
fastboot reboot bootloader
전원 케이블을 분리한 후 다시 연결합니다.
보드는 방금 플래시된 U-boot로 부팅되고 빠른 부팅 모드(Fastboot mode)로 진입해야 합니다.
이미지 플래시
빠른 부팅 모드(Fastboot mode)로 진입합니다(자세한 내용은 이전 섹션 참고).
모든 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용 커널 아티팩트를 빌드하려면 다음 안내를 따르세요.
추가 도구 모음을 다운로드합니다.
git clone https://android.googlesource.com/platform/prebuilts/gas/linux-x86 ${AOSP_TOPDIR}/prebuilts/gas/linux-x86
커널 소스를 복사합니다.
# 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
# for 5.10 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.10
# for 5.15 git clone https://android.googlesource.com/kernel/hikey-linaro -b android-amlogic-bmeson-5.15
빌드 변수를 내보냅니다.
export PATH=${AOSP_TOPDIR}/prebuilts/clang/host/linux-x86/clang-r445002/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
커널을 빌드합니다.
cd hikey-linaro
make meson_defconfig
make DTC_FLAGS="-@" -j24
커널을 압축하고 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
KERN_VER=5.10 # for 5.10 kernel
KERN_VER=5.15 # for 5.15 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
Android 사용자 공간을 다시 빌드하고(사용자 공간 컴파일 참고) 새 커널을 플래시합니다(이미지 플래시 참고).
Qualcomm Robotics Board RB5
Robotics Board RB5는 96boards.org에서 제공됩니다.
그림 4. Robotics Board RB5
사용자 공간 컴파일
다음 명령어를 사용하여 RB5에서 Android를 다운로드하고 빌드합니다.
Android 소스 트리 다운로드:
repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j8
현재 공급업체 패키지 다운로드:
./device/linaro/dragonboard/fetch-vendor-package.sh
AOSP 빌드:
. ./build/envsetup.sh
lunch rb5-userdebug
make -j24
로컬 이미지 설치
RB5를 빠른 부팅 모드(Fastboot mode)로 부팅합니다.
다음 명령어를 실행합니다.
./device/linaro/dragonboard/installer/rb5/flash-all-aosp.sh
필요한 경우 USB 플래시 모드에서 RB5를 부팅한 후 다음 스크립트를 실행하여 QDL 보드 복구를 실행할 수 있습니다(RB5 복구 참고).
./device/linaro/dragonboard/installer/rb5/recovery.sh
커널 빌드
RB5 Android 일반 커널 이미지(GKI) 커널 아티팩트를 빌드하려면 다음 안내를 따르세요.
다음 명령어를 실행하여 커널 소스 및 사전 빌드된 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
${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
그리고 결과 boot.img 및 super.img로 기기를 플래시합니다(사용자 공간 컴파일 참고).
다음과 같이 GKI 커널을 테스트합니다.
- 최신 kernel_aarch64 빌드를 확인합니다.
- 아티팩트에서 이미지를 다운로드합니다.
이미지를 Gzip으로 압축합니다.
gzip Image
${AOSP_TOPDIR}/device/linaro/dragonboard-kernel/android-mainline/
에 복사합니다.AOSP를 다시 빌드하고 새 boot.img로 기기를 플래시합니다(사용자 공간 컴파일 참고).