Loading mkbootimg/bootimg.h +5 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,11 @@ struct boot_img_hdr uint32_t tags_addr; /* physical addr for kernel tags */ uint32_t page_size; /* flash page size we assume */ uint32_t unused[2]; /* future expansion: should be 0 */ /* operating system version; "1.2.34" -> 010234 */ uint32_t os_version; /* operating system patch level; "2016-01-01" -> 20160101 */ uint32_t os_patch_level; uint8_t name[BOOT_NAME_SIZE]; /* asciiz product name */ Loading mkbootimg/mkbootimg +21 −3 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ from os import fstat from struct import pack from hashlib import sha1 import sys import re def filesize(f): if f is None: Loading Loading @@ -47,7 +48,7 @@ def pad_file(f, padding): def write_header(args): BOOT_MAGIC = 'ANDROID!'.encode() args.output.write(pack('8s', BOOT_MAGIC)) args.output.write(pack('8I', args.output.write(pack('10I', filesize(args.kernel), # size in bytes args.base + args.kernel_offset, # physical load addr filesize(args.ramdisk), # size in bytes Loading @@ -55,8 +56,9 @@ def write_header(args): filesize(args.second), # size in bytes args.base + args.second_offset, # physical load addr args.base + args.tags_offset, # physical addr for kernel tags args.pagesize)) # flash page size we assume args.output.write(pack('8x')) # future expansion: should be 0 args.pagesize, # flash page size we assume args.os_version, # operating system version args.os_patch_level)) # security patch level args.output.write(pack('16s', args.board.encode())) # asciiz product name args.output.write(pack('512s', args.cmdline[:512].encode())) Loading Loading @@ -97,6 +99,18 @@ def write_padded_file(f_out, f_in, padding): def parse_int(x): return int(x, 0) def match_to_int(x): if (x and x.lastindex == 3): return (parse_int(x.group(3)) + parse_int(x.group(2)) * 100 + parse_int(x.group(1)) * 10000) return 0 def parse_os_version(x): return match_to_int(re.search(r'^(\d+)\.(\d{1,2})\.(\d{1,2})', x)) def parse_os_patch_level(x): return match_to_int(re.search(r'^(\d{4,})-(\d{2})-(\d{2})', x)) def parse_cmdline(): parser = ArgumentParser() Loading @@ -111,6 +125,10 @@ def parse_cmdline(): parser.add_argument('--ramdisk_offset', help='ramdisk offset', type=parse_int, default=0x01000000) parser.add_argument('--second_offset', help='2nd bootloader offset', type=parse_int, default=0x00f00000) parser.add_argument('--os_version', help='operating system version', type=parse_os_version, default=0) parser.add_argument('--os_patch_level', help='operating system patch level', type=parse_os_patch_level, default=0) parser.add_argument('--tags_offset', help='tags offset', type=parse_int, default=0x00000100) parser.add_argument('--board', help='board name', default='', action=ValidateStrLenAction, maxlen=16) Loading Loading
mkbootimg/bootimg.h +5 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,11 @@ struct boot_img_hdr uint32_t tags_addr; /* physical addr for kernel tags */ uint32_t page_size; /* flash page size we assume */ uint32_t unused[2]; /* future expansion: should be 0 */ /* operating system version; "1.2.34" -> 010234 */ uint32_t os_version; /* operating system patch level; "2016-01-01" -> 20160101 */ uint32_t os_patch_level; uint8_t name[BOOT_NAME_SIZE]; /* asciiz product name */ Loading
mkbootimg/mkbootimg +21 −3 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ from os import fstat from struct import pack from hashlib import sha1 import sys import re def filesize(f): if f is None: Loading Loading @@ -47,7 +48,7 @@ def pad_file(f, padding): def write_header(args): BOOT_MAGIC = 'ANDROID!'.encode() args.output.write(pack('8s', BOOT_MAGIC)) args.output.write(pack('8I', args.output.write(pack('10I', filesize(args.kernel), # size in bytes args.base + args.kernel_offset, # physical load addr filesize(args.ramdisk), # size in bytes Loading @@ -55,8 +56,9 @@ def write_header(args): filesize(args.second), # size in bytes args.base + args.second_offset, # physical load addr args.base + args.tags_offset, # physical addr for kernel tags args.pagesize)) # flash page size we assume args.output.write(pack('8x')) # future expansion: should be 0 args.pagesize, # flash page size we assume args.os_version, # operating system version args.os_patch_level)) # security patch level args.output.write(pack('16s', args.board.encode())) # asciiz product name args.output.write(pack('512s', args.cmdline[:512].encode())) Loading Loading @@ -97,6 +99,18 @@ def write_padded_file(f_out, f_in, padding): def parse_int(x): return int(x, 0) def match_to_int(x): if (x and x.lastindex == 3): return (parse_int(x.group(3)) + parse_int(x.group(2)) * 100 + parse_int(x.group(1)) * 10000) return 0 def parse_os_version(x): return match_to_int(re.search(r'^(\d+)\.(\d{1,2})\.(\d{1,2})', x)) def parse_os_patch_level(x): return match_to_int(re.search(r'^(\d{4,})-(\d{2})-(\d{2})', x)) def parse_cmdline(): parser = ArgumentParser() Loading @@ -111,6 +125,10 @@ def parse_cmdline(): parser.add_argument('--ramdisk_offset', help='ramdisk offset', type=parse_int, default=0x01000000) parser.add_argument('--second_offset', help='2nd bootloader offset', type=parse_int, default=0x00f00000) parser.add_argument('--os_version', help='operating system version', type=parse_os_version, default=0) parser.add_argument('--os_patch_level', help='operating system patch level', type=parse_os_patch_level, default=0) parser.add_argument('--tags_offset', help='tags offset', type=parse_int, default=0x00000100) parser.add_argument('--board', help='board name', default='', action=ValidateStrLenAction, maxlen=16) Loading