• 如何制作一个卡刷扩容补丁。用于扩容系统等分区 刷写第三方需要扩容才可以刷写的系统或者GSI GSI系统bug修复【二】


    前面分享了一期手动扩容系统分区的博文,今天来系统解析下扩容卡刷补丁的制作。因为机型字库不同。挂载的分区方式也有所不同。操作前首先确定自己机型的字库芯片。以一款emmc芯片的扩容补丁为例来解析其操作原理:

    安卓系列机型--软扩容“system分区扩容”操作步骤解析 增加系统分区大小

    💔💔💔💔💔💔💔💔打开补丁💔💔💔💔

    其中的parted文件为扩容分区必须的工具。另外的是刷写脚本。我们需要操作update-binary。打开他脚本如下

    1. ui_print "Step 1/7: Preparing parted."
    2. mkdir /tmp/repart_files # For safe using PATH.
    3. unzip $ZIP -d /tmp/repart_files
    4. chmod +x /tmp/repart_files/parted
    5. PATH=$PATH:/tmp/repart_files/
    6. ui_print "Step 2/7: Unmounting."
    7. umount -l /system
    8. umount -l /vendor
    9. umount -l /data
    10. umount -l /dev/block/mmcblk0p61
    11. umount -l /dev/block/mmcblk0p62
    12. umount -l /dev/block/mmcblk0p63
    13. umount -l /dev/block/mmcblk0p64
    14. ui_print "Step 3/7: Removing partitions."
    15. parted /dev/block/mmcblk0 rm 61
    16. parted /dev/block/mmcblk0 rm 62
    17. parted /dev/block/mmcblk0 rm 63
    18. parted /dev/block/mmcblk0 rm 64
    19. ui_print "Step 4/7: Creating new partitions."
    20. parted /dev/block/mmcblk0 mkpart primary 1141MB 9000MB
    21. parted /dev/block/mmcblk0 mkpart primary 9000MB 11148MB
    22. parted /dev/block/mmcblk0 mkpart primary 11148MB 12020MB
    23. parted /dev/block/mmcblk0 mkpart primary 12020MB 100%
    24. parted /dev/block/mmcblk0 name 61 system
    25. parted /dev/block/mmcblk0 name 62 vendor
    26. parted /dev/block/mmcblk0 name 63 cust
    27. parted /dev/block/mmcblk0 name 64 userdata
    28. ui_print "Step 5/7: Unmounting."
    29. umount -l /data
    30. umount -l /system
    31. umount -l /vendor
    32. umount -l /dev/block/mmcblk0p61
    33. umount -l /dev/block/mmcblk0p62
    34. umount -l /dev/block/mmcblk0p63
    35. umount -l /dev/block/mmcblk0p64
    36. ui_print "Step 6/7: Formatting new partitions (ext4)."
    37. mke2fs -T ext4 /dev/block/mmcblk0p61
    38. mke2fs -T ext4 /dev/block/mmcblk0p62
    39. mke2fs -T ext4 /dev/block/mmcblk0p63
    40. mke2fs -T ext4 /dev/block/mmcblk0p64
    41. ui_print "Step 7/7: Check the FS."
    42. e2fsck -pcfv /dev/block/mmcblk0p61
    43. e2fsck -pcfv /dev/block/mmcblk0p62
    44. e2fsck -pcfv /dev/block/mmcblk0p63
    45. e2fsck -pcfv /dev/block/mmcblk0p64
    46. ui_print "Done. Reboot in 5 sec to FASTBOOT MODE!."
    47. sleep 5
    48. reboot bootloader

    从中可以看出脚本的操作步骤。如果你仔细看过我上个帖子就会发现其操作原理大致是相同的。在脚本中mount是挂载分区 。反之umount是取消挂载分区也就是卸载分区。

    基本流程为1----取消挂载system vendor data cust分区对应61 62 63 64分区号,友友们可以对照我前一个帖子。

    2删除分区--rm为删除指令

    3重新分区---mkpart重新分区。依次为61 62 63 64分区重新指定大小进行分区。然后指定分区名字

    4格式化分区---使用脚本对分区进行格式化操作。

    5检查分区---e2fsck指令检查分区

    6完成操作。然后重启到fastboot模式

    基本步骤对于emmc分区是通用的。如果你需要自己做扩容补丁。而自己机型也是emmc芯片的那么你只需要对这几出脚本进行修改即可

    1---知道自己机型的system分区号和后面分区的分区号

    2---然后按自己需要的扩容大小进行分区即可。脚本修改各处都要注意分区号

    1. parted /dev/block/mmcblk0 mkpart primary 1141MB 9000MB
    2. parted /dev/block/mmcblk0 mkpart primary 9000MB 11148MB
    3. parted /dev/block/mmcblk0 mkpart primary 11148MB 12020MB
    4. parted /dev/block/mmcblk0 mkpart primary 12020MB 100%

    如果对分区大小设置有疑问,可以参考上个博文有说明。

    💔💔💔💔💔💔💔💔ufs芯片扩容💔💔💔💔💔💔💔💔

    其实参考emmc芯片字库扩容补丁也是可以的。扩容补丁种类较多。有不同的扩容方法。有的用sgdisk方式进行扩容的。sgdisk是Linux下操作GPT分区的工具.下例

    1. SDAPATH="/dev/block/sda"
    2. SDEPATH="/dev/block/sde"
    3. SGDISKBIN="/tmp/krtmp/sgdisk"
    4. mkdir /tmp/krtmp
    5. cd /tmp/krtmp
    6. unzip -o "$ZIP"
    7. chmod 0755 $SGDISKBIN
    8. $SGDISKBIN --delete=21 $SDAPATH
    9. $SGDISKBIN --delete=47 $SDEPATH
    10. $SGDISKBIN --delete=48 $SDEPATH
    11. $SGDISKBIN --new 0:0:+5G --change-name=21:system --typecode=21:97D7B011-54DA-4835-B3C4-917AD6E73D74 $SDAPATH
    12. $SGDISKBIN --new 0:0:0 --change-name=22:userdata --typecode=22:1B81E7E6-F50D-419B-A739-2AEEF8DA3335 $SDAPATH
    13. $SGDISKBIN --new 0:0:0 --change-name=47:vendor --typecode=47:97D7B011-54DA-4835-B3C4-917AD6E73D74 $SDEPATH
    14. sleep 3
    15. reboot recovery
    16. exit 0

    另外很多工具箱也具有扩容分区的操作。在此提醒。操作失误严重后导致不开机 黑屏状态。这种情况就需要深刷就砖了。

    💔💔💔💔💔💔💔💔gsi镜像bug修复💔💔💔💔💔💔💔💔

    继续补充gsi镜像bug修复,感兴趣的可以参考

    1---卡第一屏。可以正常开机的系统里提取/system/etc/selinux。替换到gsi镜像里尝试

    2---.如何修改GSI或SGSI开机提示Android 报错?:
    只需用mt管理器打开并编辑system/framework/framework-res.apk/resources.arsc。搜索开机报错内容并修改即可。适用于Android O~Android R修复flyme gsi和sgsi系统闪屏无法正常使用问题:
    3.cpu频率占用过高:
    删除以下文件即可:
    system/bin/hdrfix.sh
    system/etc/init/hdrfix.sh
    4.修复gsi发热,可以删除以下文件夹:
    system/priv-app/dpmservice或system/priv-app/dpmserviceapp再重启手机即可
    5.去除部分gsi首次提示Android正在升级界面:
    删除system/bin/packages.rc和system/etc/init/packages.rc即可修正

    6.miui关于手机频率信息:
    修改system/etc/device_features/xxx.xml,比如关于手机显示的频率是2.9,那就搜索290,修改即可,改成220就是2.2,230就是2.3,以此类推......

    7.修复gsi蓝牙音频无效问题:
    你可以尝试在system/build.prop和vendor/build.prop都加这些代码试试。
    仅在Android 9生效,Android10无效。
    persist.vendor.btstack.enable.splita2dp=false
    persist.vendor.btstack.a2dp_offload_cap=false

    8.修复flyme gsi信号图标偏大偏小:
    删除system/product/overlay/Flyme-Notch-Height-Fix-By-Shiv.apk和flyme-systemui.apk再重启手机即可修复

    9.zui关于手机配置信息显示:
    修改system\etc\deviceinfo里面的内容即可。

    10.修复miui状态栏手电筒:
    修改system/etc/device_features里面的xml,添加这个代码并保存即可。

    true

    11.修复关于手机配置信息显示问题:
    手机logo图片位置:
    Settings.apk/res/drawable-xxhdpi-v4/oneplus_other.png
    配置信息修改:
    用mt管理器2编辑Settings.apk,用Dex编辑器++全选所有dex,进入com/oneplus/settings/aboutphone 搜索noce,修改那3个noce,那3个noce分别对应处理器信息,相机信息和屏幕信息。

    12.修复ColorOS7亮度调节问题:
    用mt管理器2找到 /sys/class/leds/light-backlight,把0改成160。

    13. 解决诺基亚gsi、sgsi不显示桌面图标:
    长按桌面,进入桌面设置,把单层显示改为双层显示即可

    14.去除flyme,miui,zui,h2os的屏幕指纹通常只需要把SystemUI.apk里面的所有指纹图标ps成透明的再替换即可

    15.如何修复屏幕闪屏和亮度调节闪屏?
    修复方案:
    用mt管理器2修改/system/framework/framework-res.apk,编辑resources.arsc,integer/integer:
    config_screenBrightnessSettingDefault:100
    config_screenBrightnessSettingMaximum:255
    config_screenBrightnessSettingMinimum:10
    如果修改后亮度过低请修改成底包或者官方包的数值!

    16.相机和扫码都不能用该如何修复?
    提取底包的system/lib和lib64:
    libcamera开头的驱动全部替换即可

    17.oneui卡主题,请检查手机屏幕是否为16:9

    18.系统全局圆角
    提取system/framework下的framework-res.apk.在mt下选择查看
    然后选中resources.arsc 打开方式选择arsc编辑器

    一路选择Android,dimen , dimen
    之后右上角选择过滤 弹出的搜索框搜索config(随意)
    ,目的是筛出这两个值,一个按钮,菜单的角,一个通知栏的角。config_dialogCornerRadius和

    config_buttonCornerRadius
    在搜索结果中找到config_dialogCornerRadius和 config_buttonCornerRadius,编辑这两个值为8dp(这是pixel的官方pie默认的值 也是大部分ROM默认的值 如果你需要更大圆角可以自行加大 比如12dp)

    最后一路返回弹出提示选择保存,更新压缩文件选择确定。大功告成。然后用这个修改后的framework res.apk.替换掉system/framework下原来的,修改权限r-w-r-r(644),重启。

    19.无基带,从底包替换vendor.qti.qcril
    vendor.qti.atcmdfwd,到lib/lib64

    如果给对你有帮助。请点个赞赞呗,关注我了解玩机搞机基本常识和一些故障解决

  • 相关阅读:
    【Kubernetes 系列】Kubernetes 创建K8s集群项目
    FixedWindowRollingPolicy简介说明
    线性表的单链表
    Linux下mysql安装配置教程
    网站数据加密之Hook通用方案
    excel功能区(ribbonx)编程笔记--3 editbox与状态按钮togglebutton控件
    [BAT-表姐御用02tree命令】提取目录文件夹及其子文件后,tree形列出
    sqli-labs-master安装及报错处理
    一、初始化个人简历项目
    基于安卓(Android)的即时实时聊天APP软件
  • 原文地址:https://blog.csdn.net/u011283906/article/details/132693257