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_aveandroid_esp_badlı 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.EFIyolunda 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_PROTOCOLveyaEFI_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:
Repo aracının ve Bazel bootstrap'in yüklü olduğunu doğrulayın:
sudo apt install repo bazel-bootstrapuefi-gbl-mainlinemanifest 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 -j16UEFI uygulamasını oluşturun:
tools/bazel run //bootable/libbootloader:gbl_efi_dist
Android sanal cihazında GBL'yi test etme
Cuttlefish içinde GBL'yi çalıştırma:
cvd start --android_efi_loader=path_to_the_UEFI_app ...Bu
cvd startkomutu, 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.