在 ARM64 上使用 16 KB 頁面大小的 Cuttlefish

這項設定需要 ARM64 Linux 主機,本頁面說明如何建構 透過 ARM64 支援 16 KB 頁面大小的 Cuttlefish。有關 此頁面假設您已在機器中安裝 Cuttlefish 套件。適用對象 安裝操作說明,請參閱「安裝 Cuttlefish」的步驟 1。

您可以下載預先建構的 Cuttlefish 直接擷取 Android Continuous 的構件 視需要修改整合網站,或是透過 Android 開放原始碼計畫建立網站 原始碼

下載構件即可啟動 Cuttlefish

前往 Android 持續整合網站, 輸入 aosp-main-throttled 做為分支版本名稱。點選最新版本的 aosp_cf_arm64_phone_pgagnostic目標。接著,按照 第 5 頁的「Install Cuttlefish」

透過 Android 開放原始碼計畫建構 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
    

搭配自訂 16 KB 頁面大小核心使用 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. 建構 16 KB 頁面大小核心:

    $ 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
    

使用自訂 16 KB 頁面大小核心啟動 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