Android 10.0 Fastboot 動(dòng)態(tài)分區(qū)燒錄
1.概覽
1.Fastbootd簡介
動(dòng)態(tài)分區(qū)(Dynamic Partitions)是Android 10新增功能,是用戶空間的分區(qū)系統(tǒng)(userspace partitioning system to Android)欢际。
Fastbootd模式是伴隨動(dòng)態(tài)分區(qū)功能而引入的一項(xiàng)新功能已脓。動(dòng)態(tài)分區(qū)是用戶空間的分區(qū)纵隔,而Bootloader是不能訪問用戶空間的動(dòng)態(tài)分區(qū)的锯岖。因此,Android 10將原Bootloader一分為二检碗,將用戶空間的功能移動(dòng)到recovery鏡像形成Fastbootd模式扇雕,剩下的Bootloader功能即形成Bootloader模式。
從分區(qū)燒錄角度看,Bootloader模式用于燒錄和管理bootloader绪囱、radio测蹲、boot、recovery等物理分區(qū)鬼吵,F(xiàn)astbootd模式用于燒錄和管理動(dòng)態(tài)分區(qū)及super分區(qū)扣甲。
燒錄和管理動(dòng)態(tài)分區(qū)必須先解鎖Bootloader。動(dòng)態(tài)分區(qū)一般包括:system齿椅、vendor琉挖、product、odm等涣脚。
2.依賴條件
依賴條件至少包含如下:
- Android版本為10(或以上)示辈,且支持動(dòng)態(tài)分區(qū)功能。
- 燒錄動(dòng)態(tài)分區(qū)前必須先解鎖設(shè)備遣蚀。
2.動(dòng)態(tài)分區(qū)燒錄和管理
1.燒錄前準(zhǔn)備工作
1.燒錄工具
手機(jī)連接PC后矾麻,通過fastboot來燒錄動(dòng)態(tài)分區(qū)。
fastboot工具是Android原生的芭梯,可從Android原生SDK Platform-Tools中獲取险耀,包括Linux版本和Window版本:
2.進(jìn)Fastbootd模式
進(jìn)入Fastbootd模式的方法有3種:
- 在正常開機(jī)后,執(zhí)行adb reboot fastboot進(jìn)入粥帚。
- 進(jìn)入recovery模式胰耗,再通過菜單選擇“Enter fastboot”進(jìn)入。
- 進(jìn)入Bootloader模式芒涡,執(zhí)行fastboot reboot fastboot進(jìn)入柴灯。
3.確保設(shè)備已解鎖
燒錄和管理動(dòng)態(tài)分區(qū)的前提是設(shè)備解鎖。在Fastbootd模式下费尽,執(zhí)行下面命令獲取設(shè)備解鎖狀態(tài)赠群。
fastboot getvar unlocked
yes為解鎖狀態(tài),no為上鎖狀態(tài)旱幼。如圖所示查描,設(shè)備處于解鎖狀態(tài)。
若設(shè)備未解鎖柏卤,則不能燒錄和管理動(dòng)態(tài)分區(qū)冬三。如圖所示,執(zhí)行燒錄命令缘缚,會提示錯(cuò)誤“Command not available on locked devices”勾笆。
只要bootloader解鎖設(shè)備成功,Debug版本桥滨、User版本都可以燒錄動(dòng)態(tài)分區(qū)窝爪。
2.管理動(dòng)態(tài)分區(qū)
1.判斷邏輯分區(qū)
判斷邏輯分區(qū)命令格式如下:
fastboot getvar is-logical:<partition>
若是邏輯分區(qū)弛车,則返回yes;若是物理分區(qū)蒲每,則返回no纷跛。由下圖可知,system分區(qū)的返回結(jié)果是yes邀杏,所以system分區(qū)是邏輯分區(qū)贫奠;boot分區(qū)返回結(jié)果是no,所以boot分區(qū)是物理分區(qū)淮阐。
2.查詢邏輯分區(qū)
可以根據(jù)fastboot getvar all的結(jié)果以及關(guān)鍵字is-logical過濾所有的分區(qū)叮阅,在根據(jù)yes找到所有的邏輯分區(qū)刁品。
根據(jù)以上過濾方法泣特,可以查詢到邏輯分區(qū),如圖所示:
在Linux環(huán)境下挑随,可以使用grep命令來過濾邏輯分區(qū)
3.創(chuàng)建邏輯分區(qū)
創(chuàng)建邏輯分區(qū)命令格式如下:
fastboot create-logical-partition <partition> <size>
創(chuàng)建邏輯分區(qū)如下圖所示
在創(chuàng)建邏輯分區(qū)后状您,可以檢查是否真的創(chuàng)建成功。通過fastboot getvar all過濾出所有的邏輯分區(qū)兜挨,檢查是否包含自己創(chuàng)建的邏輯分區(qū)膏孟。
4.調(diào)整邏輯分區(qū)
調(diào)整邏輯分區(qū)命令格式如下:
fastboot resize-logical-partition <partition> <size>
如下圖所示,邏輯分區(qū)是4K字節(jié)對齊拌汇,調(diào)整邏輯分區(qū)大小為4K+1字節(jié)(4096+1字節(jié))
執(zhí)行完成后柒桑,查詢此邏輯分區(qū)大小調(diào)整為8K字節(jié),如圖所示噪舀。
5.刪除邏輯分區(qū)
刪除邏輯分區(qū)命令格式如下:
fastboot delete-logical-partition <partition>
刪除“l(fā)ogicaltest”的邏輯分區(qū)
在刪除邏輯分區(qū)后魁淳,可以檢查刪除成功沒有。通過fastboot getvar all過濾出所有邏輯分區(qū)查看与倡。
3.燒錄動(dòng)態(tài)分區(qū)
燒錄動(dòng)態(tài)分區(qū)命令格式如下:
fastboot flash <partition name> <filename>
動(dòng)態(tài)分區(qū)都可以使用此命令燒錄界逛。如圖所示。
動(dòng)態(tài)分區(qū)燒錄后纺座,需要同步燒錄動(dòng)態(tài)分區(qū)對應(yīng)的vbmeta分區(qū)息拜,否則設(shè)備燒錄后在上鎖,驗(yàn)證啟動(dòng)會失敗净响。
3.Super鏡像燒錄
super鏡像燒錄命令格式如下:
fastboot flash super super.img
燒錄super鏡像
4.Vbmeta鏡像燒錄
動(dòng)態(tài)分區(qū)燒錄后少欺,需要同步燒錄動(dòng)態(tài)分區(qū)對應(yīng)的vbmeta分區(qū),否則設(shè)備燒錄后在上鎖馋贤,重啟后可能無法開機(jī)赞别。
動(dòng)態(tài)分區(qū)和對應(yīng)vbmeta
動(dòng)態(tài)分區(qū) | 對應(yīng)vbmeta | 鏡像 |
---|---|---|
System | vbmeta_system | vbmeta_system.img |
Product | vbmeta_system | vbmeta_system.img |
Vendor | vbmeta_vendor | vbmeta_vendor.img |
燒錄vbmeta鏡像
從分區(qū)燒錄角度看,Bootloader模式可燒錄bootloader掸掸、radio氯庆、boot蹭秋、recovery分區(qū),F(xiàn)astbootd模式可燒錄system堤撵、vendor仁讨、product等動(dòng)態(tài)分區(qū)及super、vbmeta分區(qū)实昨。
參考https://source.android.google.cn/devices/bootloader/fastbootd