前面分享了一期手动扩容系统分区的博文,今天来系统解析下扩容卡刷补丁的制作。因为机型字库不同。挂载的分区方式也有所不同。操作前首先确定自己机型的字库芯片。以一款emmc芯片的扩容补丁为例来解析其操作原理:
安卓系列机型--软扩容“system分区扩容”操作步骤解析 增加系统分区大小
其中的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是取消挂载分区也就是卸载分区。
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%
如果对分区大小设置有疑问,可以参考上个博文有说明。
其实参考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修复,感兴趣的可以参考
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,添加这个代码并保存即可。
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
如果给对你有帮助。请点个赞赞呗,关注我了解玩机搞机基本常识和一些故障解决