1 python生成一个sector数据
 def get_oem_bootmode():
     # Header size
     SECTOR_SIZE_IN_BYTES = 512
     header = [0 for i in \
         range(SECTOR_SIZE_IN_BYTES)]
     # magic
     # The ord() built-in function in
     # Python converts a character
     # into an ordinal integer number.
     header[0:7] = [ord('p'), ord('i'), ord('d'),
         ord('9'), ord('0'), ord('9'), ord('1'), ord('0')]
     output = StringIO.StringIO()
     for i in header:
         output.write(struct.pack("B", i))
     content = output.getvalue()
     output.close()
     # only need 512 bytes
     return content[:512]
 2 制作ext4分区镜像
 文件名:make_ko_img.sh
 #!/bin/sh
 MY_PATH=${PWD}
 TARGET_DIR=${MY_PATH}/out/target/product/${TARGET_PRODUCT}
 KO_DIR=${TARGET_DIR}/ko/lib/modules
 TOOL_DIR=${MY_PATH}/out/host/linux-x86/bin
 rm ${TARGET_DIR}/ko* -rf
 mkdir --parents ${KO_DIR}
 cp ${TARGET_DIR}/vendor/lib/modules/my_driver.ko ${KO_DIR}
 # fastboot只接受Android sparse image(稀疏镜像格式)
 # Android 8
 #${TOOL_DIR}/make_ext4fs -l 8M -s -a ko ${TARGET_DIR}/ko.img ${TARGET_DIR}/ko/
 # Android 10
 make_ext4fs -l 8M -s -a ko ${TARGET_DIR}/ko.img ${TARGET_DIR}/ko/
 #${TOOL_DIR}/simg2img ${TARGET_DIR}/ko.img ${TARGET_DIR}/ko.ext4
 -l 8M是分区大小,make_ext4fs最小分区大小是8M,小于该值会导致编译失败
 -a ko是指这个img用于Android,挂载点是/ko
 makefile中调用:
 MK_KO_IMG_SCRIPT := $(LOCAL_PATH)/path/to/make_ko_img.sh
 $(MK_KO_IMG_SCRIPT)
 3 Abbreviations
 FRP:Android Factory Reset Protection