ODM bölümleri

Android 10, derleme desteği sunar odm bölümleri, Android derleme sistemini kullanarak.

ODM bölümleri hakkında

Orijinal tasarım üreticileri (ODM'ler) çip üzerinde sistem (SoC) tedarikçisini özelleştiriyor kart destek paketleri (BSP'ler) için kendi özel cihazlarına (kartları). Bu anakarta özgü bileşenler için çekirdek modüllerini uygulamalarını sağlar. ana karta özgü arka plan programları veya donanım soyutlama katmanlarındaki kendi özellikleri (HAL'ler). SoC bileşenlerini değiştirmek veya özelleştirmek de isteyebilirler.

Daha düşük Android sürümlerinde, bu tür özelleştirmeler tek bir aynı çip üzerinde sisteme (SoC) sahip (veya farklı SoC'lere sahip ancak (aynı aile). Android 10 ve sonraki sürümlerde özelleştirmeler için ayrı odm bölümü vardır. Bu, şunları yapmanıza olanak tanır: Birden fazla donanım SKU'su için tek bir tedarikçi firma görüntüsü kullanın.

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

Android 9, bina oluşturma desteği ekledi product birden fazla yazılım için tek bir sistem görüntüsünün kullanılmasını sağlar. Farklı product.img resimleriyle sağlanan SKU'lar. Araç product bölümü yazılım SKU'ları için tasarlanmıştır. odm bölümü, donanım SKU'ları için tasarlanmıştır.

Özel ürün ve ODM bölümleriyle şunları kullanabilirsiniz: system birçok yazılım SKU'su arasında paylaşmak üzere genel kod barındırmak için bölüm ve Aralarında paylaşılacak SoC'ye özel BSP kodunu barındırmak için vendor bölümü soC'ye göre birden fazla cihaz kullanabilir.

Ayrı bölümlerin kullanılmasının bazı dezavantajlar (ör. yönetmenin zorluğu) disk alanı (örneğin, çevrimiçi veriler için sınırlı miktarda alan ayırmalısınız) . Ancak Android 10, dinamik bölümler ortadan kaldırır ve devre dışı bırakma işlemi sırasında cihazın yeniden kablosuz güncelleme yapılabilir.

ODM bileşenleri

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

ODM'ye özel bileşen Konum
Yüklenebilir çekirdek modülleri (LKM'ler) /odm/lib/modules/*.ko
Yerel kitaplık /odm/lib[64]
HAL'ler /odm/lib[64]/hw
SE Politikası /odm/etc/selinux
VINTF nesnesi veriler /odm/etc/vintf
init.rc dosyalar /odm/etc/init
Sistem özellikleri /odm/build.prop
Çalışma zamanı kaynak yer paylaşımları (RRO'lar) /odm/overlay/*.apk
Uygulamalar /odm/app/*.apk
Öncelikli 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 görüntü yok

Kullanma özel görselleri şunları desteklemez:

  • Bir modülün belirli bir hedefe yüklenmesi. Özel görüntüler, yapıların resme kopyalanmasını destekler ancak hedef bölümü belirterek belirli bir bölüme bir modül yükleyin olduğunu varsayalım.
  • Soong. custom_images, Shorts derleme sistemi.
  • OTA güncellemesi. Özel görüntüler şu şekilde kullanılır: OTA ile alınamayan fabrika ROM görüntüleri.

Bölümler arasında ABI'leri koruma

odm bölümü, vendor bölüm. Uygulama ikili arayüzü (ABI) kararlılığını değerlendirirken şu mimariyi göz önünde bulundurun.

Bölümler arasında ABI'yi koruma

Şekil 1. Bölümler arasında ABI'yi koruma.

  • odm ile arasında ABI kararlılığı yoktur vendor bölüm. Her iki bölüm de aynı anda yükseltilmelidir. gerekir.
  • odm ve vendor bölümleri şunlara bağlı olabilir: birbirinin aynısı, ancak vendor bölümlendirmesi çalışmalıdır odm bölümü olmadan.
  • odm ve system arasındaki ABI ile aynıdır vendor ile system arasındaki ABI.

product bölümü ile vendor veya odm bölümü değil izin veriliyor. (Bu, SEpolicy tarafından zorunlu kılınır.)

ODM bölümlerini uygulama

Yeni bir bölümlendirme uygulamadan önce ilgili AOSP değişiklikler başlıklı makaleyi inceleyin.

ODM bölümlerini ayarlama

odm bölümlerini ayarlamak için şu derleme işaretlerini ekleyin:

  • Sabit bölüm boyutu için BOARD_ODMIMAGE_PARTITION_SIZE
  • PRODUCT_USE_DYNAMIC_PARTITIONS ve Şunun için BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE: dinamik bölümlendirme beden
  • için kullanılan BOARD_ODMIMAGE_FILE_SYSTEM_TYPE dosya sistemi türü ODM resmi
  • Şu süre boyunca /odm/build.prop için PRODUCT_ODM_PROPERTIES: gibi bir $(call inherit-product path/to/device.mk) içinde kullanın PRODUCT_ODM_PROPERTIES += product.abc=ok

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

odm bölümüne modül yüklemek için şu derleme işaretlerini kullanın:

  • device_specific: true Android.bp içinde başlıyor
  • LOCAL_ODM_MODULE := true Android.mk içinde başlıyor

Doğrulanmış Başlatma'yı etkinleştir

Kötü amaçlı yazılımların odm bölümlerini değiştirmesini önlemek için Android Doğrulanmış Başlatma'yı etkinleştirin (AVB) bu bölümler için geçerlidir (tıpkı vendor ve system bölüm).

AVB'yi etkinleştirmek için derleme işaretini ekleyin BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS Yapılandırma ayrıntıları için Dinamik bölümlerde AVB (bkz. AVB) AVB yapılandırması değişiklikler başlıklı makaleyi inceleyin.

/odm öğesini başka bir /sağlayıcı bölümü olarak ele al

Sistemin odm bölümünü bir vendor bölümü, sabit kodlu vendor bölümlerini değiştirin bir dizi donanım odaklı bölümlendirmeye sahip referanslar (şu anda odm ve vendor). Önemli vendor referans yerleri arasında şunlar yer alır: dinamik bağlayıcı paket yöneticisi ve shell/libc.