ODM Bölümleri

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Android 10, Android derleme sistemini kullanarak odm bölümleri oluşturma desteği içerir.

ODM bölümleri hakkında

Özgün tasarım üreticileri (ODM'ler), çip üzerinde sistem (SoC) satıcı kartı destek paketlerini (BSP'ler) kendi özel cihazlarına (kartlarına) göre özelleştirir. Bu, panoya özgü bileşenler, panoya özgü arka plan programları veya donanım soyutlama katmanları (HAL'ler) üzerindeki kendi özellikleri için çekirdek modüllerini uygulamalarını sağlar. Ayrıca SoC bileşenlerini değiştirmek veya özelleştirmek isteyebilirler.

Daha düşük Android sürümlerinde, bu tür özelleştirmeler, aynı SoC'ye (veya farklı SoC'lere sahip, ancak aynı ailedeki) cihazlar için tek bir satıcı görüntüsünün kullanılmasını engelledi. Android 10 ve sonraki sürümlerde, özelleştirmeler için ayrı bir odm bölümü kullanabilirsiniz; bu, birden çok donanım SKU'su için tek bir satıcı görüntüsü kullanmanıza olanak tanır.

Ürün ve ODM bölümlerini kullanma

Android 9, farklı product.img görüntüleri tarafından sağlanan birden çok yazılım SKU'su için tek bir sistem görüntüsünün kullanılmasını sağlayan product bölümleri oluşturmak için destek ekledi. product bölümü yazılım SKU'ları için tasarlanırken, odm bölümü donanım SKU'ları için tasarlanmıştır.

Özel ürün ve ODM bölümleriyle, birçok yazılım SKU'su arasında paylaşım için genel kodu barındırmak için system bölümünü ve verilen SoC'ye dayalı olarak birden çok cihaz arasında paylaşmak için SoC'ye özgü BSP kodunu barındırmak için vendor bölümünü kullanabilirsiniz.

Ayrı bölümleri kullanmanın, disk alanını yönetme zorluğu gibi dezavantajları vardır (örneğin, gelecekteki büyüme için sınırlı miktarda alan ayırmanız gerekir). Ancak, dinamik bölümler için Android 10 desteği, disk sorununu ortadan kaldırır ve kablosuz (OTA) güncelleme sırasında bir cihazı yeniden bölümlendirmeyi mümkün kılar.

ODM bileşenleri

odm bölümü, aşağıdaki tabloda listelenen ODM'ye özgü bileşenleri ( vendor bölümüne benzer) içerir.

ODM'ye özel bileşen Konum
Yüklenebilir çekirdek modülleri (LKM'ler) /odm/lib/modules/*.ko
Yerel kitaplıklar /odm/lib[64]
HAL'ler /odm/lib[64]/hw
SE Politikası /odm/etc/selinux
VINTF nesne verileri /odm/etc/vintf
init.rc dosyaları /odm/etc/init
Sistem özellikleri /odm/build.prop
Çalışma zamanı kaynak bindirmeleri (RRO'lar) /odm/overlay/*.apk
Uygulamalar /odm/app/*.apk
Özel uygulamalar /odm/priv-app/*.apk
Java kitaplıkları /odm/framework/*.jar
Android Framework sistem yapılandırmaları /odm/etc/sysconfig/* ve /odm/etc/permissions/*

Özel resim yok

Aşağıdakileri desteklemedikleri için özel görseller kullanmayın:

  • Belirli bir hedefe bir modülün kurulumu. Özel görüntüler, yapay öğelerin bir görüntüye kopyalanmasını destekler, ancak hedef bölümü bir yapı kuralının parçası olarak belirterek belirli bir bölüme modül yükleyemez.
  • Yakında. custom_images , Soong derleme sistemi kullanılarak oluşturulamaz.
  • OTA güncellemesi. Özel görüntüler, OTA ile düzenlenemeyen fabrika ROM görüntüleri olarak kullanılır.

Bölümler arasında ABI'lerin bakımı

odm bölümü, vendor bölümünün bir uzantısıdır. Uygulama ikili arabirimi (ABI) kararlılığını düşünürken aşağıdaki mimariyi göz önünde bulundurun.

Bölümler arasında ABI bakımı
Şekil 1. Bölümler arasında ABI bakımı
  • odm ve vendor bölümleri arasında ABI kararlılığı yoktur. Her iki bölüm de aynı anda yükseltilmelidir.
  • odm ve vendor bölümleri birbirine bağlı olabilir, ancak vendor bölümü bir odm bölümü olmadan çalışmalıdır.
  • odm ile system arasındaki ABI, vendor ile system arasındaki ABI ile aynıdır.

product bölümü ile vendor veya odm bölümü arasında doğrudan etkileşime izin verilmez . (Bu SEpolicy tarafından uygulanır.)

ODM bölümlerini uygulama

Yeni bir bölüm uygulamadan önce ilgili AOSP değişikliklerini gözden geçirin.

ODM bölümlerini ayarlama

odm bölümlerini ayarlamak için şu derleme bayraklarını ekleyin:

  • Sabit bir bölüm boyutu için BOARD_ODMIMAGE_PARTITION_SIZE
  • Dinamik bölüm boyutu için PRODUCT_USE_DYNAMIC_PARTITIONS ve BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
  • ODM görüntüsü için kullanılan BOARD_ODMIMAGE_FILE_SYSTEM_TYPE dosya sistemi türü
  • $(call inherit-product path/to/device.mk) içinde kullanım için /odm/build.prop için PRODUCT_ODM_PROPERTIES , PRODUCT_ODM_PROPERTIES += product.abc=ok

Bir ODM bölümüne modül yükleme

Bir odm bölümüne bir modül yüklemek için bu derleme bayraklarını kullanın:

  • device_specific: true Android.bp
  • LOCAL_ODM_MODULE := true Android.mk doğru

Doğrulanmış Önyüklemeyi Etkinleştirme

Kötü amaçlı yazılımların odm bölümleriyle oynamasını önlemek için, bu bölümler için Android Verified Boot'u (AVB) etkinleştirin (tıpkı vendor ve system bölümleri için yaptığınız gibi).

AVB'yi etkinleştirmek için BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS yapı bayrağını ekleyin. AVB'yi dinamik bölümlerde yapılandırmayla ilgili ayrıntılar için bkz. AVB yapılandırma değişiklikleri .

/odm'yi başka bir /satıcı bölümü olarak ele almak

Sistemin odm bölümünü bir vendor bölümü olarak işlemesini sağlamak için, sabit kodlanmış vendor referanslarını bir dizi donanım odaklı bölümle (şu anda odm ve vendor ) değiştirin. Platformdaki dikkate değer vendor referans konumları arasında dinamik bağlayıcı , paket yöneticisi ve shell/libc bulunur.