@romangol
2015-03-14T22:06:54.000000Z
字数 2355
阅读 5349
practice
先讲一个段子:
“小李啊,你是学计算机的吧?”
“是啊是啊”(难道要我帮忙修电脑)
“来帮我把这两台电脑搬到楼上去吧”
“……”
解决问题不分贵贱……某日去超市购物,遇到一年纪目测70岁以上老奶奶,手持一大屏HCL Android手机(没错你没看错,不是HTC,不是TCL,没错是一个老奶奶在用而且还在用微信),问营业员为什么输入法无法使用。出手相助发现百度输入法安装了但是无法切换,点击百度输入法试图进入设置会卡死。当时怀疑是安装的360卫士导致?但是又不好帮别人乱卸载360卫士,于是检查了一下APP属性发现百度输入法是系统预装程序但是被更新过,试着把更新的版本卸载、恢复成出厂版本,bingo!
好了,言归正传,修电脑修手机难道不该是新时代计算机系好青年的必备技能吗?下面记录一下自己一次手机维修过程
2014年底购入Moto G XT1068 双卡双待手机,8G Flash,1G RAM,Android 4.4.4操作系统,已经Root并刷入TWRP recovery;购入后内一直使用正常,只是会提示存储空间不足,经常需要手工清理一下下载的apk包和一些临时文件。直到某一日早上关机充电后,突然无限重启,进入到:开机时提示Bootloader已解锁的画面-黑屏
这一重复过程。比较恼火的是,无法关机,可以长按 电源+音量减小
进入到fastboot模式
由于机器已经刷入TWRP recovery,第一个想法是进入到recovery子系统中去进行Factory reset,还能抢救出来数据。本机的fastboot系统有如下菜单
Normal Powerup
Recovery
Factory
Barcodes
BP Tools
但是从fastboot菜单上进入recovery
就黑屏然后又重启。
经过网上一番查询发现,自己犯的第一个错误是对于Moto G,从Fastboot菜单进入recovery是用音量减小
键移动到recovery
选项然后按音量增大
进入(而不是传统的电源
键进入!)。解决这个问题后,发现机器能够进入的TWRP的启动画面,但是无法进入主界面,ADB连接上去能发现devices,但是数十秒后又重启了。
想了一下实在不行不要数据了,选择Factory
选项来清空数据重启一试,谁知该功能完全不起作用。
对该手机进行了一番研究,由于是XT1068双卡双待型号,网上很少有针对此款机器的刷机包,只有官方底包(Firmware)和recovery,在国内的黑武论坛有firmware的搬运(百度网盘,下载快)。
下载了底包和recovery,准备试试刷机,但是考虑到原有机器内的数据,还是想多尝试一下,先把recovery分区用
fastboot flash recovery twrp_recovery.img
命令重新刷入,可以刷入但是显示
"mismatched partition size"
在XDA上看了一下,说这个只是一个Warning,尝试再进入recovery发现此时虽然仍然卡在TWRP的启动画面,但是ADB已经可以稳定的连接上,可以把/sdcard
里面的数据和/data
里面的数据拿出来了,于是把照片和/data/data/com.android.providers.telephony/databases
,/data/data/com.android.providers.contacts/databases
两个目录备份好,接下来就方便折腾了。
在adb shell里面看了一下sdcard里面的内容,想要rm删除一些无用的文件,但是rm命令执行下去就卡住不动了,之后ctrl+c
结束adb再进入,发现可以ls其它目录但是无法ls /sdcard
目录,只能重启之后再查看才能读到目录列表和文件列表了。
这时候初步判断是内部存储文件系统的管理问题(对/sdcard
目录写文件或修改文件都无法执行,考虑若能修复一下文件系统也许就能解决这个问题,但是recovery子系统无法使用,于是就只能备份了数据后,参照firmware刷机命令
fastboot.exe flash logo logo.bin
fastboot.exe flash boot boot.img
fastboot.exe flash recovery recovery.img
fastboot.exe flash system system.img_sparsechunk.0
fastboot.exe flash system system.img_sparsechunk.1
fastboot.exe flash system system.img_sparsechunk.2
fastboot.exe flash system system.img_sparsechunk.3
fastboot.exe flash modem NON-HLOS.bin
fastboot.exe erase modemst1
fastboot.exe erase modemst2
fastboot.exe flash fsg fsg.mbn
fastboot.exe erase cache
但我并没有死板地执行上述命令,而选择执行了一条
fastboot.exe erase userdata
注意到这条命令会把/data
和/sdcard
都清空(这背后的机理比较复杂,一般的内置SDCARD的机器都是用userdata
分区里面的一个目录来模拟SDCARD,所以一旦用fastboot的格式化命令清空userdata
分区,则SDCARD一定会被清空。
命令执行完毕然后重启,熟悉的开机画面又出现了!最后感叹一下,不了解Android系统的童鞋确实应该去用iPhone~ 什么都限制得死死的当然不会出太多问题。