道爷我成了!

说来惭愧,这玩意用了一天才做完...
本质上采用了前文的第二种方案:因为system与data之间可能有许多文件,全部删除再恢复失败率较高。所以直接从data中划出一部分做system,原来的system标记为system_old,隐藏舍弃
本质上是与gains老哥差不多的方法...不过他写的应该没我这么详细(
URL:http://blog.gainss.xyz/index.php/course/system.html
他的博客内容很丰富,虽然文章不多

正片开始

我们时常讲,安卓的本质是linux。parted是一个用于硬盘分区的工具,我使用的是3.2版本
之前酷安有人分享的是2009年的1.8版本,我这里根本用不了...
我将这个放在了我的云盘分享,大家可以直接免费高速下载:parted
parted就是我们所需的工具了
parted文件没有后缀名,不需解压使用!

下载后,我们可以进入rec,用

adb push parted文件位置 /sbin/

将parted推送到/sbin/文件夹
之后,我们可以在手机端twrp打开高级-文件管理
找到/sbin/parted之后,选择chmod755提权
之后,我们可以选择在twrp中的终端或在windows上运行adb shell进行后续步骤

首先,我们可以运行

df -h

查看各分区
这里,我们可以看到,一加3T的userdata在/dev/block/sda15
但system在/dev/block/sde20

于是,我们可以修改system为system_old

parted /dev/block/sde
name 20 system_old
p

正常情况如图所示
system

之后,我们可以来修改userdata

parted /dev/block/sda
p
rm 15
mkpart userdata ext4 起始位置 终点位置
mkpart system ext2 起始位置 终点位置
p

期间,如果问是否ignore就填i,Yes/No就填y
其中的userdata起始位置应与第一次输入p查看分区表时,userdata的起始位置一致,而终点位置应自己决定
毕竟system分多少还是见仁见智的事情...
system的起点位置与userdata的终点位置相同,而system的终点位置应与第一次输入p查看分区表时,userdata的终点位置一致
实例如图...不过一般也用不到5G的system,可能4G比较推荐
至于我为什么要分5G...这又是一个悲伤的故事
userdata

接下来,我们可以输入quit退出parted
此时它会提示需要更新/etc/fstab
我们可以直接找到fstab,然后删除(

接下来,我们的twrp大概率没法挂载system和data...
不过别慌
首先,我们可以重启到fastboot,运行

fastboot erase system
fastboot erase userdata

以格式化system和data
但是先别急,我们还要在rec再次格式化...
对于system,我们需要点开twrp的清除-高级清除,勾选system,修复或更改文件系统,更改文件系统为ext4
对于data,我们可以点开清除-格式化data,输入yes
这个方法来自于良心教程:如何用parted对system分区进行扩容...感恩
大功告成

后记

有的朋友可能就要问了
92老师,为什么你刷了5g的system
谁能想到,kali nethunter的a10包居然在system空闲空间为两个多G的情况下依然刷不进去,提示not enough free space on /system...
可能我方向错了?或许会想到其他方法吧...不过目前的解决方法是恢复system分区然后正常使用
目前暂时用a11的pe刷了个通用包...
理论上还是喜欢为机型定制的rom,或许晚些时候会带着体验Resurrection一起再试一下kali nethunter for oneplus 3t的a10版本
一加3T的a10包还是相对较少,a11就丰富得多了
pe没有a10...怨念

参考文献

【教程】一加3T system扩容
良心教程:如何用parted对system分区进行扩容
安卓手机扩容System分区保姆级教程

最后修改:2023 年 01 月 13 日
请我喝杯可乐?