Görüntüler

Önyükleyici aşağıdaki resimlere dayanır.

  • Bot. Bu görüntüler, modifiye edilmemiş bir kullanılarak bir araya getirilmiş, bir çekirdek ve büyüklüğünde bir resmi içeren mkbootimg uygulama için (bakınız system/core/mkbootimg . Açılış okuma bootimg.h tarafından oluşturulan başlık dosyasını mkbootimg ve doğru konumunu ve boyutunu içerir için çekirdek başlığını güncelleştirir ramdisk'in flash'taki konumu, çekirdeğin temel adresi, komut satırı parametreleri ve daha fazlası.Önyükleyici daha sonra önyükleme görüntüsünde belirtilen komut satırını önyükleyici tarafından oluşturulan komut satırının sonuna ekler.

  • Çekirdek. Bu görüntüler bir standart Linux biçimi (örneğin kullanmak zImage , Image veya Image.gz ) ve Ramdiski görüntüleri ile birlikte bağımsız parladı parladı edilebilir boot bölümü veya bellekten boot. Çekirdek görüntüleri oluştururken, birleştirilmiş aygıt ağacı ikili dosyaları önerilir (aygıt ağacı için ayrı bir bölüm yerine). Farklı pano revizyonları için birden çok cihaz ağacı bloğu (DTB) kullanırken, birden çok DTB'yi pano revizyonunun azalan sırasına göre birleştirin.

  • Ramdisk. Bu görüntüler bir şekilde monte etmek için uygun bir kök dosya sistemini ihtiva rootfs . Onlar kullanarak çekirdek görüntülerle birleştirilir mkbootfs sonra önyükleme bölümü içine parladı.

  • Dosya sistemi. Bu görüntüler dahil system , userdata ve recovery görüntüleri ve Yaffs2 biçimi veya seyrek görüntü biçimini kullanmalısınız.

Görüntü biçimleri

Dosya sistemi görüntüleri Yaffs2 formatı veya seyrek görüntü formatı olabilir.

yaffs2

Ham NAND depolama kullanan cihazlar değiştirilmemiş bir tarafından üretilen Yaffs2 formatında resimler kullanmalısınız mkyaffs2image bakın AOSP içinde ( harici / yaffs2 / yaffs2 / utils . Bootloader bu görüntüleri alıcı ve taşındıktan sorumludur yaffs uygun konuma ek verileri verilen NAND donanımı için bant dışı alan Yazılım ECC'si gerekiyorsa, önyükleyici de bu hesaplamayı yapmalıdır.

Resim biçimi hakkında ayrıntılı bilgi için, bkz Yaffs 2 Şartname .

Seyrek

Tüm Android cihazlar seyrek görüntü biçimini desteklemelidir.

Desteklemelidir blok tabanlı depolama kullanan cihazlar ext4 veya f2fs . Hızlı bir şekilde aktarmak ve büyük, boş flaş ext4 (örneğin dosya sistemlerini userdata ), dosya sisteminin alanları yazılmamış bırakılabilir hangi hakkında bilgi içeren bir seyrek biçimde görüntüyü depolar.

Görüntü formatı

Seyrek görüntü formatı, bir dosya başlığı ve ardından bir dizi parça içerir. Dosya başlığı, yığın başlığı ve yığın verileri 4 baytın katlarıdır ve tüm alanlar işaretsiz küçük endiandır.

Dosya başlığı aşağıdaki biçimi kullanır:

  • 32-bit büyü: 0xed26ff3a
  • 16 bit ana sürüm (0x1) - daha yüksek ana sürümlere sahip görüntüleri reddedin
  • 16 bit küçük sürüm (0x0) - daha yüksek alt sürümlere sahip resimlere izin verin
  • Bayt cinsinden 16 bit dosya başlığı boyutu (v1.0'da 28)
  • Bayt cinsinden 16 bitlik yığın başlık boyutu (v1.0'da 12)
  • Bayt cinsinden 32 bit blok boyutu, 4'ün katı olmalıdır
  • Çıktı dosyasında 32 bit toplam blok
  • Giriş dosyasındaki 32 bitlik toplam parçalar
  • "Umurumda değil" 0 Standart 802.3 polinomu olarak sayılan orijinal verilerin 32 bit CRC32 sağlama toplamı (bir genel etki alanı tablosu uygulaması kullanarak).

Bir dosya öbeği aşağıdaki biçimi kullanır:

  • 16 bit yığın türü:
    • 0xCAC1 ham (ardından blok cinsinden boyut * bayt cinsinden blok boyutu)
    • 0xCAC2 doldurma (ardından 4 baytlık doldurma verisi)
    • 0xCAC3 umursamıyor (ardından 0 bayt geliyor)
  • 16 bit ayrılmış (0 olarak yaz, okurken yoksay)
  • Çıkış görüntüsündeki bloklarda 32 bit yığın boyutu
  • Yığın başlığı ve verileri dahil olmak üzere yığın girdi dosyasının bayt cinsinden toplam 32 bit boyutu

Seyrek görüntüler oluşturma

Sen kullanabilirsiniz mke2fs (bu da bootloader okur görüntü ve yanıp oluşturmak için kullanılan bir araçtır) seyrek görüntü formatında görüntüler oluşturmak için yarar.

Yazarı uygulamak

mke2fs yarar görüntü ihtiyaç alanları yazılacak ve kodlar aralarındaki parçalar "umurumda değil" bilir. Bir başka araç, img2simg , seyrek görüntülere olmayan seyrek görüntüleri dönüştürür. Normal görüntülerin "umurumda değil" alanları hakkında hiçbir bilgisi yoktur; Bir dönüştürmenin yapabileceği en iyi şey, ortaya çıkan görüntü boyutunu küçültmek için tekrarlanan veri bloklarını aramaktır.

Okuyucuyu uygulamak

Okuyucular, ana sürümleri bilinmeyen görüntüleri reddetmeli, ancak alt sürümleri bilinmeyen görüntüleri kabul etmelidir. Okuyucular, desteklemedikleri yığın boyutlarına sahip görüntüleri reddedebilir. Ana sürüm doğrulandıktan sonra, okuyucu, "dosyadaki yığın boyutu"nu kullanarak dosyadaki yığını atlamalı ve çıktıdaki "bloklardaki yığın boyutu" bloklarını atlamalı, bilinmeyen tür alanları olan parçaları görmezden gelmelidir.

Diske yazılan veriler için bir döngüsel artıklık denetimi (802.3 CRC32) hesaplanmalıdır. Yazılmayan herhangi bir alan (umurumda değil veya atlanan bir yığın), CRC'de 0 olarak sayılmalıdır. Yazılan veya atlanan toplam blok sayısı, başlıktaki "toplam bloklar" alanıyla karşılaştırılmalıdır. Aracı simg2img seyrek bilgiyi kaybeder standart görüntü dönüşür seyrek resim biçimi.

Yanıp sönen görüntüler

flash konak sürece komut bölümü silmek olmamalıdır fastboot aracı gönderir erase ilk komutu. Bu, önceden yazılmış alanı aramak için bir "atlama" bloğu ile başlayan çok sayıda seyrek görüntü kullanarak çok büyük bir bölümü birden çok küçük parça halinde yanıp sönmeye izin verir. Talep üzerine bu görüntüleri oluşturma zaten tarafından ele alınır fastboot konak yan aracı.

Kilitsiz modda yanıp sönmeden önce radyo ve önyükleyici görüntülerinde sağlık kontrolleri yapılmalıdır. Örnekler için, karşılaştırmak android-info.txt yapı oluşturulmuş ve sürüm eşleşmeleri onaylayın. Ayrıca önyükleme sırasında doğrulamadan geçtiğinden emin olmak için önyükleyici görüntü imzasını flaş zamanında kontrol edin (bu, geri alma önleme özelliklerini içerebilir).

Google markalı cihazlarda, ticari olarak gönderilen ilk önyükleyiciden başlayarak, önyükleyicilerin eski sürümlerine geçiş düzgün şekilde çalışmalıdır. Fastboot protokolü ile ilgili detaylar için, bkz system/core/fastboot/README.md .