Çekirdek modülü desteği

Genel çekirdek görüntüsü (GKI), bir cihazın bölümleri ekleyebilmesini sağlar. Bir cihazın bölümleri ekleyebilmesini ve başlatmaya devam etmek için birinci aşama init, Çekirdek modüllerinin hazırlanması. Ramdisk genel ve çok iyi olur. Tedarikçi firma çekirdek modülleri tedarikçi firma RAM'inde depolanır. İlgili içeriği oluşturmak için kullanılan çekirdek modüllerinin yüklenme sırası yapılandırılabilir.

Modül konumu

Ramdisk, ilk aşama init, ve diğer başlangıç aşamalarının dosya sistemidir. A/B ve sanal A/B cihazlarında kurtarma/hızlı başlatma görüntüsü. Bu bir initramfs, bootloader'ı tıklayın. Tedarikçi firma ramdisk'i olarak depolanan ilk cpio arşivi bölümünde, aşağıdaki bileşenleri içerir:

  • Şu konumda bulunan ilk aşama init tedarikçi çekirdek modülleri: /lib/modules/.
  • /lib/modules/ konumunda bulunan modprobe yapılandırma dosyası: modules.dep, modules.softdep, modules.alias, modules.options.
  • Hangi modüllerin yükleneceğini gösteren bir modules.load dosyası hangi sırayla gerçekleştiğine /lib/modules/.
  • A/B ve Sanal A/B cihazları için tedarikçi kurtarma çekirdek modüllerini /lib/modules/.
  • Yüklenecek modüllerin gösterildiği modules.load.recovery ve A/B ve Sanal A/B cihazları için, A/B ve Sanal A/B cihazları için, /lib/modules.

GKI ile birlikte sağlanan ikinci cpio arşivi boot.img'in ramdisk'i olarak ayarlanır ve ilk olarak first_stage_init öğesini ve bağlı olduğu kitaplıkları içerir.

İlk aşamada modül yükleme

İlk aşama init, modprobe yapılandırmasını okuyarak başlar /lib/modules/ dosyalarını ramdiskte bulabilirsiniz. Ardından, listeyi okur /lib/modules/modules.load içinde belirtilen modüllerin sayısı (veya (/lib/modules/modules.load.recovery) geri bildirim verir ve Bu modüllerin her birini emin olun. İstenen sıra - arasında değiştirilebilir. ya da yumuşak bağımlılıkları karşılamaktan bahsedeceğiz.

Destek oluşturma, ilk aşama

Tedarikçi firma ramdisk cpio'ya kopyalanacak çekirdek modüllerini belirtmek için, BOARD_VENDOR_RAMDISK_KERNEL_MODULES içinde görüntüleyin. Derlemenin çalıştırılması depmod ekler ve elde edilen modprobe yapılandırmasını uygular dosyalarını kullanabilirsiniz.

Derleme ayrıca bir modules.load dosyası oluşturur ve bunu ramdisk cpio'dur. Varsayılan olarak Google Cloud Platform'da listelenen tüm modülleri içerir. BOARD_VENDOR_RAMDISK_KERNEL_MODULES gösterildiği gibi BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD kullanın bu örnekte:

BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := \
    device/vendor/mydevice-kernel/first.ko \
    device/vendor/mydevice-kernel/second.ko \
    device/vendor/mydevice-kernel/third.ko

Derleme desteği, tam Android

Android 10 ve önceki sürümlerde olduğu gibi, çekirdek modülleri BOARD_VENDOR_KERNEL_MODULES, Android platformu tarafından kopyalanır /vendor/lib/modules adresindeki tedarikçi firma bölümünde derlenir. İlgili içeriği oluşturmak için kullanılan platform derlemesi bu modüllerde depmod üzerinde çalışır ve depmod çıkış dosyalarını aynı anda tedarikçi firma bölümüne konum. /vendor üzerindeki çekirdek modüllerini yükleme mekanizması önceki Android sürümleriyle aynıdır. Bu sizin kararınız yüklemenin yolu genellikle Search Ads 360'ta nasıl init.rc komut dosyası.

Joker karakterler ve entegre çekirdek derlemeleri

Cihaz çekirdek derlemelerini Android platformu derlemesiyle birleştiren sağlayıcılar için yukarıda belirtilen BOARD makrolarının kullanılmasıyla ilgili bir sorunla karşılaşabilirsiniz: cihaza kopyalanacak çekirdek modüllerini belirtin. Tedarikçi web sitesinden satın almak çekirdek modüllerini cihazın platform derleme dosyalarında listelediği için, ($(wildcard device/vendor/mydevice/*.ko). Joker karakterin entegre çekirdek derlemesi durumunda çalışır, çünkü oluşturucu çağrıldığında ve makrolar oluşturma dosyalarında genişletilir, çekirdek modülleri oluşturulmamıştır; bu nedenle makrolar boştur.

Tedarikçi, bu sorunu çözmek için çekirdeğinin bir zip dosyası oluşturmasını sağlayabilir. her bölüme kopyalanacak çekirdek modüllerini içeren arşiv. Bu zip arşivinin yolunu BOARD_*_KERNEL_MODULES_ARCHIVE içinde belirleyin Burada *, bölümün adıdır (ör. BOARD_VENDOR_KERNEL_MODULES_ARCHIVE). Android platformu derlemesi bu zip arşivini uygun konuma çıkarır ve depmod komutunu çalıştırır. üzerine konuşacağız.

Çekirdek modülü ZIP arşivinde, platformun derlemesi gerektiğinde arşivi oluşturabilir.

Kurtarma

Önceki Android sürümlerinde, kurtarma için gereken çekirdek modülleri BOARD_RECOVERY_KERNEL_MODULES içinde belirtilir. Android 12'de kurtarma için gereken çekirdek modüllerini bu makro kullanılarak belirtilir. Ancak kurtarma çekirdek modülleri satıcı ramdisk cpio'yu kullanmalıdır. Varsayılan olarak tümü BOARD_RECOVERY_KERNEL_MODULES konumunda listelenen çekirdek modülleri yüklendi ilk aşamada init. Bunların yalnızca bir alt kümesini istiyorsanız modüllerin içeriğini kullanıyorsanız, bu alt kümenin içeriğini BOARD_RECOVERY_KERNEL_MODULES_LOAD

Tedarikçi firma başlatma bölümü (tedarikçi firma başlatma bölmesi) bu sayfada bahsedilen ramdisk), bkz. Bot bölümleri bulunur.