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

這項設定需要 ARM64 Linux 主機,本頁面說明如何在 ARM64 上透過 16 KB 頁面大小支援建構及啟動 Cuttlefish。本頁面的操作說明假設您已在機器中安裝 Cuttlefish 套件。如需安裝操作說明,請參閱安裝 Cuttlefish 的步驟 1。

您可以直接從 Android 持續整合網站下載預先建構的構件,或是視需要透過 Android 開放原始碼計畫建構構件,藉此啟動分割魚。

下載文物,啟動烏龜魚

前往 Android Continuous Integration 網站,然後輸入 aosp-main-throttled 做為分支版本名稱。按一下 aosp_cf_arm64_phone_pgagnostic 目標的最新版本。接著,按照 Install Cuttlefish 步驟 5 的說明操作。

透過 Android 開放原始碼計畫建構應用程式,啟動切割魚

建構並啟動 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-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