summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'mkbootimg/mkbootimg')
-rwxr-xr-xmkbootimg/mkbootimg18
1 files changed, 17 insertions, 1 deletions
diff --git a/mkbootimg/mkbootimg b/mkbootimg/mkbootimg
index 5a13da26b..ac20d0503 100755
--- a/mkbootimg/mkbootimg
+++ b/mkbootimg/mkbootimg
@@ -57,7 +57,7 @@ def write_header(args):
57 args.base + args.second_offset, # physical load addr 57 args.base + args.second_offset, # physical load addr
58 args.base + args.tags_offset, # physical addr for kernel tags 58 args.base + args.tags_offset, # physical addr for kernel tags
59 args.pagesize, # flash page size we assume 59 args.pagesize, # flash page size we assume
60 0, # future expansion: MUST be 0 60 args.header_version, # version of bootimage header
61 (args.os_version << 11) | args.os_patch_level)) # os version and patch level 61 (args.os_version << 11) | args.os_patch_level)) # os version and patch level
62 args.output.write(pack('16s', args.board.encode())) # asciiz product name 62 args.output.write(pack('16s', args.board.encode())) # asciiz product name
63 args.output.write(pack('512s', args.cmdline[:512].encode())) 63 args.output.write(pack('512s', args.cmdline[:512].encode()))
@@ -66,10 +66,20 @@ def write_header(args):
66 update_sha(sha, args.kernel) 66 update_sha(sha, args.kernel)
67 update_sha(sha, args.ramdisk) 67 update_sha(sha, args.ramdisk)
68 update_sha(sha, args.second) 68 update_sha(sha, args.second)
69
70 if args.header_version > 0:
71 update_sha(sha, args.recovery_dtbo)
72
69 img_id = pack('32s', sha.digest()) 73 img_id = pack('32s', sha.digest())
70 74
71 args.output.write(img_id) 75 args.output.write(img_id)
72 args.output.write(pack('1024s', args.cmdline[512:].encode())) 76 args.output.write(pack('1024s', args.cmdline[512:].encode()))
77
78 if args.header_version > 0:
79 args.output.write(pack('I', filesize(args.recovery_dtbo))) # size in bytes
80 args.output.write(pack('Q', args.base + args.recovery_dtbo_offset)) # physical load addr
81 args.output.write(pack('I', args.output.tell() + 4)) # size of boot header
82
73 pad_file(args.output, args.pagesize) 83 pad_file(args.output, args.pagesize)
74 return img_id 84 return img_id
75 85
@@ -132,6 +142,7 @@ def parse_cmdline():
132 required=True) 142 required=True)
133 parser.add_argument('--ramdisk', help='path to the ramdisk', type=FileType('rb')) 143 parser.add_argument('--ramdisk', help='path to the ramdisk', type=FileType('rb'))
134 parser.add_argument('--second', help='path to the 2nd bootloader', type=FileType('rb')) 144 parser.add_argument('--second', help='path to the 2nd bootloader', type=FileType('rb'))
145 parser.add_argument('--recovery_dtbo', help='path to the recovery DTBO', type=FileType('rb'))
135 parser.add_argument('--cmdline', help='extra arguments to be passed on the ' 146 parser.add_argument('--cmdline', help='extra arguments to be passed on the '
136 'kernel command line', default='', action=ValidateStrLenAction, maxlen=1536) 147 'kernel command line', default='', action=ValidateStrLenAction, maxlen=1536)
137 parser.add_argument('--base', help='base address', type=parse_int, default=0x10000000) 148 parser.add_argument('--base', help='base address', type=parse_int, default=0x10000000)
@@ -139,6 +150,8 @@ def parse_cmdline():
139 parser.add_argument('--ramdisk_offset', help='ramdisk offset', type=parse_int, default=0x01000000) 150 parser.add_argument('--ramdisk_offset', help='ramdisk offset', type=parse_int, default=0x01000000)
140 parser.add_argument('--second_offset', help='2nd bootloader offset', type=parse_int, 151 parser.add_argument('--second_offset', help='2nd bootloader offset', type=parse_int,
141 default=0x00f00000) 152 default=0x00f00000)
153 parser.add_argument('--recovery_dtbo_offset', help='recovery dtbo offset', type=parse_int,
154 default=0x0f000000)
142 parser.add_argument('--os_version', help='operating system version', type=parse_os_version, 155 parser.add_argument('--os_version', help='operating system version', type=parse_os_version,
143 default=0) 156 default=0)
144 parser.add_argument('--os_patch_level', help='operating system patch level', 157 parser.add_argument('--os_patch_level', help='operating system patch level',
@@ -150,6 +163,7 @@ def parse_cmdline():
150 choices=[2**i for i in range(11,15)], default=2048) 163 choices=[2**i for i in range(11,15)], default=2048)
151 parser.add_argument('--id', help='print the image ID on standard output', 164 parser.add_argument('--id', help='print the image ID on standard output',
152 action='store_true') 165 action='store_true')
166 parser.add_argument('--header_version', help='boot image header version', type=parse_int, default=0)
153 parser.add_argument('-o', '--output', help='output file name', type=FileType('wb'), 167 parser.add_argument('-o', '--output', help='output file name', type=FileType('wb'),
154 required=True) 168 required=True)
155 return parser.parse_args() 169 return parser.parse_args()
@@ -160,6 +174,8 @@ def write_data(args):
160 write_padded_file(args.output, args.ramdisk, args.pagesize) 174 write_padded_file(args.output, args.ramdisk, args.pagesize)
161 write_padded_file(args.output, args.second, args.pagesize) 175 write_padded_file(args.output, args.second, args.pagesize)
162 176
177 if args.header_version > 0:
178 write_padded_file(args.output, args.recovery_dtbo, args.pagesize)
163 179
164def main(): 180def main():
165 args = parse_cmdline() 181 args = parse_cmdline()