Utiliser Cuttlefish avec une taille de page de 16 ko sur ARM64

Cette configuration nécessite un hôte Linux ARM64. Cette page explique comment compiler et démarrer Cuttlefish avec la prise en charge de la taille de page de 16 ko sur ARM64. Les instructions de cette page partent du principe que les packages Cuttlefish sont installés sur votre machine. Pour obtenir des instructions d'installation, consultez l'étape 1 d'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 d'intégration continue Android et saisissez aosp-main-throttled comme nom de branche. Cliquez sur la dernière compilation pour 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

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

$ mkdir android-latest-branch && cd android-latest-branch
$ repo init -u https://android.googlesource.com/platform/manifest -b android-latest-release
$ 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 Cuttlefish avec un kernel personnalisé de 16 ko

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 commun Android 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 de 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 s'est exécutée correctement :

    # 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 16 Ko

Pour utiliser votre nouveau noyau 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