進行我們的可用性調查以改進此站點。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

圖片

引導加載程序依賴於以下映像。

  • 開機這些圖像包含一個內核和ramdisk圖像使用未修飾的結合mkbootimg (對於實施方式中,參照system/core/mkbootimg 。自舉程序讀取bootimg.h通過生成的頭文件mkbootimg並更新內核頭包含正確的位置和大小閃存中ramdisk的大小,內核的基地址,命令行參數等,然後,引導程序將引導映像中指定的命令行附加到引導程序生成的命令行的末尾。

  • 核心。這些映像使用標準的Linux格式(例如zImageImageImage.gz ),可以獨立Image.gz ,與ramdisk映像組合, Image.gzboot分區或從內存啟動。創建內核映像時,建議使用串聯的設備樹二進製文件(而不是設備樹的單獨分區)。在不同的電路板修訂版中使用多個設備樹Blob(DTB)時,請按電路板修訂版的降序連接多個DTB。

  • Ramdisk。這些映像包含一個適合掛載為rootfs的根文件系統。使用mkbootfs將它們與內核映像組合,然後mkbootfs到引導分區中。

  • 文件系統。這些映像包括systemuserdatarecovery映像,並且必須使用Yaffs2格式或稀疏映像格式。

圖片格式

文件系統映像可以是Yaffs2格式,也可以是稀疏映像格式。

Yaffs2

使用原始NAND存儲的設備必須使用由未經修改的mkyaffs2image生成的Yaffs2格式的mkyaffs2image (在AOSP中,請參閱external / yaffs2 / yaffs2 / utils 。引導加載程序負責使用這些映像,並將yaffs額外數據重新放置在yaffs的適當位置。給定NAND硬件的帶外區域如果需要軟件ECC,則引導加載程序此時也應執行該計算。

有關圖像格式的詳細信息,請參閱《 Yaffs 2規格》

所有Android設備均應支持稀疏圖像格式。

使用基於塊的存儲的設備應支持ext4f2fs 。要快速傳輸並刷新大型空的ext4文件系統(例如userdata ),請以稀疏格式存儲映像,該格式包含有關可以不寫文件系統哪些區域的信息。

圖片格式

稀疏圖像格式包含文件頭,後跟一系列塊。文件頭,塊頭和塊數據是4字節的倍數,並且所有字段都是無符號的little-endian。

文件頭使用以下格式:

  • 32位魔術:0xed26ff3a
  • 16位主要版本(0x1)-拒絕具有較高主要版本的圖像
  • 16位次要版本(0x0)-允許具有更高次要版本的圖像
  • 16位文件標頭大小(以字節為單位)(在v1.0中為28)
  • 16位塊頭大小(以字節為單位)(在v1.0中為12)
  • 32位塊大小(以字節為單位),必須為4的倍數
  • 輸出文件中的32位塊總數
  • 輸入文件中的32位塊總數
  • 原始數據的32位CRC32校驗和,將“無關”計數為0標準802.3多項式(使用公共域表實現)。

文件塊使用以下格式:

  • 16位塊類型:
    • 0xCAC1原始(按塊大小*塊大小以字節為單位)
    • 0xCAC2填充(後跟4個字節的填充數據)
    • 0xCAC3不在乎(後跟0個字節)
  • 保留16位(寫為0,讀時忽略)
  • 輸出圖像中以塊為單位的32位塊大小
  • 塊輸入文件的32位總大小(以字節為單位),包括塊頭和數據

創建稀疏圖像

您可以使用mke2fs實用程序以稀疏映像格式創建映像(這也是用於創建引導加載程序讀取並閃爍的映像的工具)。

實施作家

mke2fs實用程序知道需要寫入圖像的哪些區域,並對它們之間的“無關”塊進行編碼。另一個工具img2simg將非稀疏圖像轉換為稀疏圖像。常規圖片沒有有關“無關”區域的信息;轉換所能做的最好的事情就是尋找重複數據塊以減小最終圖像尺寸。

實施讀者

讀者應拒絕主要版本未知的圖像,但接受次要版本未知的圖像。讀者可能會拒絕不支持的塊大小圖像。在對主要版本進行驗證之後,閱讀器應忽略類型字段未知的塊,使用“文件中的塊大小”跳過文件中的塊,並在輸出中跳過“塊中的塊大小”塊。

應該為寫入磁盤的數據計算循環冗餘校驗(802.3 CRC32)。任何未寫的區域(無關緊要或跳過的塊)在CRC中均應計為0。應將寫入或跳過的塊總數與標題中的“總塊數”字段進行比較。工具simg2img將稀疏圖像格式轉換為標準圖像,從而丟失了稀疏信息。

閃爍的圖像

flash ,除非主命令不應刪除分區fastboot工具發送一個erase第一命令。這允許使用以“跳過”塊開頭的多個稀疏圖像在多個較小的塊中閃爍一個非常大的分區,以在已寫入的區域中查找。按需創建這些圖像已經被處理fastboot主機端工具。

在以解鎖模式閃爍之前,應先對無線電和引導加載程序映像進行完整性檢查。例如,與從構建創建的android-info.txt進行比較,並確認版本匹配。還要在刷新時檢查引導加載程序映像簽名,以確保它在引導過程中通過了驗證(可能包括防回滾功能)。

在Google品牌的設備上,從第一個商業發售的引導加載程序開始,刷新到較早版本的引導加載程序應該可以正常工作。有關fastboot協議的詳細信息,請參閱system/core/fastboot/README.md