Genel bakış

Android cihazlar, başlatma işleminde farklı işlevler sunan çeşitli bölümler içerir.

Standart bölümler

  • boot bölümüne Bu bölüm bir çekirdek resmi içerir ve mkbootimg kullanılarak oluşturulur. Yeni bir önyükleme bölümünü yüklemeden doğrudan bir resmi veya resmi yüklemek için sanal bölüm kullanabilirsiniz. Bu bölüm, Android 13'ten önce kullanıma sunulan cihazlardaki genel ramdisk'i de içerir.

    • çekirdek. Sanal kernel bölümü, yeni çekirdek görüntüsünü eski çekirdek görüntüsünün üzerine yazarak çekirdeğin (zImage, zImage-dtb, Image.gz-dtb) üzerine yazar. Sağlanan geliştirme çekirdeği uyumlu değilse vendor, system veya dtb bölümünü (varsa) ilişkili çekirdek modülleriyle güncellemeniz gerekebilir.

    • ramdisk. Sanal ramdisk bölümü, yeni ramdisk resmini eski ramdisk resminin üzerine yazarak ramdisk'in üzerine yazar.

    Yazma işlemi, eMMC'deki mevcut görüntünün başlangıç konumunu belirler ve yeni görüntüyü bu konuma kopyalar. Yeni resim (çekirdek veya ramdisk) mevcut resimden daha büyük olabilir. Önyükleyici, yer açmak için verileri resmin ardından taşıyabilir veya işlemi bir hatayla bırakabilir.

  • init_boot bölümüne Bu bölüm, Android 13 ve sonraki sürümlerle başlatılan cihazlar için genel RAM'i içerir.

  • system bölümünü Bu bölümde Android çerçevesi bulunur.

  • odm bölümüne Bu bölümde, çip üzerinde sistem (SoC) tedarikçi firma kart destek paketlerinde (BSP'ler) orijinal tasarım üreticisi (ODM) özelleştirmeleri bulunur. Bu tür özelleştirmeler, ODM'lerin SoC bileşenlerini değiştirmesini veya özelleştirmesini ve donanım soyutlama katmanlarında (HAL'ler) kart özel bileşenleri, arka plan programları ve ODM'ye özel özellikler için çekirdek modülleri uygulamasını sağlar. Bu bölüm isteğe bağlıdır. Genellikle, cihazların birden fazla donanım SKU'su için tek bir tedarikçi görüntüsü kullanabilmesi amacıyla özelleştirmeleri içermek için kullanılır. Ayrıntılar için ODM bölümlendirme bölümüne bakın.

  • odm_dlkm bölümüne Bu bölüm, ODM çekirdek modüllerini depolamaya ayrılmıştır. ODM çekirdek modüllerini odm_dlkm bölümünde (odm bölümünün aksine) depolamak, odm bölümünü güncellemeden ODM çekirdek modüllerini güncellemeyi mümkün kılar.

  • recovery bölümüne Bu bölümde, OTA işlemi sırasında başlatılan kurtarma görüntüsü saklanır. Sorunsuz güncellemeleri destekleyen cihazlar, kurtarma resimlerini ayrı bir resim yerine boot veya init_boot resminde bulunan bir ramdisk olarak depolayabilir.

  • cache bölümüne Bu bölüm geçici verileri depolar ve cihazda sorunsuz güncellemeler kullanılıyorsa isteğe bağlıdır. Önbellek bölümünün önyükleme cihazından yazılabilir olması gerekmez ancak silinebilir olması gerekir. Bölme boyutu, cihaz türüne ve userdata'teki alan durumuna bağlıdır. Genellikle 50-100 MB yeterlidir.

  • misc bölümüne Bu bölüm, kurtarma bölümü tarafından kullanılır ve 4 KB veya daha büyüktür.

  • userdata bölümüne Bu bölümde, kullanıcı tarafından yüklenen uygulamalar ve özelleştirme verileri dahil olmak üzere veriler bulunur.

  • metadata bölümünü Bu bölüm, cihaz meta veri şifrelemesi kullandığında meta veri şifreleme anahtarını depolamak için kullanılır. Boyut 16 MB veya daha büyüktür. Şifre şifrelenmez ve verileri anlık görüntülenmez. Cihaz fabrika ayarlarına sıfırlandığında silinir. Bu bölümün kullanımı kesinlikle sınırlıdır.

  • vendor bölümüne Bu bölüm, AOSP'ye dağıtılamayan tüm ikili dosyaları içerir. Cihaz özel bilgiler içermiyorsa bu bölümü atlayabilirsiniz.

  • vendor_dlkm bölümüne Bu bölüm, tedarikçi çekirdek modüllerini depolamaya ayrılmıştır. Tedarikçi firma çekirdek modüllerini vendor bölümünün yerine vendor_dlkm bölümünde depolamak, çekirdek modüllerini vendor bölümünü güncellemeden güncellemeyi mümkün kılar.

  • radio bölümünü Bu bölüm, radyo resmini içerir ve yalnızca özel bir bölümde radyoya özel yazılım içeren bir radyo içeren cihazlar için gereklidir.

  • tos bölümünü Bu bölüm, Trusty OS'in ikili görüntüsünü depolar ve yalnızca cihazda Trusty varsa kullanılır. Ayrıntılar için Hükümler ve Koşullar bölümündeki Bölümler'e bakın.

  • pvmfw bölümünü Bu bölüm, korumalı sanal makinelerde çalışan ilk kod olan Korumalı Sanal Makine Donanım yazılımını (pvmfw) depolar. Daha fazla bilgi için Korumalı Sanal Makine Donanım Yazılımı başlıklı makaleyi inceleyin.

Dinamik bölümler

Android 11 ve sonraki sürümleri çalıştıran cihazlar, Android için kullanıcı alanındaki bir bölümleme sistemi olan dinamik bölümleri destekleyebilir. Bu sistem, kablosuz (OTA) güncellemeler sırasında bölüm oluşturmayı, yeniden boyutlandırmayı veya silme işlemini sağlar. Ayrıntılar için Dinamik bölümler başlıklı makaleyi inceleyin.

Kritik bölümleri belirleme

Cihazın çalışması için belirli bölümler veya veriler gerekiyorsa bu bölümleri ya da verileri tamamen korumalı veya yeniden flaşlanabilir olarak belirtmeniz gerekir. Yani bu bölümler veya veriler, fastboot oem komutu kullanılarak yeniden oluşturulabilir, sağlanabilir veya ayıklanabilir olmalıdır. Buna cihaza özel fabrika ayarları, seri numaraları, kalibrasyon verileri ve daha fazlası gibi veriler dahildir.

Android 11'deki değişiklikler

Android 11, kitaplıklara bağlantı oluşturmayla ilgili kısıtlamalar ve yeni Soong resim varyantları da dahil olmak üzere bölümlerde çok sayıda değişiklik içerir.

Android Bölüm Düzeni

Şekil 1. Android 11'de bölüm düzeni

  • Tek Sistem Görüntüsü (SSI). system ve system_ext resimlerini içeren yeni, kavramsal bir resim. Bu bölümler bir hedef cihaz grubu için ortak olduğunda bu cihazlar SSI'yi paylaşabilir ve system ile system_ext resimlerinin oluşturulmasını atlayabilir.

  • system_ext bölümünü system kaynaklarını kullanabilen ve aşağıdaki özellikleri taşıyan sistem modüllerini içerebilen yeni bir bölüm:

    • system bölümündeki AOSP sistem modüllerini genişletin. Bu tür modüllerin daha sonra system bölümüne yüklenebilmesi için AOSP'ye aktarılmasını öneririz.

    • OEM'ye veya SoC'ye özgü modülleri gruplandırın. Bu tür modüllerin product veya vendor bölümüne yüklenebilmesi için paketten çıkarılmasını öneririz.

  • system bölümüne OEM ürünleri için kullanılan genel sistem görüntüsü. Özel modülleri, AOSP'ye aktararak veya system_ext bölümüne taşıyarak system bölümünden taşımanızı öneririz.

  • product bölüm. Bu bölüm artık diğer bölümlerle birlikte paketlenmemiş, ürüne özel modülleri yüklemek için izin verilen arayüzleri kullanabilir.

VNDK değişiklikleri

Satıcı Yerel Geliştirme Seti (VNDK), system bölümüne yüklenen ve yalnızca satıcıların HAL'lerini uygulamak için tasarlanmış bir kitaplık grubudur.

  • Android 10 ve önceki sürümlerde vendor bölümü, system bölümündeki VNDK kitaplıklarına bağlantı verebilir ancak system bölümündeki diğer kitaplıklara bağlantı veremez. product bölümündeki yerel modüller, system bölümündeki herhangi bir kitaplığa bağlantı verebilir.

  • Android 11 ve sonraki sürümlerde product ve vendor bölümleri, system bölümündeki VNDK kitaplıklarına bağlanabilir ancak system bölümündeki diğer kitaplıklara bağlanamaz.

Soong ürün varyantları

Soong derleme sistemi, bağımlılıkları derlemek için görüntü varyantlarını kullanır. Yerel modüller (/build/soong/cc), sistem işleme modüllerini çekirdek varyantta, tedarikçi firma işleme modüllerini ise tedarikçi firma varyantında değiştirebilir. Bir resim varyantındaki modül, farklı bir resim varyantındaki diğer modüllere bağlanamaz.

  • Android 10 veya önceki sürümlerde bir sistem modülü otomatik olarak temel varyantları oluşturur. Ayrıca, Android.bp dosyalarında vendor_available: true tanımlayarak tedarikçi varyantları da oluşturabilir. Bu, tedarikçi modüllerinin sistem modüllerine bağlanmasını sağlar. system kitaplıklarının tedarikçi varyantları olan VNDK kitaplıkları, Android.bp dosyalarında vendor_available: true öğesini tanımlayarak tedarikçi modülleri için tedarikçi varyantları da oluşturabilir (örneğe bakın).

  • Android 11'de bir sistem modülü, vendor_available: true öğesini tanımlayarak bir ürün varyantı (temel ve satıcı varyantlarına ek olarak) da oluşturabilir.

  • Android 12 veya sonraki sürümlerde, vendor_available: true içeren bir sistem modülü, temel varyanta ek olarak bir tedarikçi varyantı oluşturur. Ürün varyantı oluşturmak için product_available: true tanımlanmış olmalıdır. product_available: true içermeyen bazı VNDK kitaplıkları ürün modülleri tarafından kullanılamaz.