ARM64에서 16KB 페이지 크기로 Cuttlefish 사용

이 설정에는 ARM64 Linux 호스트가 필요합니다. 이 페이지에서는 ARM64에서 16KB 페이지 크기를 지원하는 Cuttlefish를 빌드하고 시작하는 방법을 보여줍니다. 이 페이지의 안내는 Cuttlefish 패키지가 컴퓨터에 설치되어 있다고 가정합니다. 설치 안내는 Cuttlefish 설치의 1단계를 참고하세요.

Android 연속 통합 사이트에서 직접 사전 빌드된 아티팩트를 다운로드하거나 소스 코드를 수정해야 하는 경우 AOSP에서 빌드하여 Cuttlefish를 실행할 수 있습니다.

아티팩트를 다운로드하여 Cuttlefish 실행

Android 지속적 통합 사이트로 이동하여 브랜치 이름으로 aosp-main-throttled을 입력합니다. aosp_cf_arm64_phone_pgagnostic 타겟의 최신 빌드를 클릭합니다. 이제 Cuttlefish 설치의 5단계 안내를 따릅니다.

AOSP에서 빌드하여 Cuttlefish 실행

다음과 같이 페이지에 구속받지 않는 타겟으로 Cuttlefish를 빌드하고 실행하세요.

$ mkdir main && cd main
$ repo init -u https://android.googlesource.com/platform/manifest -b main
$ repo sync -c -j32

# Build cf agnostic target.
$ source build/envsetup.sh
$ lunch aosp_cf_arm64_phone_pgagnostic-trunk_staging-userdebug
$ m

# Launch cf with a kernel with 16 KB page size support.
$ launch_cvd
...
...
VIRTUAL_DEVICE_DISPLAY_POWER_MODE_CHANGED
virtio_input_hid_handle_status: unknown type 20
virtio_input_hid_handle_status: unknown type 20
virtio_input_hid_handle_status: unknown type 20
virtio_input_hid_handle_status: unknown type 20
Generating new secret with slot ID: 4
VIRTUAL_DEVICE_BOOT_STARTED
VIRTUAL_DEVICE_NETWORK_MOBILE_CONNECTED

페이지 크기 및 부팅 확인

페이지 크기 및 부팅 상태를 확인하려면 다음을 실행합니다.

  1. 셸에 루트로 액세스합니다.

    $ adb root
    adbd is already running as root
    $ adb shell
    vsoc_arm64_pgagnostic:/ #
    
  2. 페이지 크기 및 부팅 상태를 확인합니다.

    vsoc_arm64_pgagnostic:/ # getconf PAGE_SIZE
    16384
    vsoc_arm64_pgagnostic:/ # getprop | grep sys.boot.completed
    sys.boot_completed: 1
    

맞춤 16KB 페이지 크기 커널과 함께 Cuttlefish 사용

사전 빌드된 커널이 아닌 맞춤 커널을 사용하려면 다음을 실행하세요.

  1. Android 공통 커널용 저장소 디렉터리를 만들고 디렉터리를 동기화합니다.

    $ mkdir common-android14-6.1 && cd common-android14-6.1
    $ repo init -u https://android.googlesource.com/kernel/manifest -b common-android14-6.1
    $ repo sync -c -j$(nproc)
    
  2. 16KB 페이지 크기 커널을 빌드합니다.

    $ tools/bazel run --lto=none //common:kernel_aarch64_16k_dist
    $ tools/bazel run --lto=none //common-modules/virtual-device:virtual_device_aarch64_16k_dist -- \
        --dist_dir=out/android14-6.1/dist
    
  3. 빌드가 실행되었는지 확인합니다.

    # Generated files
    $ ls out/android14-6.1/dist/Image
    $ ls out/android14-6.1/dist/initramfs.img
    

맞춤 16KB 페이지 크기 커널로 Cuttlefish 시작

새로 빌드된 커널을 Cuttlefish에서 사용하려면 다음을 실행하세요.

$ launch_cvd -kernel_path ~/common-android14-6.1/out/android14-6.1/dist/Image \
      -initramfs_path ~/common-android14-6.1/out/android14-6.1/dist/initramfs.img \
      --resume=false --userdata_format=ext4 \
      --data_policy=always_create --blank_data_image_mb=8000
      -userdata_format=ext4