AI手机网,短视频直播 硬改改机 一键新机 群控软件 刷机定制

 找回密码
 立即注册
搜索
查看: 899|回复: 5

修改super.img 编辑super 提取分区镜像

[复制链接]
发表于 2023-3-7 09:35:42 | 显示全部楼层 |阅读模式
将Android sparse image格式转换为raw image
  1. simg2img super.img   super.img.raw
复制代码
1.提取 system分区
有两个工具,一个是Android项目中的 lpunpack, 另一个大神的imjtoo
  1. lpunpack --partition=system super.img.raw
  2. lpunpack --partition=vendor super.img.raw
  3. lpunpack --partition=product super.img.raw
  4. 提取所有
  5. lpunpack super.img.raw
复制代码

limgtool的命令为
  1. ./imjtool.ELF64 super.img.raw extract
  2. MMapped: 0x7f460c400000, imgMeta 0x7f460c401000
  3. liblp dynamic partition (super.img) - Blocksize 0x1000, 3 slots
  4. LP MD Header @0x3000, version 10.2, with 10 logical partitions on block device of 8704 GB, at partition super, first sector: 0x800
  5. Partitions @0x3100 in 3 groups:
  6.         Group 0: default
  7.         Group 1: qti_dynamic_partitions_a
  8.                 Name: odm_a (read-only, Linux Ext2/3/4/? Filesystem Image, @0x100000 spanning 1 extents of 1 MB) - extracted
  9.                 Name: product_a (read-only, Linux Ext2/3/4/? Filesystem Image, @0x300000 spanning 1 extents of 474 MB) - extracted
  10.                 Name: system_a (read-only, Linux Ext2/3/4/? Filesystem Image, @0x1de00000 spanning 1 extents of 5 GB) - extracted
  11.                 Name: system_ext_a (read-only, Linux Ext2/3/4/? Filesystem Image, @0x15f600000 spanning 1 extents of 473 MB) - extracted
  12.                 Name: vendor_a (read-only, Linux Ext2/3/4/? Filesystem Image, @0x17d000000 spanning 1 extents of 2 GB) - extracted
  13.         Group 2: qti_dynamic_partitions_b
  14.                 Name: odm_b (read-only,  empty) - extracted
  15.                 Name: product_b (read-only,  empty) - extracted
  16.                 Name: system_b (read-only,  empty) - extracted
  17.                 Name: system_ext_b (read-only,  empty) - extracted
  18.                 Name: vendor_b (read-only,  empty) - extracted


  19. 如果遇到错误,请用sudo执行
复制代码
修改system.img为可写
  1. fallocate -l 2G system.img
  2. /sbin/resize2fs system.img 2G
复制代码
看实际的system.img的大小,适当大一些
6G
3.0 移除共享块
如果报错 couldn’t mount RDWR because of unsupported optional features (4000)
4000特性就是 EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS
可以用下面的命令 去掉
  1. e2fsck -y -E unshare_blocks  system.img
复制代码

也可以检查是否有这个feature
  1. /sbin/dumpe2fs vendor_a.img
  2. ...
  3. Filesystem features:      ext_attr dir_index .... extra_isize shared_blocks
复制代码
挂载
  1. mount -t ext4 -o loop system.img system
复制代码




编辑 system目录下的文件
卸载 system 目录
  1. umount system
复制代码

修改文件系统错误
  1. e2fsck -yf system.img
复制代码

让system.img占用尽可能小的空间
  1. resize2fs -M system.img
  2. e2fsck -yf system.img
复制代码
. 查看真实分区大小

  1. stat -c '%n %s' system.img

  2. stat -c '%n %s' *
  3. product.img 1596944384
  4. system.img 1128718336
  5. vendor.img 544976896
复制代码
写回
  1. lpmake --metadata-size 65536 --super-name super --metadata-slots 1
  2. --device super:4294967296
  3. --group main:3139354624
  4. --partition system:readonly:1128718336:main --image system=./system.img
  5. --partition vendor:readonly:544976896:main --image vendor=./vendor.img
  6. --partition product:readonly:1596944384:main --image product=./product.img
  7. --sparse --output ./super.new.img

  8. group这里是所有分区的文件大小加起来的和
复制代码
–metadata-slots 要跟 imjtool 工具输出的一样
实际, device-size设置为8G
  1. lpmake --metadata-size 65536    --device-size=8589934592   --metadata-slots=3   
  2. --group=qti_dynamic_partitions_a:8053952512   
  3. --partition=odm_a:none:1470464:qti_dynamic_partitions_a   
  4. --partition=product_a:none:407822336:qti_dynamic_partitions_a   
  5. --partition=system_a:none:4835311616:qti_dynamic_partitions_a  
  6. --partition=system_ext_a:none:496226304:qti_dynamic_partitions_a   
  7. --partition=vendor_a:none:2313121792:qti_dynamic_partitions_a   
  8. --image=odm_a=./odm_a.img  --image=product_a=./product_a.img  --image=system_a=./system_a.img  --image=system_ext_a=./system_ext_a.img   --image=vendor_a=./vendor_a.img   
  9. --group=qti_dynamic_partitions_b:0  
  10. --partition=odm_b:none:0:qti_dynamic_partitions_b  
  11. --partition=product_b:none:0:qti_dynamic_partitions_b  
  12. --partition=system_b:none:0:qti_dynamic_partitions_b  
  13. --partition=system_ext_b:none:0:qti_dynamic_partitions_b  
  14. --partition=vendor_b:none:0:qti_dynamic_partitions_b  
  15. --image=odm_b=./odm_b.img  --image=product_b=./product_b.img  --image=system_b=./system_b.img  --image=system_ext_b=./system_ext_b.img  --image=vendor_b=./vendor_b.img  
  16. --sparse  --output /media/3/tmp/super.new.img

  17. lpmake I 10-14 19:06:49 11155 11155 builder.cpp:1031] [liblp]Partition odm_a will resize from 0 bytes to 1470464 bytes
  18. lpmake I 10-14 19:06:49 11155 11155 builder.cpp:1031] [liblp]Partition product_a will resize from 0 bytes to 407822336 bytes
  19. lpmake I 10-14 19:06:49 11155 11155 builder.cpp:1031] [liblp]Partition system_a will resize from 0 bytes to 4835311616 bytes
  20. lpmake I 10-14 19:06:49 11155 11155 builder.cpp:1031] [liblp]Partition system_ext_a will resize from 0 bytes to 496226304 bytes
  21. lpmake I 10-14 19:06:49 11155 11155 builder.cpp:1031] [liblp]Partition vendor_a will resize from 0 bytes to 2313121792 bytes
  22. Invalid sparse file format at header magic
  23. Invalid sparse file format at header magic
  24. Invalid sparse file format at header magic
  25. Invalid sparse file format at header magic
  26. Invalid sparse file format at header magic
  27. Invalid sparse file format at header
  28. Invalid sparse file format at header
  29. Invalid sparse file format at header
  30. Invalid sparse file format at header
  31. Invalid sparse file format at header
复制代码


  1. lpmake --metadata-size 65536\
  2. --device-size=4294967296\
  3. --metadata-slots=3\
  4. --group=google_system_dynamic_partitions_a:2222931968\
  5. --partition=odm_a:none:700416:google_system_dynamic_partitions_a\
  6. --partition=product_a:none:266579968:google_system_dynamic_partitions_a\
  7. --partition=system_a:none:1363767296:google_system_dynamic_partitions_a\
  8. --partition=system_ext_a:none:359391232:google_system_dynamic_partitions_a\
  9. --partition=vendor_a:none:232493056:google_system_dynamic_partitions_a\
  10. --image=odm_a=./odm_a.img\
  11. --image=product_a=./product_a.img\
  12. --image=system_a=./system_a.img\
  13. --image=system_ext_a=./system_ext_a.img\
  14. --image=vendor_a=./vendor_a.img\
  15. --group=google_system_dynamic_partitions_b:24563712\
  16. --partition=odm_b:none:0:google_system_dynamic_partitions_b\
  17. --partition=product_b:none:0:google_system_dynamic_partitions_b\
  18. --partition=system_b:none:24563712:google_system_dynamic_partitions_b\
  19. --partition=system_ext_b:none:0:google_system_dynamic_partitions_b\
  20. --partition=vendor_b:none:0:google_system_dynamic_partitions_b\
  21. --image=odm_b=./odm_b.img\
  22. --image=product_b=./product_b.img\
  23. --image=system_b=./system_b.img\
  24. --image=system_ext_b=./system_ext_b.img\
  25. --image=vendor_b=./vendor_b.img\
  26. --sparse \
  27. --output ./super.new.img
复制代码
参考资料:
https://forum.xda-developers.com/t/editing-system-img-inside-super-img-and-flashing-our-modifications.4196625/
https://blog.senyuuri.info/posts/2022-04-27-patching-android-super-images/
发表于 2023-3-7 09:35:44 | 显示全部楼层
论坛OK
发表于 2023-3-7 09:36:02 | 显示全部楼层
感谢客服指导
发表于 2023-3-7 09:36:22 | 显示全部楼层
气氛不算太好,不过也可以
发表于 2023-3-7 09:36:40 | 显示全部楼层
气氛不算太好,不过也可以
发表于 2023-3-7 09:36:54 | 显示全部楼层
可以解决了我的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术交流售后群

QQ|小黑屋|手机版|站点找错-建议|AI手机网 |Sitemap



GMT+8, 2024-4-30 13:58 , Processed in 0.155456 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表