编程技术分享平台

网站首页 > 技术教程 正文

自定义TWRP Recovery开机画面、LOGO,镜像文件的解包打包

xnh888 2024-10-22 18:08:29 技术教程 71 ℃ 0 评论

主要说明bootimg.exe的使用和如何修改Recovery的开机画面及LOGO。

  • 下载bootimg.exe
  • 准备手机原厂recovery.img镜像文件
  • 与手机CPU一样的TWRP Recovery

bootimg.exe用法:主要是用于解包或打包

用法说明:
C:\tmp\makeRecovery\work3\recovery>bootimg -h
supported arguments:
        --add-head
        --cml
        --cpio-list
        --czlib
        --dml
        --dzlib
        --remove-head
        --repack-565
        --repack-bootimg  打包boot镜像文件
        --repack-ramdisk   打包ramdisk
        --repack-rle
        --repack-zte-bin
        --rml
        --to-ext4
        --to-img
        --uml
        --unpack-565
        --unpack-bootimg    解包boot
        --unpack-qsb
        --unpack-ramdisk     解包ramdisk
        --unpack-rle
        --unpack-updata
        --unpack-yafffs
        --unpack-yaffs
        --unpack-yaffs2
        --unpack-zte-bin

一、将手机原厂recovery.img镜像文件复制一份,并命名为boot.img,与bootimg.exe放在同一目录:

二、解压recovery.img镜像文件:bootimg --unpack-bootimg

记住几个重要参数,下面打包时用到:base: 0x40078000 , cmdline: "bootopt=64S3,32N2,64N2",page_size: 2048,padding_size=2048

C:\tmp\makeRecovery\work3\recovery>bootimg --unpack-bootimg
arguments: [bootimg file]
bootimg file: boot.img
output: kernel[.gz] ramdisk[.gz] second[.gz]
found nonstandard ramdisk_addr
found nonstandard second_addr
found nonstandard tags_addr
base: 0x40078000
ramdisk_addr: 0x44000000
second_addr: 0x40f00000
tags_addr: 0x4e000000
page_size: 2048
name: "1445293292"
cmdline: "bootopt=64S3,32N2,64N2"
padding_size=2048
arguments: [ramdisk file] [directory]
ramdisk file: ramdisk.gz
directory: initrd
output: cpiolist.txt
compress: True

解包后多了好几个文件,只要bootinfo.txt和kernel.gz ,kernel.gz内核文件是与手机硬件相匹配的。其实initrd和cpiolist.txt就是ramdisk.gz解压出来的,内容都一样 :

三、将bootinfo.txt和kernel.gz复制到新文件夹newRec中:

四、用上述同样的方法解包第三方twrp recovery镜像文件:

C:\tmp\makeRecovery\work3\othTWRPRec>bootimg --unpack-bootimg
arguments: [bootimg file]
bootimg file: boot.img
output: kernel[.gz] ramdisk[.gz] second[.gz]
found nonstandard ramdisk_addr
found nonstandard second_addr
found nonstandard tags_addr
base: 0x40078000
ramdisk_addr: 0x44000000
second_addr: 0x40f00000
tags_addr: 0x4e000000
page_size: 2048
name: ""
cmdline: "bootopt=64S3,32N2,64N2"
padding_size=2048
arguments: [ramdisk file] [directory]
ramdisk file: ramdisk
directory: initrd
output: cpiolist.txt
Found mtk magic, skip header.
Found header name RECOVERY
compress: True

五、这次只要initrd和cpiolist.txt,并把它们也复制到新文件夹newRec中(这两个就是ramdisk解包出来的,twrp就在其中):

六、从两边取出来的共4个文件(initrd, bootinfo.txt, cpiolist.txt, kernel.gz)重新打包:命令格式 bootimg --repack-bootimg base cmdline page_size padding_size

C:\tmp\makeRecovery\work3\newRec>bootimg --repack-bootimg 0x40078000 "bootopt=64S3,32N2,64N2" 2048 2048
arguments: [cpiolist file]
cpiolist file: cpiolist.txt
output: ramdisk.cpio.gz
compress_level: 6
mtk mode
arguments: [base] [cmdline] [page_size] [padding_size]
kernel: kernel
ramdisk: ramdisk.cpio.gz
second:
dt_image:
base: 0x40078000
ramdisk_addr: 0x44000000
second_addr: 0x40f00000
tags_addr: 0x4e000000
name: 1445293292
cmdline: bootopt=64S3,32N2,64N2
page_size: 2048
padding_size: 2048
output: boot-new.img

打包后自动产生一个新的文件名boot-new.img ,将它改回recovery.img :

临时刷入试试:

c:\tmp\fastboot>fastboot boot C:\tmp\makeRecovery\work3\newRec\boot-new.img
< waiting for any device >
Sending 'boot.img' (16130 KB)                      OKAY [  1.567s]
Booting                                            OKAY [  0.063s]
Finished. Total time: 1.811s

修改开机画面、LOGO等:

原厂的通常存放在\recovery\initrd\res\images目录下,替换即可:

第三方TWRP的通常存放在\TWRP_Recovery\initrd\twres目录下:

开机画面、LOGO在images子目录里,名称在splashes/ languages.xml/ portrait.xml/ ui.xml等文件里,都可当文本文件编辑:

修改完成后,用前述方法重新打包,然后刷入手机即可。

效果图:

注:logo等图片尽量在原来的基础上修改,文件名不变

在操作过程中用到其它相关知识可参考本人另外的文章。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表