GBL'yi dağıtma

Bu sayfada, Genel Önyükleyici (GBL) ikilisinin nasıl dağıtılacağı açıklanmaktadır.

Başlatma donanım yazılımı şartları

GBL'yi kullanmak için önyükleme yazılımının aşağıdaki koşulları karşılaması gerekir:

  • Birleşik Genişletilebilir Donanım Yazılımı Arayüzü (UEFI) uyumluluğu. Donanım yazılımı, gerekli UEFI protokollerini uygulamalı ve kullanmalıdır. Ayrıca, üreticiye özel uzantıların tanımlanmış UEFI protokolleri kullanılarak uygulanmasına da izin verilmelidir.

  • Güvenlik. Donanım yazılımı, Android Doğrulanmış Başlatma (AVB) ile ilgili tüm şartları uygulamalıdır. Bu sayede GBL, başlatma resimlerinin kimliğini doğrulayabilir.

  • Başlatma modları İkili dosya, normal başlatma, kurtarma başlatma ve fastboot gibi çeşitli başlatma modlarını işleyebilmelidir.

  • Dinamik bölümleme. Önyükleme yazılımı, doğru A/B önyükleme yuvasının okunmasını destekleyecek ve süperdeki dinamik bölümler ve kullanıcı verileriyle uyumlu olacak şekilde yuva seçimi mantığını uygulamalıdır.

  • İşletim sistemi yapılandırması. Donanım yazılımı, cihazı başlatmak için gereken OEM özelleştirmeleriyle çekirdek komut satırını, cihaz ağacını (DTB) ve bootconfig'i değiştirebilmelidir.

  • Korumalı sanal makine yükleniyor. İkili dosya, korumalı sanal makineler varken Android çekirdeğinden önce önceden doğrulanmış korumalı sanal makine yazılımını doğru şekilde yüklemelidir. Daha fazla bilgi için Microdroid önyükleme sırası başlıklı makaleyi inceleyin.

  • Bellek yönetimi. Önyükleme donanım yazılımı, UEFI bellek ayırma API'sini desteklemelidir.

Uygulama şartları

GBL'nin cihazınızda doğru şekilde uygulanabilmesi için aşağıdaki koşulları karşılamanız gerekir:

  • Cihazınızda, SOC tarafından erişilebilen bir blok cihazda android_esp_a ve android_esp_b adlı 4 MB (veya daha büyük) iki FAT32 bölümü olmalıdır.

    • Blok cihaz, blok birimleri halinde okunabilen veya yazılabilen bir depolama cihazıdır. UFS, eMMC ve SD kart cihazları buna örnek verilebilir.
    • FAT32, her yerde kullanılabilen ve basit bir dosya sistemi olduğundan kullanılır.
    • Bu Android sürümünün destek süresi boyunca kablosuz (OTA) güncellemeleri ve geri alma işlemleri için her iki bölüm de gereklidir.
    • GBL, sıkıştırılmamış halde yaklaşık 2 MB'tır. 4 MB, önümüzdeki yedi yıl içinde ek özellikler nedeniyle oluşabilecek büyüme için yeterlidir.
    • Bir GBL güncellemesi durumunda, android_esp_${SLOT_SUFFIX} bölümünün tamamını güncellemeniz gerekir. Yalnızca GBL'ye yönelik güncellemeler Android OTA tarafından desteklenmez.
  • Dağıtılan GBL sürümü, ilgili GBL yayın dalının en son sertifikalı üretim derlemesi olmalıdır. Tercih ettiğiniz imzalama çözümünü kullanarak GBL'nin Google sertifikalı kopyasını imzalamanızı ve ortaya çıkan derleme ile imza meta verilerini android_esp_${SLOT_SUFFIX} bölümünde saklamanızı öneririz.

    • GBL sertifikası, OEM imzası tarafından değiştirilmemelidir VE ikili dosyaya üstbilgi uygulanmamalıdır.
    • Geliştirici GBL derlemesi kesinlikle geliştirme ve hata ayıklama amaçlarıyla kullanılır. Derleme gönderilemez ve Google tarafından onaylanmaz.
  • GBL, FAT32 bölümündeki /EFI/BOOT/BOOTAA64.EFI yolunda depolanmalıdır.

  • GBL'yi desteklemek için gerekli UEFI ve Android UEFI protokollerini uygulayın. Bu arayüzler desteklenmiyorsa GBL'nin üretim derlemesi başlatılamaz.

    • EFI_BLOCK_IO_PROTOCOL veya EFI_BLOCK_IO2_PROTOCOL, önyükleme resimlerini ve pvmfw resimlerini diskten getirir.
    • Yığın kanaryaları, KASLR tohumları ve RNG tohumları için EFI_RNG_PROTOCOL
    • AVB ve DICE hesaplamaları yapmak için geçici bellek tahsisine yönelik bellek tahsisi hizmetleri
    • EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL, no-op uygulamaları için bir seçenek sunar ancak GBL, varsayılan olarak bu protokol üzerinden günlük kaydı oluşturur.
    • GBL_EFI_AVB_PROTOCOL, önyükleme resimlerini doğrulamak için ortak anahtarlara ve geri alma dizinlerine erişir.
    • GBL_EFI_BOOT_CONTROL_PROTOCOL, donanım yazılımından yuva meta verilerini ve başlatma nedenlerini alır.
    • GBL_EFI_AVF_PROTOCOL, DICE zincirinden AVF yapılandırma verileri oluşturur.
  • GBL entegrasyonu sırasında kesinlikle önerilen UEFI protokolleri GBL UEFI Protokolleri'nde belgelenmiştir.

Başlatma donanım yazılımı desteği

Önceki bölümde belirtilen gereksinimleri desteklemek için gerekli değişiklikler yapıldığında aşağıdaki UEFI üretici yazılımı uygulamaları GBL ile çalışır:

  • EDK2 (Tianocore). EDK2, popüler bir açık kaynak UEFI uygulamasıdır. EDK2 tabanlı önyükleyiciler için GBL desteği gerekir ve UEFI desteği zaten mevcuttur.
  • U-Boot. GBL kullanımında UEFI uyumluluğu kazanan, esnek ve yaygın olarak kullanılan bir açık kaynak önyükleyici projesi.
  • LittleKernel (LK). Bazı satıcılar tarafından kullanılan açık kaynaklı bir önyükleyici.

GBL'yi çalıştırma

Çalıştırmak için önceden oluşturulmuş bir GBL ikili dosyası edinebilir veya kendi dosyanızı oluşturup çalıştırabilirsiniz.

GBL ikilisini edinme ve çalıştırma

GBL, tek bir UEFI uygulaması ikili dosyası olarak dağıtılır. Bu ikili dosyayı, Android'in standart güncelleme mekanizmasını kullanarak cihazın temel donanım yazılımından bağımsız olarak güncelleyebilirsiniz.

Android 16'dan itibaren, ARM-64 yonga setini temel alan bir cihaz gönderiyorsanız GBL'nin Google sertifikalı en yeni sürümünü dağıtmanızı ve önyükleme zincirinize entegre etmenizi önemle tavsiye ederiz.

GBL oluşturma

GBL oluşturmak için:

  1. Repo aracının ve Bazel bootstrap'in yüklü olduğunu doğrulayın:

    sudo apt install repo bazel-bootstrap
    
  2. uefi-gbl-mainline manifest dosyasını kullanarak geçerli dizininizi kaynak kontrolü için başlatın:

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. UEFI uygulamasını oluşturun:

    tools/bazel run //bootable/libbootloader:gbl_efi_dist
    

Android sanal cihazında GBL'yi test etme

  1. Cuttlefish içinde GBL'yi çalıştırma:

    cvd start --android_efi_loader=path_to_the_UEFI_app ...
    

    Bu cvd start komutu, Android'i doğrudan başlatmak yerine Android'i başlatmak için UEFI uygulamasını kullanır.

Hataları bildirme ve önyükleyici ekibiyle iletişime geçme

GBL ile ilgili bir hata bildirmek için Buganizer'daki Android Generic Bootloader bileşenine gidin.

Sorularınız için GBL ekibiyle iletişime geçin veya android-gbl@google.com adresine e-posta gönderin.