最近一两年手机用第三方rom,安卓7或8或9以后老是重启,有个sultan的CM14.1就基本上不重启,其他一两天基本上就会重启一次。
上周末突然有一天在被窝里玩手机,因为太热重启了之后,发生了刚刚开机几分钟就重启的情况,虽然凉下来以后没这么频繁了,我就换成了之前觉着不重启的sultan rom,结果后来依然各种重启。
后来尝试刷各种系统时,发现wipe system分区变慢,重新安装系统也变慢。我就破罐子破摔,直接用官方线刷包刷到了cm11,问题依然依旧,手机过热时依然会频繁重启,我基本能确定是硬件出问题了,害怕是cpu,但是发现刷系统很慢,我就开始怀疑是system分区出现了硬件故障。之后用parted命令将system分区进行了重分区,改到了data分区下,现在就没有再发生过重启情况,即使是过热情况下也没重启,截止到目前为止,上次开机到现在已经五十多小时了,所以,总自动重启的根源很可能是system分区故障。
这里是教程,如何使用parted分区更改system的位置。
注意:改变system位置就不重启可能是个个例,不一定普遍;
改分区!!!一定会丢失所有数据!!!,请注意备份;
由于16G版内存太小,不建议这样做;
而且请确保你有能力在任何极端情况下将手机线刷回来,我不会为变砖负责;
确保你有root权限。
这里参考了以下网址,对原创者表示感谢:
htt删p://bbs.gfan.c删om/android-7110955-1-1.html
http删s://forum.xda删-developers.com ... artitioned-t3457157
http删s://iwf1.co删m/how-to-re-parti ... uded-change-size-fs
开始:
1.进入下载adb工具,并且下载安装一加1在Windows的驱动。这一步相信大家可能已经曾经做过了,我就不再赘述。提供一个参考链接:
http:删//www.onepl删usbbs.com/thread-2824425-1-1.html
2.下载附件,解压缩出“parted”,放到sd卡下。
2.打开开发者选项,连接电脑,确保可以用cmd中的adb命令进行识别,参考1中帖子,确保"adb devices"能出现你的设备即可。
3.进入recovery,电脑端cmd输入adb shell,进入手机端shell,命令行开头不再是windows的路径,输入su,获取root权限。证明成功,输入chmod 777 /sdcard/parted,这一步是使得parted程序能运行,然后mv /sdcard/parted /bin/parted,这里是确保parted不会在删除分区时被一起删除或者是阻止分区删除。
4.输入parted /dev/block/mmcblk0,然后前缀变为(parted),输入print,这里会出现你的当前分区表。我这里没记录,重点关注system分区和userdata的Start和End位置。这里我没记录,应该是类似:
Number Start End Size File system Name Flags
1...
2...
3...
。。。。。
14 .....system
。。。。。
28 .....userdata
5.这时就需要删除system分区,另外,由于我们是要把system分区改到原来userdata的位置,所以把userdata也要删掉。rm 14是删除system,rm 28是删除我们的data分区和sdcard分区(没法回头了)。
如果遇到"partition /dev/block/mmcblk0p14或者28 is being used, you must unmount it before you modify it with parted"错误,就先quit,然后umount -f /dev/block/mmcblk0p14或者28即可。然后当然还是得用parted /dev/block/mmcblk0回去。
6.重建分区。用mkpartfs primary ext2 x y,其中x是userdata之前的start,y是x+2048,这样就可以把system重新建立成2G的空间,并且建立在了原来userdata的位置,比原来还大。然后就是继续mkpartfs primary ext2 x y,这个x就是上面的system的终点,y就是原来userdata的end位置。
7.重新命名。name 14 system,之前只是分配了空间,没给名字,所以给个名字。同样的name 28 userdata。然后quit就ok了。
tune2fs -j /dev/block/mmcblk0p14
e2fsck -fDp /dev/block/mmcblk0p14
tune2fs -O extents,uninit_bg,dir_index /dev/block/mmcblk0p14
e2fsck -fDp /dev/block/mmcblk0p14
再把上面的14换成28,再来一遍。
这里如果遇到问题,我援引一下上个帖子的说法:
在把分区转为ext4格式如果遇到: 1. ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab 2. file while determining whether /dev/block/mmcblk0p9 is mounted.
试试mount /dev/block/mmcblk0p14 /system。
我想现在应该就ok了。可能有一些细节不一定精确,如果遇到除了上面描述的问题外的问题,请参考一下以上的几个帖子。 |