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

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

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

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

打开补丁

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

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

ui_print "Step 1/7: Preparing parted."
mkdir /tmp/repart_files # For safe using PATH.
unzip $ZIP -d /tmp/repart_files
chmod +x /tmp/repart_files/parted
PATH=$PATH:/tmp/repart_files/

ui_print "Step 2/7: Unmounting."
umount -l /system
umount -l /vendor
umount -l /data
umount -l /dev/block/mmcblk0p61
umount -l /dev/block/mmcblk0p62
umount -l /dev/block/mmcblk0p63
umount -l /dev/block/mmcblk0p64


ui_print "Step 3/7: Removing partitions."
parted /dev/block/mmcblk0 rm 61
parted /dev/block/mmcblk0 rm 62
parted /dev/block/mmcblk0 rm 63
parted /dev/block/mmcblk0 rm 64

ui_print "Step 4/7: Creating new partitions."
parted /dev/block/mmcblk0 mkpart primary 1141MB 9000MB
parted /dev/block/mmcblk0 mkpart primary 9000MB 11148MB
parted /dev/block/mmcblk0 mkpart primary 11148MB 12020MB
parted /dev/block/mmcblk0 mkpart primary 12020MB 100%
parted /dev/block/mmcblk0 name 61 system
parted /dev/block/mmcblk0 name 62 vendor
parted /dev/block/mmcblk0 name 63 cust
parted /dev/block/mmcblk0 name 64 userdata
ui_print "Step 5/7: Unmounting."
umount -l /data
umount -l /system
umount -l /vendor
umount -l /dev/block/mmcblk0p61
umount -l /dev/block/mmcblk0p62
umount -l /dev/block/mmcblk0p63
umount -l /dev/block/mmcblk0p64
ui_print "Step 6/7: Formatting new partitions (ext4)."
mke2fs -T ext4 /dev/block/mmcblk0p61
mke2fs -T ext4 /dev/block/mmcblk0p62
mke2fs -T ext4 /dev/block/mmcblk0p63
mke2fs -T ext4 /dev/block/mmcblk0p64
ui_print "Step 7/7: Check the FS."
e2fsck -pcfv /dev/block/mmcblk0p61
e2fsck -pcfv /dev/block/mmcblk0p62
e2fsck -pcfv /dev/block/mmcblk0p63
e2fsck -pcfv /dev/block/mmcblk0p64
ui_print "Done. Reboot in 5 sec to FASTBOOT MODE!."
sleep 5
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---然后按自己需要的扩容大小进行分区即可。脚本修改各处都要注意分区号

parted /dev/block/mmcblk0 mkpart primary 1141MB 9000MB
parted /dev/block/mmcblk0 mkpart primary 9000MB 11148MB
parted /dev/block/mmcblk0 mkpart primary 11148MB 12020MB
parted /dev/block/mmcblk0 mkpart primary 12020MB 100%

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

ufs芯片扩容

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

SDAPATH="/dev/block/sda"
SDEPATH="/dev/block/sde"
SGDISKBIN="/tmp/krtmp/sgdisk"

mkdir /tmp/krtmp
cd /tmp/krtmp
unzip -o "$ZIP"
chmod 0755 $SGDISKBIN

$SGDISKBIN --delete=21 $SDAPATH
$SGDISKBIN --delete=47 $SDEPATH
$SGDISKBIN --delete=48 $SDEPATH

$SGDISKBIN --new 0:0:+5G --change-name=21:system --typecode=21:97D7B011-54DA-4835-B3C4-917AD6E73D74 $SDAPATH
$SGDISKBIN --new 0:0:0 --change-name=22:userdata --typecode=22:1B81E7E6-F50D-419B-A739-2AEEF8DA3335 $SDAPATH
$SGDISKBIN --new 0:0:0 --change-name=47:vendor --typecode=47:97D7B011-54DA-4835-B3C4-917AD6E73D74 $SDEPATH

sleep 3

reboot recovery

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

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

你可能感兴趣的:(玩机搞机基本常识,刷机技术贴,扩容补丁,制作扩容,gsi修复)