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 la prise en charge de la taille de page de 16 Ko sur ARM64. Dans les instructions de cette page, nous partons du principe que les packages Cuttlefish sont installés sur votre ordinateur. Pour savoir comment les installer, consultez l'étape 1 de la section Installer Cuttlefish.

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

Lancer Cuttlefish en téléchargeant les artefacts

Accédez au site de l'intégration continue Android, puis saisissez aosp-main-throttled comme nom de branche. Cliquez sur la dernière compilation de la cible aosp_cf_arm64_phone_pgagnostic. Suivez maintenant les instructions de l'étape 5 de la section Installer Cuttlefish.

Lancer Cuttlefish en compilant à partir d'AOSP

Créez et lancez Cuttlefish avec une cible indépendante des pages:

$ 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

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

Pour vérifier la taille de la page et l'état du 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 du 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 kernel Android commun 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é effectuée:

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

Démarrer Cuttlefish avec le kernel personnalisé de taille de page de 16 ko

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