Bu sayfada, Genel Önyükleyici (GBL) ikili programının 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ı Arabirimi (UEFI) uyumluluğu. Donanım yazılımı, gerekli UEFI protokollerini uygulamalı ve kullanmalıdır. Ayrıca, üretici yazılımı, tanımlanmış UEFI protokollerini kullanarak üreticiye özel uzantılara izin vermelidir.
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 görüntülerinin kimliğini doğrulayabilir.
Başlatma modları İkili dosya; normal başlatma, kurtarma modunda 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 program, korumalı sanal makineler varken Android çekirdeğinden önce önceden doğrulanmış korumalı sanal makine donanım 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. Başlatma 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ı 8 MB (veya daha büyük) iki FAT 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.
- FAT, yaygın ve basit bir dosya sistemi olduğu için kullanılır.
- FAT12, FAT16 ve FAT32 arasından ihtiyaçlarınıza uygun FAT dosya sistemini seçmenizi öneririz.
- 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ış olarak yaklaşık 2 MB'tır. 8 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 güncellemesi, Android OTA tarafından desteklenmez. - Her iki FAT bölümü için kullanılan bölüm türü GUID'si, EFI Sistem Bölümü GUID'sine
C12A7328-F81F-11D2-BA4B-00A0C93EC93Bkarşılık gelmelidir.
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 BOZULMADAN bırakılmalı 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, FAT 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 başlangıç değerleri ve RNG başlangıç değerleri 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, işlem yapmayan 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.
Donanım yazılımı, GBL'ye UEFI değişkenleri sağlamalıdır. Bu değişkenler
GBL_EFI_VENDOR_GUIDdeğeri5a6d92f3-a2d0-4083-91a1-a50f6c3d9830ile ayarlanmalıdır.gbl_fw_api_level, platform yazılımının API düzeyine ayarlanmalıdır. Bu, satıcı yazılımının API düzeyini gösterir. Bu değişken,ro.board.api_levelsistem özelliğiyle aynı değere sahip olmalıdır.
GBL entegre edilirken 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.
Run GBL
Ç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 programı, 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 en yeni Google sertifikalı sürümünü dağıtmanızı ve önyükleme zincirinize entegre etmenizi önemle tavsiye ederiz.
Bu GBL derlemesinde hata ayıklamak için aşağıdaki yapay nesneleri indirerek hata ayıklama işlemine yardımcı olabilirsiniz:
- Sembol tablosu, Google sertifikalı GBL derlemesi için donanım hata ayıklayıcı ve GDB kullanır.
- Manifest,
repokullanarak bu GBL derlemesini kaynaktan yeniden oluşturarak imzalı derlemede değişiklik yapar. - İlgili GBL geliştirici derlemesi, başlatma veya imzalı üretim derlemesini etkileyen bir sorunun daha az karmaşık bir şekilde hata ayıklanması için yararlıdır.
- Sembol tablosu, donanım hata ayıklayıcısı ve GDB ile GBL geliştirici derlemesi için yararlıdır.
Tüm sürümlerdeki sertifikalı ikili dosyaları ve sembolleri görüntülemek için GBL sürüm derlemeleri başlıklı makaleyi inceleyin.
GBL oluşturma
GBL oluşturmak için:
repoaracı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.