/misc partition layout

September 23, 2021 · View on GitHub

---SizedescriptionOffset
Legacybootloader_message(2K)--> 0
command32updated by linux/bootloader
status32deprecated
recovery768talking channel between normal/recovery modes
stage32format "#/#", eg, "1/3"
reserved1184
-----
Vendor Areavendor bootloader msgN/A2KVendor Area-->2KB
vendor bootloader msgN/A12Kpure Vendor area-->4KB
-----
Wipewipe_package info16Koffset 16KB, Used by uncrypt and recovery to store wipe_package for A/B devices-->16KB
-----
Systemsystem_space -> 1
misc_virtual_ab_message
(64)-->32KB
version1
magic4
merge_status1
source_slot1
reserved57

vendor area implementation example from Google:

使用legacy_boot_control.cpp, 把libboot_control.a的实现的类android::bootable::BootControl包装进去

android.hardware.boot@1.1-impl

使用BootControl.cpp

android::hardware::boot::V1_1::implementation::BootControl

直接使用"android::bootable::BootControl"的实现

libboot_control.a

code location:

hardware/interfaces/boot/1.1/default/boot_control

https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/master/boot/1.1/default/boot_control/

---OffsetSizedescription
Vendor Areabootloader_message_ab2K(2K)Vendor Area
slot_suffix32
update_channel128
reserved1888

32 BYTES "slot_suffix" part details:

---OffsetSizedescription
bootloader_control(32)
slot_suffix4
magic4
version1
nb_slot3bitsnumber slots
recovery_tries_remaining3bits
merge_status3bits
reserved01
slot_info8slot_metadata * 4
reverved18
crc32_le4
slot_metadata(2)
priority4bits
tries_remaining3bits
successful_boot1bit
verity_corrupted1bit
reserved7bits