|
|
|
@ -1,23 +1,20 @@
|
|
|
|
|
# layout of [vendor\_]boot.img
|
|
|
|
|
|
|
|
|
|
## Image Content Index
|
|
|
|
|
[1. boot.img v0-v2](#1-bootimg-v0-v2)
|
|
|
|
|
|
|
|
|
|
[1 header part](#1-header-part)
|
|
|
|
|
- [1.1 boot.img v0-v2](#11-bootimg-header-v0-v2)
|
|
|
|
|
- [1.2 boot.img v3](#12-bootimg-header-v3)
|
|
|
|
|
- [1.3 vendor\_boot.img v3](#13-vendor_bootimg-header-v3)
|
|
|
|
|
[2. boot.img v3-v4](#2-bootimg-v3-v4)
|
|
|
|
|
|
|
|
|
|
[2 data part](#2-data-part)
|
|
|
|
|
[3. vendor_boot.img v3-v4](#3-vendor_bootimg-v3-v4)
|
|
|
|
|
|
|
|
|
|
[3 signature part](#3-signature-part)
|
|
|
|
|
[4. signature part](#4-signature-part)
|
|
|
|
|
|
|
|
|
|
- [3.1 Boot Image Signature](#31-boot-image-signature-vboot-10)
|
|
|
|
|
- [4.1 Boot Image Signature](#41-boot-image-signature-vboot-10)
|
|
|
|
|
|
|
|
|
|
- [3.2 AVB Footer](#32-avb-footer-vboot-20)
|
|
|
|
|
- [4.2 AVB Footer](#42-avb-footer-vboot-20)
|
|
|
|
|
|
|
|
|
|
## 1. header part
|
|
|
|
|
### 1.1 boot.img header v0-v2
|
|
|
|
|
value at 0x28 is 0x00,0x01,0x02
|
|
|
|
|
## 1. boot.img v0-v2
|
|
|
|
|
### header
|
|
|
|
|
Value at 0x28 is one of {0x00,0x01,0x02,0x03,0x04}, this filed should be read first to identify header version.
|
|
|
|
|
|
|
|
|
|
item size in bytes position
|
|
|
|
|
+-----------------------------------------------------------+ --> 0
|
|
|
|
@ -38,7 +35,7 @@ value at 0x28 is 0x00,0x01,0x02
|
|
|
|
|
|<tags offset> | 4 |
|
|
|
|
|
|--------------------------------+--------------------------| --> 36
|
|
|
|
|
|<page size> | 4 |
|
|
|
|
|
|--------------------------------+--------------------------| --> 40
|
|
|
|
|
|--------------------------------+--------------------------| --> 40 (0x28)
|
|
|
|
|
|<header version> | 4 (value in [0,1,2]) |
|
|
|
|
|
|--------------------------------+--------------------------| --> 44
|
|
|
|
|
|<os version & os patch level> | 4 |
|
|
|
|
@ -66,7 +63,41 @@ value at 0x28 is 0x00,0x01,0x02
|
|
|
|
|
| | - header_size) |
|
|
|
|
|
+--------------------------------+--------------------------+ --> pagesize
|
|
|
|
|
|
|
|
|
|
### 1.2 boot.img header v3
|
|
|
|
|
### data
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+ --> pagesize
|
|
|
|
|
|<kernel> | kernel length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<ramdisk> | ramdisk length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<second bootloader> | second bootloader length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<recovery dtbo> [v1] | recovery dtbo length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> [v1] | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<dtb> [v2] | dtb length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> [v2] | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+ --> end of data part
|
|
|
|
|
|
|
|
|
|
## 2. boot.img v3-v4
|
|
|
|
|
|
|
|
|
|
### header
|
|
|
|
|
|
|
|
|
|
item size in bytes position
|
|
|
|
|
+-----------------------------------------------------------+ --> 0
|
|
|
|
@ -81,16 +112,37 @@ value at 0x28 is 0x00,0x01,0x02
|
|
|
|
|
|<header size> | 4 |
|
|
|
|
|
|--------------------------------+--------------------------| --> 24
|
|
|
|
|
|<reserved> | 4 * 4 |
|
|
|
|
|
|--------------------------------+--------------------------| --> 40
|
|
|
|
|
|<header version> | 4 (value=3) |
|
|
|
|
|
|--------------------------------+--------------------------| --> 40 (0x28)
|
|
|
|
|
|<header version> | 4 (value in [3|4]) |
|
|
|
|
|
|--------------------------------+--------------------------| --> 44
|
|
|
|
|
|<cmdline> | 1024+512=1536 |
|
|
|
|
|
|--------------------------------+--------------------------| --> 1580
|
|
|
|
|
|--------------------------------+--------------------------| --> 44
|
|
|
|
|
|<signature_size> (v4 only) | 4 |
|
|
|
|
|
|--------------------------------+--------------------------| --> 1584
|
|
|
|
|
|<padding> | min(n * page_size |
|
|
|
|
|
| | - header_size) |
|
|
|
|
|
+--------------------------------+--------------------------+ --> pagesize=4096
|
|
|
|
|
|
|
|
|
|
### 1.3 vendor\_boot.img header v3
|
|
|
|
|
### data
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
+-----------------------------------------------------------+ --> pagesize
|
|
|
|
|
|<kernel> | kernel length |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<ramdisk> | ramdisk length |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<boot signature> (v4 only) | boot signature length |
|
|
|
|
|
+--------------------------------+--------------------------+
|
|
|
|
|
|
|
|
|
|
padding calculation:
|
|
|
|
|
|<padding> | min(n * page_size - len) |
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3. vendor\_boot.img v3-v4
|
|
|
|
|
|
|
|
|
|
### header
|
|
|
|
|
|
|
|
|
|
item size in bytes position
|
|
|
|
|
+-----------------------------------------------------------+ --> 0
|
|
|
|
@ -118,45 +170,37 @@ value at 0x28 is 0x00,0x01,0x02
|
|
|
|
|
|--------------------------------+--------------------------| --> 2104
|
|
|
|
|
|<dtb load addr> | 8 |
|
|
|
|
|
|--------------------------------+--------------------------| --> 2112
|
|
|
|
|
|<vendor ramdisk table size> | 4 (v4 only) |
|
|
|
|
|
|--------------------------------+--------------------------| --> 2116
|
|
|
|
|
|<vendor ramdisk table entry num>| 4 (v4 only) |
|
|
|
|
|
|--------------------------------+--------------------------| --> 2120
|
|
|
|
|
|<vendor ramdisk table entry size| 4 (v4 only) |
|
|
|
|
|
|--------------------------------+--------------------------| --> 2124
|
|
|
|
|
|<bootconfig size> | 4 (v4 only) |
|
|
|
|
|
|--------------------------------+--------------------------| --> 2128
|
|
|
|
|
|<padding> | min(n * page_size |
|
|
|
|
|
| | - header_size) |
|
|
|
|
|
+--------------------------------+--------------------------+ --> pagesize
|
|
|
|
|
|
|
|
|
|
## 2. data part
|
|
|
|
|
### data
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
+-----------------------------------------------------------+ --> pagesize
|
|
|
|
|
|<kernel> | kernel length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<ramdisk> | ramdisk length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<second bootloader> | second bootloader length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> | min(n * page_size - len) |
|
|
|
|
|
|<vendor ramdisk section> | padded len |
|
|
|
|
|
+--------------------------------+--------------------------+
|
|
|
|
|
|<dtb> | padded len |
|
|
|
|
|
+--------------------------------+--------------------------+
|
|
|
|
|
|<vendor ramdisk table> | padded len |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<bootconfig> | padded len |
|
|
|
|
|
+--------------------------------+--------------------------+
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<recovery dtbo> [v1] | recovery dtbo length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> [v1] | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|
|
|
|
|
+-----------------------------------------------------------+
|
|
|
|
|
|<dtb> [v2] | dtb length |
|
|
|
|
|
|--------------------------------+--------------------------|
|
|
|
|
|
|<padding> [v2] | min(n * page_size - len) |
|
|
|
|
|
+-----------------------------------------------------------+ --> end of data part
|
|
|
|
|
|
|
|
|
|
## 3. signature part
|
|
|
|
|
## 4. signature part
|
|
|
|
|
|
|
|
|
|
### 3.1 Boot Image Signature (VBoot 1.0)
|
|
|
|
|
### 4.1 Boot Image Signature (VBoot 1.0)
|
|
|
|
|
|
|
|
|
|
+--------------------------------+--------------------------+ --> end of data part
|
|
|
|
|
|<signature> | signature length |
|
|
|
|
@ -164,7 +208,7 @@ value at 0x28 is 0x00,0x01,0x02
|
|
|
|
|
|<padding> | defined by boot_signer |
|
|
|
|
|
+--------------------------------+--------------------------+
|
|
|
|
|
|
|
|
|
|
### 3.2 AVB Footer (VBoot 2.0)
|
|
|
|
|
### 4.2 AVB Footer (VBoot 2.0)
|
|
|
|
|
|
|
|
|
|
item size in bytes position
|
|
|
|
|
+------+--------------------------------+-------------------------+ --> end of data part (say locaton +0)
|
|
|
|
|