Android 10 mendukung partisi dinamis, sistem partisi ruang pengguna yang dapat membuat, mengubah ukuran, dan menghapus partisi selama update melalui udara (OTA).
Halaman ini menjelaskan cara mengubah ukuran partisi dinamis selama update untuk perangkat A/B yang diluncurkan dengan dukungan partisi dinamis, untuk perangkat yang menjalankan Android 9 dan yang lebih rendah.
Latar belakang
        Ada satu partisi super di perangkat. Partisi
        ini tidak memiliki akhiran slot. Perangkat blok harus ada bersama
        dengan entri blk_device untuk /misc di
        fstab. Misalnya, jika file fstab mencantumkan:
      
/dev/block/bootdevice/by-name/misc /misc # Other fields
        Kemudian, perangkat blok untuk super harus ada di
        /dev/block/bootdevice/by-name/super, tetapi
        partisi super tidak perlu dicantumkan dalam file
        fstab.
      
        Di partisi super, ada dua
        slot metadata, bernomor 0 dan 1, yang sesuai dengan
        slot A/B untuk partisi. Di halaman ini, slot metadata disebut Metadata S (sumber) dan Metadata T (target). Demikian pula,
        partisi disebut sebagai system_s,
        vendor_t, dan seterusnya.
      
        Sebelum upgrade, Metadata S berisi informasi untuk
        partisi dinamis yang digunakan (biasanya, system_s,
        vendor_s, product_s, dan sebagainya). Sistem
        membaca rentang untuk partisi ini selama update, sehingga partisi tersebut
        tidak dapat dihapus.
      
Partisi termasuk dalam grup update. Lihat Menerapkan Partisi Dinamis untuk mengetahui detailnya.
Contoh metadata di perangkat adalah sebagai berikut.
- Metadata 0
          - Grup foo_a- Partisi system_a
- Partisi product_services_a
- Partisi lain yang diperbarui oleh Foo
 
- Partisi 
- Group bar_a
              - Partisi vendor_a
- Partisi product_a
- Partisi lain yang diperbarui oleh Bar
 
- Partisi 
- Grup foo_b(sisa dari upgrade sebelumnya)
- Grup bar_b(sisa dari upgrade sebelumnya)
 
- Grup 
- Metadata 1
          - Grup foo_a(sisa dari upgrade sebelumnya)
- Grup bar_a(sisa dari upgrade sebelumnya)
- Grup foo_b- Partisi system_b
- Partisi product_services_b
- Partisi lain yang diperbarui oleh Foo
 
- Partisi 
- Grup bar_b- Partisi vendor_b
- Partisi product_b
- Partisi lain yang diperbarui oleh Bar
 
- Partisi 
 
- Grup 
        Anda dapat menggunakan alat lpdump (kode sumber di
        system/extras/partition_tools) untuk mengekstrak metadata di
        perangkat Anda. Contoh:
      
lpdump --slot 0 /dev/block/bootdevice/by-name/superlpdump --slot 1 /dev/block/bootdevice/by-name/super
Alur update
- Lakukan inisialisasi metadata partisi super.- Muat rentang untuk partisi dinamis sumber dari Metadata S. Misalkan M adalah metadata yang dimuat.
- 
              Hapus grup target dan partisi (misalnya,
              foo_t,bar_t) dari M sehingga M hanya berisi partisi dan grup dengan akhiran_s.
- 
              Tambahkan grup target dan partisi sesuai dengan
              kolom dynamic_partition_metadatadi manifes update.
 Ukuran setiap partisi dapat ditemukan dinew_partition_info.
- Menulis M ke Metadata T.
- Memetakan partisi yang ditambahkan di pemeta perangkat sebagai dapat ditulis.
 
- Terapkan update pada perangkat yang diblokir.
          - Jika perlu, petakan partisi sumber di pemeta perangkat sebagai hanya baca. Hal ini diperlukan untuk memuat dari luar karena partisi sumber tidak dipetakan sebelum update.
- Terapkan update penuh atau delta ke semua perangkat blok di slot target.
- Pasang partisi untuk menjalankan skrip pasca-penginstalan, lalu lepaskan partisi.
 
- Batalkan pemetaan partisi target.
Sebelum dan setelah update, properti sistem berikut harus memiliki nilai masing-masing:
ro.boot.dynamic_partitions=true ro.boot.dynamic_partitions_retrofit=true
Menambahkan grup dan partisi ke manifes update
Saat melakukan update OTA pada perangkat A/B dengan partisi dinamis, atau perangkat A/B yang menambahkan dukungan untuk partisi dinamis, Anda harus menambahkan grup dan partisi ke manifes update. Cuplikan di bawah menunjukkan informasi tambahan tentang manifes update untuk mendukung partisi dinamis. Lihat update_metadata.proto untuk mengetahui dokumentasi mendetail tentang setiap kolom.
message DeltaArchiveManifest {
    optional DynamicPartitionMetadata dynamic_partition_metadata;
}
message DynamicPartitionMetadata {
    repeated DynamicPartitionGroup groups;
}
message DynamicPartitionGroup {
    required string name;
    optional uint64 size; // maximum size of group
    repeated string partition_names;
}