Android 9, başlatma görüntüsünde bir sürüm alanını kullanıma sundu Böylece, geriye dönük uyumluluğu korurken üstbilginin güncellenmesini sağlayabilirsiniz. Bootloader, başlık sürümü alanını kontrol etmeli ve başlığı ayrıştırmalıdır buna göre hazırlar. Kullanıma sunulacak cihazlar:
- Android 13, başlatma başlığı sürüm 3 veya 4'ü kullanabilir. Genel Çekirdek Görüntüsü (GKI) mimarisini destekleyen cihazlarda birincil önyükleme resmi 4. sürümdür ve önyükleme başlığındaki
os_version
alanı sıfır olmalıdır. Cihaz bootloader'ının şunu yapması bekleniyor: Android Doğrulanmış Başlatma'dan (AVB) sürüm bilgilerini alma mülklerini inceleyin. - Android 12, önyükleme başlığı 3 veya 4 sürümünü kullanabilir. Örneğin, Genel Çekirdek Görüntüyü destekleyen cihazlar (GKI) mimari, sürüm 4 birincil önyükleme görüntüsüdür.
- Android 11, başlatma başlığı sürüm 3'ü kullanabilir. Örneğin, Genel Kernel Görüntüsünü destekleyen cihazlar (GKI) mimarisi yoksa birincil önyükleme görüntüsü için bu sürüm kullanılmalıdır.
- Android 10, başlatma başlığı sürüm 2'yi kullanmalıdır.
- Android 9, başlatma başlığı sürüm 1'i kullanmalıdır.
- Android 8 ve önceki sürümler, önyükleme görüntüsü üst bilgisi sürüm 0'ı kullanıyor olarak kabul edilir.
Android 9 veya sonraki sürümleri çalıştıran tüm cihazlarda Satıcı Testi Paketi (VTS), başlatma resmi başlığında doğru sürümün kullanılmasını sağlamak için boot/recovery
resminin biçimini kontrol eder. Desteklenen tüm başlatma ve satıcı başlatma işlemlerinde AOSP ayrıntılarını görüntülemek için
resim üstbilgileri,
system/tools/mkbootimg/include/bootimg/bootimg.h
.
Başlatma görüntüsü başlıkta sürüm oluşturmayı uygulama
mkbootimg
aracı aşağıdaki bağımsız değişkenleri kabul eder.
Bağımsız değişken | Açıklama |
---|---|
header_version |
Başlatma görüntüsü üstbilgi sürümünü ayarlar. Başlık sürümü içeren bir önyükleme resmi:
|
recovery_dtbo |
DTB kullanan mimariler için kullanılır. Kurtarma yolunu belirtir
DTBO resmi. Kurtarma görüntüsü gerektirmeyen A/B cihazları için isteğe bağlıdır.
header_version kullanan A/B olmayan cihazlar:
|
recovery_acpio |
DTB yerine ACPI kullanan mimariler için kullanılır. Yolu belirtir
geri yükleme ACPIO görüntüsüne eklenecektir. Kurtarma resmi gerektirmeyen A/B cihazlar için isteğe bağlıdır. header_version kullanan A/B olmayan cihazlar:
|
dtb |
Başlatma/kurtarma görüntülerinde bulunan DTB görüntüsünün yolu. |
dtb_offset |
base bağımsız değişkenine eklendiğinde fiziksel yükü sağlar
adresine gidin. Örneğin, base
bağımsız değişkeni 0x10000000 ve dtb_offset bağımsız değişkeni
0x01000000 , başlatma görüntüsündeki dtb_addr_field
başlık 0x11000000 olarak doldurulur. |
BoardConfig.mk
cihazı, BOARD_MKBOOTIMG_ARGS
yapılandırmasını kullanıyor
header version
değerini diğer kurula özel mkbootimg
bağımsız değişkenlerine atayın. Örneğin,
örnek:
BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
Android derleme sistemi BoardConfig
değişkenini kullanır
BOARD_PREBUILT_DTBOIMAGE
öğesini kullanarak recovery_dtbo
bağımsız değişkenini
mkbootimg
aracını kullanarak bir kurtarma görüntüsü oluşturun. Ayrıntılı bilgi için
Android Açık Kaynak Projesi (AOSP) değişiklikleri, ilişkili değişiklik listelerini inceleyin
başlatma görüntüsü başlığı için
sürüm oluşturma hakkında daha fazla bilgi edinin.
Başlatma görüntüsü başlığı, sürüm 4
Android 12, başlatma görüntüsünde bir boot_signature
sağlar
çekirdeğin bütünlüğünü kontrol etmek ve kontrol etmek için kullanılabilen
ramdisk'e dokunun. Kontrolün gerçekleştirildiği yer:
VtsSecurityAvbTest
ve GKI mimarisini kullanan cihazlar için gereklidir. Ancak
boot_signature
, cihaza özel doğrulanmış başlatma işleminde yer almaz
ve yalnızca VTS'de kullanılır. GKI boot.img panosunu inceleyin
yapılandırma
ve GKI onaylı başlatma
Ayarlar
inceleyebilirsiniz.
Tedarikçi firma başlatma görüntüsü başlık sürüm 4 birden çok sağlayıcı ramdisk parçasını destekler.
Önyükleme resmi başlık sürümünün 4. sürümü aşağıdaki biçimi kullanır.
struct boot_img_hdr
{
#define BOOT_MAGIC_SIZE 8
uint8_t magic[BOOT_MAGIC_SIZE];
uint32_t kernel_size; /* size in bytes */
uint32_t ramdisk_size; /* size in bytes */
uint32_t os_version;
uint32_t header_size; /* size of boot image header in bytes */
uint32_t reserved[4];
uint32_t header_version; /* offset remains constant for version check */
#define BOOT_ARGS_SIZE 512
#define BOOT_EXTRA_ARGS_SIZE 1024
uint8_t cmdline[BOOT_ARGS_SIZE + BOOT_EXTRA_ARGS_SIZE];
uint32_t signature_size; /* size in bytes */
};
Başlatma görüntüsü üstbilgisi, sürüm 3
Android 11, başlatma görüntüsü başlığını sürüm 3'e günceller. Bu işlem aşağıdaki verileri kaldırır:
İkinci aşama bootloader.
second_size
vesecond_addr
alanları artık önyükleme resmi üstbilgisinde görünmez. İkinci aşamalı bir önyükleyiciye sahip cihazlar, bu önyükleyiciyi kendi bölümlerinde saklamalıdır.Kurtarma görüntüsü. Kurtarma resmi belirtme şartı kullanımdan kaldırıldı ve
recovery_dtbo_size
,recovery_dtbo_offset
,recovery_acpio_size
verecovery_acpio_offset
alanları artık önyükleme resmi başlığında görünmüyor.A/B cihazları, şunları gereksiz hale getiren bir güncelleme ve kurtarma şeması kullanır: kurtarma için bir DTBO veya ACPIO görüntüsü belirtin.
Kurtarma görüntüsü belirtmek isteyen A/B olmayan cihazlar (DTBO veya ACPIO), başlatma görüntüsü başlık sürüm 1 veya 2'yi kullanmalıdır.
Cihaz ağacı blob'u (DTB). DTB, tedarikçi önyükleme bölümünde depolandığından
dtb_size
vedtb_addr
alanları artık önyükleme resmi üstbilgisinde görünmez (ancak tedarikçi önyükleme resmi üstbilgisinde bulunur).
Cihazlar, Genel Çekirdek Görüntüsü ile uyumlu olmak için başlatma görüntüsü başlığı sürüm 3'ü kullanabilir
(GKI) mimarisi,
Çekirdek çekirdeği birleştiren ve paket için gereken tedarikçi modülleri
vendor_boot
bölümü için başlat (bu, başlatma görüntüsünün yalnızca GKI içerdiği anlamına gelir)
bileşenler). Şu durumda olan cihazlar:
GKI'yi kullanın (android-4.19 veya android-5.4 çekirdeği gerekir) ancak A/B güncellemelerini kullanmayın. Başlatma görüntüsü için 3. sürüm, kurtarma görüntüsü için 2. sürüm başlatma resmini kullanarak kurtarma resmini belirtebilirsiniz.
GKI kullanmayın ve A/B güncellemeleri kullanmamak için hem başlatma hem de kurtarma görüntüleri için başlatma görüntüsü sürümü 1 veya 2'dir.
Başlatma görüntüsü başlık sürümünün 3. sürümü aşağıdaki biçimi kullanır.
struct boot_img_hdr
{
#define BOOT_MAGIC_SIZE 8
uint8_t magic[BOOT_MAGIC_SIZE];
uint32_t kernel_size; /* size in bytes */
uint32_t ramdisk_size; /* size in bytes */
uint32_t os_version;
uint32_t header_size; /* size of boot image header in bytes */
uint32_t reserved[4];
uint32_t header_version; /* offset remains constant for version check */
#define BOOT_ARGS_SIZE 512
#define BOOT_EXTRA_ARGS_SIZE 1024
uint8_t cmdline[BOOT_ARGS_SIZE + BOOT_EXTRA_ARGS_SIZE];
};
Önyükleme resmi başlığı, sürüm 2
Android 10, başlatma görüntüsü başlığını sürüm 2'ye günceller. Kurtarma işlemi için bir bölüm ekleyen DTB resim bilgileri (resim boyutu) ve fiziksel yük adresi) ekleyin.
Başlatma görüntüsü başlık sürümünün 2. sürümünde aşağıdaki biçim kullanılır.
struct boot_img_hdr
{
uint8_t magic[BOOT_MAGIC_SIZE];
uint32_t kernel_size; /* size in bytes */
uint32_t kernel_addr; /* physical load addr */
uint32_t ramdisk_size; /* size in bytes */
uint32_t ramdisk_addr; /* physical load addr */
uint32_t second_size; /* size in bytes */
uint32_t second_addr; /* physical load addr */
uint32_t tags_addr; /* physical addr for kernel tags */
uint32_t page_size; /* flash page size we assume */
uint32_t header_version;
uint32_t os_version;
uint8_t name[BOOT_NAME_SIZE]; /* asciiz product name */
uint8_t cmdline[BOOT_ARGS_SIZE];
uint32_t id[8]; /* timestamp / checksum / sha1 / etc */
uint8_t extra_cmdline[BOOT_EXTRA_ARGS_SIZE];
uint32_t recovery_[dtbo|acpio]_size; /* size of recovery image */
uint64_t recovery_[dtbo|acpio]_offset; /* offset in boot image */
uint32_t header_size; /* size of boot image header in bytes */
uint32_t dtb_size; /* size of dtb image */
uint64_t dtb_addr; /* physical load address */
};
Başlatma görüntüsü üstbilgisi, sürüm 1
Android 9, başlatmanın unused
alanını dönüştürür
üstbilgi sürümü alanına yüklemenizi sağlar. Android ile kullanıma sunulan cihazlar
9, üstbilgi ile başlatma görüntüsü başlığını kullanmalıdır
sürüm 1 veya daha yeni bir sürüme ayarlanmalıdır (bu, VTS tarafından doğrulanır).
Önyükleme resmi başlığı sürümünün 1. sürümü aşağıdaki biçimi kullanır.
struct boot_img_hdr
{
uint8_t magic[BOOT_MAGIC_SIZE];
uint32_t kernel_size; /* size in bytes */
uint32_t kernel_addr; /* physical load addr */
uint32_t ramdisk_size; /* size in bytes */
uint32_t ramdisk_addr; /* physical load addr */
uint32_t second_size; /* size in bytes */
uint32_t second_addr; /* physical load addr */
uint32_t tags_addr; /* physical addr for kernel tags */
uint32_t page_size; /* flash page size we assume */
uint32_t header_version;
uint32_t os_version;
uint8_t name[BOOT_NAME_SIZE]; /* asciiz product name */
uint8_t cmdline[BOOT_ARGS_SIZE];
uint32_t id[8]; /* timestamp / checksum / sha1 / etc */
uint8_t extra_cmdline[BOOT_EXTRA_ARGS_SIZE];
uint32_t recovery_[dtbo|acpio]_size; /* size of recovery image */
uint64_t recovery_[dtbo|acpio]_offset; /* offset in boot image */
uint32_t header_size; /* size of boot image header in bytes */
};
A/B olmayan cihazlar, her cihaz için bir DTB/ACPI yer paylaşımlı resim yardımcı olacak kablosuz (OTA) güncelleme hataları. (A/B cihazlarında bu sorun bulunmaz ve bir bindirme görüntüsü belirtmeniz gerekmez.) Bir DTBO görüntüsü veya bir ACPIO görüntüsü vardır, ancak ikisi birden kullanılamaz (çünkü bunlar farklı mimarilerde kullanılmaktadır). Başlatma görüntüsü üstbilgisini doğru şekilde yapılandırmak için:
Kurtarma için DTBO resmi.
recovery_dtbo_size
verecovery_dtbo_offset
alanlarını ekleyin (recovery_acpio_size
verecovery_acpio_offset
alanlarını eklemeyin).Kurtarma için bir ACPIO resmi.
recovery_acpio_size
verecovery_acpio_offset
alanlarını ekleyin (recovery_dtbo_size
verecovery_dtbo_offset
alanlarını eklemeyin).
header_size
alanı, başlatma görüntüsü başlığının boyutunu içerir. Açılışta
resim üstbilgisi sürümü 1 olarak ayarlanırsa id
alanı şunun için SHA-1 özetini içerir:
açılış görüntüsünün recovery_[dtbo|acpio]
bölümünü
kernel
, ramdisk
ve second sections
. Ayrıntılı bilgi için
recovery_[dtbo|acpio]_size
ve recovery_[dtbo|acpio]_offset
alanları için bkz.
Kurtarma Görüntüleri.
Eski başlatma görüntüsü üstbilgisi, sürüm 0
Android 9'dan önce eski önyükleme resmi başlığını kullanan cihazlar, 0 sürümüne sahip bir önyükleme resmi başlığı kullanıyor olarak kabul edilir.
struct boot_img_hdr
{
uint8_t magic[BOOT_MAGIC_SIZE];
uint32_t kernel_size; /* size in bytes */
uint32_t kernel_addr; /* physical load addr */
uint32_t ramdisk_size; /* size in bytes */
uint32_t ramdisk_addr; /* physical load addr */
uint32_t second_size; /* size in bytes */
uint32_t second_addr; /* physical load addr */
uint32_t tags_addr; /* physical addr for kernel tags */
uint32_t page_size; /* flash page size we assume */
uint32_t unused;
uint32_t os_version;
uint8_t name[BOOT_NAME_SIZE]; /* asciiz product name */
uint8_t cmdline[BOOT_ARGS_SIZE];
uint32_t id[8]; /* timestamp / checksum / sha1 / etc */
uint8_t extra_cmdline[BOOT_EXTRA_ARGS_SIZE];
};