Utilisez Settlefish avec une taille de page de 16 Ko sous ARM64.

Cette configuration nécessite un hôte Linux ARM64. Cette page explique comment créer et démarrer Cuttlefish avec une taille de page de 16 Ko compatible avec ARM64. Dans les instructions de cette page, nous partons du principe que les packages Cuttlefish sont installés sur votre machine. Pour savoir comment les installer, reportez-vous à l'étape 1 de la section Installer Cuttlefish.

Vous pouvez lancer la seiche en téléchargeant les artefacts prédéfinis directement à partir du site d'intégration continue Android ou en les compilant à partir d'AOSP si vous devez modifier le code source.

Lancez la seiche en téléchargeant les artefacts

Accédez au site d'intégration continue Android et saisissez aosp-main-throttled comme nom de branche. Cliquez sur le dernier build de la cible aosp_cf_arm64_phone_pgagnostic. Suivez maintenant les instructions de l'étape 5 de la section Installer Cuttlefish.

Lancez la seiche en l'utilisant depuis AOSP

Créez et lancez Cuttlefish avec une cible indépendante de la page:

$ 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

Vérifier la taille de la page et le démarrage

Pour vérifier la taille de la page et l'état de démarrage:

  1. Accédez au shell en tant que racine:

    $ adb root
    adbd is already running as root
    $ adb shell
    vsoc_arm64_pgagnostic:/ #
    
  2. Vérifiez la taille de la page et l'état de démarrage:

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

Utiliser Settlefish avec un noyau de page de 16 Ko personnalisé

Pour utiliser un noyau personnalisé au lieu d'un noyau prédéfini:

  1. Créez un répertoire de dépôt pour un noyau Android courant et synchronisez-le:

    $ 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. Créez un kernel avec une taille de page de 16 Ko:

    $ 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. Vérifiez que la compilation a bien été exécutée:

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

Démarrer Cuttlefish avec le noyau de page de 16 Ko personnalisé

Pour utiliser votre noyau nouvellement créé dans 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