修改boot.img并重新打包
修改boot.img并重新打包
先安装所需工具
boot解包打包工具
https://github.com/LineageOS/android_system_tools_mkbootimg
提取dtb的工具extract-dtb
extract-dtb项目地址
https://github.com/PabloCastellano/extract-dtb
按照项目说明,这是一个用python写的包,也可以直接使用pip安装
pip3 install extract-dtb
解包boot
用android_system_tools_mkbootimg
中的unpack_bootimg.py解包boot.img,并将得到的文件输出到out目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
hu@stu:~/boot$ python3 android_system_tools_mkbootimg/unpack_bootimg.py --boot_img boot.img --out out
boot magic: ANDROID!
kernel_size: 8995581
kernel load address: 0x80008000
ramdisk size: 7432714
ramdisk load address: 0x81000000
second bootloader size: 0
second bootloader load address: 0x80f00000
kernel tags load address: 0x80000100
page size: 2048
os version: None
os patch level: None
boot image header version: 0
product name:
command line args: console=tty0 root=UUID=95db41d8-ab5a-46a6-aaae-9b420f3940fc rw loglevel=3 splash
additional command line args:
使用--format mkbootimg参数得到基地址和内核偏移量等参数(后面重新打包需要用到)
1
2
hu@stu:~/boot$ python3 android_system_tools_mkbootimg/unpack_bootimg.py --boot_img boot.img --format mkbootimg
--header_version 0 --kernel out/kernel --ramdisk out/ramdisk --pagesize 0x00000800 --base 0x00000000 --kernel_offset 0x80008000 --ramdisk_offset 0x81000000 --second_offset 0x80f00000 --tags_offset 0x80000100 --board '' --cmdline 'console=tty0 root=UUID=95db41d8-ab5a-46a6-aaae-9b420f3940fc rw loglevel=3 splash'
得到含有dtb的内核文件与Ramdisk文件
1
2
hu@stu:~/boot/out$ ls
kernel ramdisk
使用extract-dtb提取出dtb
1
2
3
4
5
6
hu@stu:~/boot/out$ extract-dtb kernel -o out
Dumped 00_kernel, start=0 end=8932947
Dumped 01_dtbdump_,handset.dtb, start=8932947 end=8995581
Extracted 1 appended dtbs + kernel to out
hu@stu:~/boot/out$ ls out/
00_kernel 01_dtbdump_,handset.dtb
修改dtb
反编译dtb为dts
1
dtc -I dtb -O dts -o note2.dts 01_dtbdump_,handset.dtb
修改dts后重新编译成dtb
1
dtc -I dts -O dtb -o note2.dtb note2.dts
合并dtb和内核
1
cat 00_kernel note2.dtb > ../kernel
得到含有新dtb的内核与ramdisk文件
1
2
hu@stu:~/boot/out$ ls
kernel out ramdisk
重新打包
1
2
3
4
5
6
7
8
9
10
11
python3 ../android_system_tools_mkbootimg/mkbootimg.py \
--kernel kernel \
--ramdisk ramdisk \
--cmdline 'PMOS_NO_OUTPUT_REDIRECT pmos_boot_uuid=1bb8bcf2-4911-4431-8296-3a0493dcb8c0 pmos_root_uuid=d45a08d7-ce51-4347-aa52-fea0bf4b04f3' \
--base 0x00000000 \
--kernel_offset 0x80008000 \
--ramdisk_offset 0x81000000 \
--tags_offset 0x80000100 \
--pagesize 0x00001000 \
--second_offset 0x80f00000 \
-o boot.img
按照解包boot.img时得到的参数填写打包命令
参考文章
https://wiki.postmarketos.org/wiki/Huawei_Honor_6X_(huawei-berlin)
License:
CC BY 4.0