当前位置: 首页 >> 转载技术·常用技巧 >> Mi2(S)系列全机型无差别无损无痛不丢数据重分区教程(最终版) >> 正文

Mi2(S)系列全机型无差别无损无痛不丢数据重分区教程(最终版)

6年前 (2015-04-15)     作者:iMoke     分类:转载技术·常用技巧     阅读次数:4609     评论(0)    

本教程整个过程中不需要清除数据。严格按教程步骤来,不要擅自做多余的其他操作,应该没有丢数据的可能性。


零、前言:

经论坛上各种重分区教程的指导和误导,成功把手机刷死。再通过Google学习,综合各种工具成功折腾救活,甚至还用上了高通的开发环境,最终顺利无损重新分区扩大了userdata。

感谢自己最初在试验过程中清除aboot分区数据后,为稳妥起见把cache、userdata、storage分区以二进制原始数据镜像格式备份下来,最终才能达成无损分区。

本想自己搞好就此打住,知道折腾分享发教程会是个大坑,本就懒得弄了。可一搜米2版块分区帖子,见还有很多人都还有问题,弄好的几乎都清掉了自己的数据。

大家的手机里的聊天记录、图片语音都没意义么?各种设置重来一遍的时间都不值钱么?

就此决定再次折腾,弄一篇无损分区的教程出来。

在此顺带谴责一下论坛里各种不负责任遇到问题就让人不备份数据就通过wipe数据来处理问题的解决方法。


我自己折腾过程的八卦就不分享了,做一个让小白们都能看着图一条线走到底、能走通的教程来就好。分区过程中的所有问题都会在1楼更新解答。

我有两个手机,一个是米2 32GB,另一个是米2S 16GB。做教程时考虑到教程中调整storage分区大小的操作时间和恢复原本备份的storage分区数据写入时间,当然16GB的短得多,就拿16GB的2S来做了。32GB的米2弄好就不重新折腾来做教程了。

不用指望官方出分区调整工具了,用户基数太大,改方案风险很高。也别指望V6正式版能合并分区了。V6特别版到临出正式版的当月都没合并分区的探路方案,等出正式版使用的人更多,再合并分区会引发灾难的。既然官方不给出路,我们用户就只能自己走一条路出来自救了。


本教程整个过程中不需要清除数据。严格按教程步骤来,不要擅自做多余的其他操作,应该没有丢数据的可能性。

无差别无损无痛不丢数据重分区,不区分运营商(联通、电信版均可)、容量(16GB、32GB版均可)、不区分系统版本(V4、V5、V6特别版均可。V6内测版和4月3日正式发布的公测版因Android 5.0 Lollipop新增PIE权限验证特性而无法进行resize_data分区容量调整操作,请在升级5.0 V6前或降级到非5.0系统后调整分区)。分区后不影响OTA更新升级,卡刷完整包无障碍,线刷也不会恢复官方分区方案。

附带小福利:整个过程中完全不需要开后盖装卸电池,适合像我一样的懒人。

教程理论上也适用于其他高通方案的手机使用,不局限于小米2/2S或小米品牌手机。其他手机根据自身分区功能模块布局,结合本教程变通即可适用。


敬告:

1、刷机有风险。教程做得再细,实践的人多了也会有各种各样的意外出现,无法完全避免。务必把教程看仔细了。等自己觉得熟悉了,最好是理解了有把握了再开始动手。如遇与教程配图不符的情况,请自行排查问题并解决。一旦开始就不要半途而废。已遇到几个说中途不想搞了,留下一个烂摊子问怎么恢复的人。对不起,这样的责任在自身,不该由我花费精力来承担恢复指导。

2、胆大心细,每一步操作前核对自己是不是按要求来的,不要容许自己犯错误搞出问题来。同时再次强调要按教程步骤要求操作,并且不要为了节省时间不按步骤2.1进行备份。

3、精力有限,从2月1号开始,未严格按教程各步骤要求,且未按步骤2.1要求进行备份指定内容,把机子搞死了搞出问题来了的小白一律不负责指导其恢复。

4、教程经历一个月的更新,已为最终版,已经够细,就丢这里不再更新了。在精力能够承担的前提下,不定时打开帖子解答疑问,但这不是一种义务。


再提供一个Mi2(S)系列全机型无差别救砖教程的帖子(含论坛所谓“深度救砖”改进版,无需硬件短接,直接纯软件操作)适合在本教程里乱搞变砖了的小白和论坛其他各种情况的砖机(救砖后无法保证能恢复变砖前原有数据)。


2月2日更新:针对在本帖中不知做了什么教程外的操作(大部分有变砖再救活的过程),最终手机网络信号丢失的机友,这里有一篇恢复网络信号的简单教程。现已在步骤2.1中新增备份要求,可避免出现网络信号丢失的情况。未按要求进行备份又丢了网络信号无法恢复的人就不要再问了。

Mi2(S)系列全机型网络信号丢失恢复教程。


2月2日更新:1月9日原计划再出一篇提取/恢复DiskGenius分区备份文件操作的教程。让备份了分区但因分区方案改变,DiskGenius拒绝恢复分区数据的机友能找回自己的所有个人数据。此计划作废,精力有限,在这里用文字描述操作方法即可。请自行用WinHex打开24、25、26分区DG备份文件,鼠标拖拽选中0x600位置之前的所有数据,Ctrl+X剪切,剩余的数据另存为一新文件,再用WinHex再次打开另存文件,即可访问到备份分区中的各种文件,就能提取其中的文件了。


至此,所有在本教程中因个人进行教程外的不当操作挖出的坑都填上了。教程为最终版,已照顾到所有环节,不再更新调整内容。

1月16日更新:另发一篇Mi2(S)系列全机型耳机一键音质提升及播放器体验改善教程

------------------------------------------------------------------------------------------------------


一、软件环境:

1、工作环境文件夹,解压到“C:\Mi2 Repartition”下(眼神不好使的小白看仔细了)。其中含Android命令行工具、WinHex十六进制编辑软件、DiskGenius磁盘调整软件,userdata分区挂载可使用空间调整工具resize_data,以及处理过程中的backup备份文件夹。

Mi2 Repartition.zip

在此感谢nubia论坛sl1sl1sl提供resize_data工具,原帖在此处http://bbs.nubia.cn/thread-276776-1-1.html


2、目前所知唯一能支持Linux Ext4格式无损调整分区(前移后挪双向均支持)的软件:Paragon Hard Disk Manager 14。此干粮请自备。干粮在此:http://pan.baidu.com/s/1nD6Zj(如发现链接失效请私信我再更新下载地址)


3、小米2/2S官方线刷工具MiFlash(仅为安装Qualcomm HS-USB QDLoader设备驱动,教程过程中无需进行线刷)。此干粮请自备。干粮在此:http://bigota.d.miui.com/tools/MiPhone20141107.exe


4、手机端Root Explorer app程序。这个就不提供了,请自行在手机上任何应用商店里下载安装。


二、开弄:

0、请保证电池电量充足

移动storage分区时会很耗时间,按32GB版手机sdcard剩余空闲空间只有1GB来预计,操作时间可能达到约4小时,耗电约20%~30%。如sdcard上什么也没有,预计10分钟之内就能完成移动分区操作。总之最好满电操作

有人质疑移动分区操作时间太长,不如自行导出,重分区完毕再写回去。这没考虑到效率低下的MTP模式读取与写回去的时间。而且sdcard上的.android_secure、Android、MIUI三个文件夹里的部分内容,以及部分app在sdcard上管理的内容是在MTP模式下是不允许用户随意手工存取的。本教程无损分区意味着所有app和程序设置、系统设置都没变动,开机就进入正常启动环境运行app,sdcard上部分文件是被app和系统锁定了的,到时候在MTP模式下手工备份/还原会出现读取/写入失败,反而搞得人心烦

强烈建议不要把userdata分得过大,超出自己近期需求。毕竟userdata分区扩大的空间是来自storage分区的,分太多过去用不完又挤压sdcard可用空间。调整时适当扩大就好,以后发现不够用了,还能按教程再扩展的。

2月2日更新:之前加了此建议后还是遇到很多调整分区时考虑不周,分多了询问如何调整回去的。责备人的话就不多说了,在此只明确表示反向调整可能会是个更大的坑,精力有限不会单独指导更不会出教程。


1、正常开机状态下,在“设置-其他高级设置-开发者选项”中打开“USB调试”。电脑端按键盘Win+R(限Windows系统),输入cmd回车,打开命令行窗口,输入cd C:\Mi2 Repartition回车。然后按顺序运行下图中的三条命令。注意运行命令时手机屏幕上是否提示操作权限,请给予允许:

#注释:运行命令时手机必须已获得完整root权限。开发版自带完整root权限,如运行命令时手机屏幕上提示有程序被禁用root权限,进入“安全中心-权限管理-ROOT权限管理”中允许给予root权限再重新运行命令。稳定版需自行处理获得完整root权限。稳定版系统如何获取完整root权限的方法请论坛自学

adb shell su -c "dd if=/dev/block/mmcblk0p9 of=/sdcard/aboot.img bs=4096"

#注释:本命令通过adb shell以su(root)权限完整导出手机aboot分区4K block size的二进制数据作为镜像文件aboot.img存储在手机sdcard上

adb pull /sdcard/aboot.img .\backup

#注释:本命令通过adb pull命令将上一步生成的aboot.img镜像文件拉取到“C:\Mi2 Repartition\backup”路径下备用

adb push resize_data /sdcard/

#注释:本命令通过adb push将“C:\Mi2 Repartition”下的resize_data文件推送到手机sdcard中为后面第7步备用


2、关机,按住音量-键,再短按开机键,进入fastboot启动环境。然后运行以下命令:

fastboot erase aboot

#注释:本命令在fastboot状态下擦除手机aboot逻辑区块中的数据

#注释:去掉aboot模块后,重开机才能已Qualcomm MMC Storage模式在PC上加载手机内部存储器

然后长按开机键约10秒,听到USB设备断开并重新加载的声音后松开电源键。此时会安装并加载Qualcomm HS-USB QDLoader设备驱动,让设备进入MMC Storage内部存储模式

#注释:需安装小米手机驱动(MiFlash线刷工具软件中集成),否则无法安装Qualcomm HS-USB QDLoader设备驱动

#注释:如安装Qualcomm HS-USB QDLoader驱动后,在Windows设备管理器中发现此设备前有黄色感叹号无法启动的情况,需在设备管理器中禁用此设备,断开并重新连接USB后,在设备管理器中启用此设备,即可正常加载。此问题是PC系统驱动环境引起。


2.1、新增备份/恢复环节:

看到有人按教程来,还是能把机子上数据搞丢了(未描述原因或详细情况),特新增备份和恢复的环节,保证任何情况下都还能恢复未开刷状态时的分区和数据。这里就纯文字描述了

备份:擦除aboot状态下,进入MMC Storage连接模式后,打开DiskGenius,选中手机设备,按键盘上F9键,备份下分区表。然后分别选中24(cache)、25(userdata)、26(storage)分区,点鼠标右键,选择“备份分区到镜像文件”,然后在弹出的窗口中选择备份镜像文件的存储路径,开始保存。备份镜像文件体积较大,未压缩状态下分别为384MB、3.5GB、还有一个约9.xGB(16GB版手机)/25.xGB(32GB版手机),注意电脑硬盘可用空间能放下备份文件。备份时的传输速度约为0.7GB/min

2月2日更新:为避免小白误操作HDM出现USB拔出或意外断开、半途手动终止进程、调整出错失败等问题,造成手机变砖恢复后无网络信号,切记请在DG中备份除分区8(aboot)外的0~21分区数据,以便如遇丢失网络信号时有自己的配置可恢复。一旦出现问题,联通版手机还能使用别人的配置,但电信版手机因运营商网络要求各项机器编码匹配才能连接数据网络,应特别重视此步备份操作

恢复:同样在擦除aboot状态下,进入MMC Storage连接模式后,在DiskGenius中选中手机设备,按键盘上F10键,弹出窗口中选择之前备份的分区表文件,确认操作。此时可能会有几个扇区报写入失败,不影响。然后分别在24、25、26分区上点鼠标右键,选择“从镜像文件还原分区”,弹出窗口中选择之前各个分区的备份文件。恢复时的写入速度约为0.3~0.4GB/min


3、打开Paragon Hard Disk Manager 14(不区分Pro、Suite版本,初次使用时选择开始界面上标示软件名称的那个橙色模块,眼神不好使的小白看仔细了),按下图顺序操作。建议划出的空闲空间大小为256MB的整数倍:

#注释:软件运行后会因加载手机n个分区而较长时间没有反应,不用心慌去杀软件进程,可以选择干点别的事情先,等几分钟就好

操作完毕会发现storage分区前出现一片绿色未分区空白区块,关掉软件即可

#注释:此步操作执行时间根据storage分区(手机sdcard存储空间)已存在的数据多少而有不同,如分区无数据,调整时只需不到5分钟,而我32GB版sdcard剩余约6GB的手机,操作时间就有三个多小时。调整开始时会有较长时间的0%进度显示,只要没报错误或失败就放在一旁等着,强行退出或断开USB连接会造成不可预料问题,变砖和变砖恢复丢网络信号的例子已有好多起。所以请务必保证电池电量充足

如软件报告调整分区时发现cross-link files而拒绝操作报失败的情况,请按下图所示操作,强制让软件忽略文件系统完整性检查,即可顺利调整分区大小(图为HDM 15版本,与教程中使用的14版操作上无区别):


4、打开DiskGenius,删除25分区(即userdata分区,保存的是个人app及相关数据、系统内置app及相关数据、系统设置等)

在空闲区域中按图中参数重建分区,其他未框住的东西不用动

隐藏25分区

保存更改,提示删除之前引导记录时选择删除。保存更改后会发现你的userdata已使用数据全都还在(深紫色区块,如后一图)


5、删除26分区(即storage分区,也就是手机sdcard,保存的是图片、媒体文件等个人存储数据)再重建。此时先请抄记下DiskGenius软件中原26分区的起始扇区号,并保存此时的分区表

#注释:此步操作原因是之前Paragon Hard Disk Manager 14调整storage分区数据时会在26分区后留出2MB空闲空间,重建26分区才能将这2MB重新划入使用。通过删除前和重建后的26分区(storage分区)参数中的总扇区数变化可以观察到。没洁癖的人也可选择跳过此步,不删除重建26分区,不会影响storage分区(sdcard)的正常使用

在空闲空间处右键新建分区,按图中参数重建,注意检查重建前后起始扇区号是否一致,图中“起始扇区号”和“总扇区数”框出来做说明只是为了和删除前记下的比较用,无需按图中数字填写。其他未框住的东西不用动

新建后隐藏26分区

正常情况下,保存更改后会发现你的storage分区已使用数据全都还在(深紫色区块,如前图例)。如遇保存后26分区变灰黑色,则请检查26分区在重建前后的起始扇区号是否一致。如发现前后不一致,需重新删除分区再重建。第二次重建时在分区详细参数的起始扇区号处填入之前抄记下来的原起始扇区号

或选择恢复刚才保存的分区表,放弃第5步重建26分区操作,保留其后部存在2MB不痛不痒的空闲空间不划入使用,毕竟数据更重要

如分区变灰黑色的状态下开机,则系统会初始化storage分区,sdcard上的东西就不见了

#注释:本条注释仅供想要了解详细情况且有一定知识基础的朋友参考了解,普通机友只需按步骤操作即可,无需了解这一块的详细情况之前删除重建25 userdata分区无需记录比较分区起始扇区号,是因为25分区的起始扇区号是固定的,是前面24 cache分区的结束扇区号(3538943)+1。而24分区在之前的调整过程中没动过,所以新建25分区时默认的起始扇区肯定是3538944,就不用记录对比前后是否不同了。重建后也一定能识别分区原有数据(Ext4磁盘格式中的文件管理信息和原本的文件数据),只是变动了分区大小信息,所以才需要后面resize_data来更新整个GPT分区表中关于25分区的信息和25分区里保存的文件管理信息
但HDM调整26 storage分区大小,给25、26两个分区间挤出空闲空间来时,因有些人填写的自定义空闲空间大小造成操作后造成在25和26分区之间、在重建25分区后而未删除26分区前,可能存在一定数量的空闲扇区。所以后来建议挤出空闲空间操作时填写256MB的整数倍空间大小
DG软件删除26分区后,第一个空闲扇区就是25分区结束扇区+1了。此时再用DG默认新建分区参数来重建26分区就会引起起始扇区号的偏移,新分区的起始扇区号就不再是删除前的那个原本的起始扇区号。一旦起始扇区前后有差异,错了位,GPT分区表里26分区起始扇区号就匹配不上出现冲突,不能正确识别26分区和原有数据(Ext4磁盘格式中的文件管理信息和原本的文件数据),26分区就成灰黑色了
造成26分区变灰黑色的原因还有一个,就是DG本身对GPT分区及Ext4磁盘格式支持不佳,不然不会出现Ext4磁盘格式在软件里被认成Ext3、改变分区起始扇区不能同步更新GPT分区表信息、不支持Ext3/Ext4分区无损调整大小、以及之前的其他重分区教程中重建26分区时DG软件停止响应退出的情况。而HDM这方面就要完善些,调整分区大小时会同步更新GPT分区表
再经观察试验得知小米2/2S采用的高通方案或系统方案在开机启动过程中会检验分区信息,如发现storage分区文件管理信息有误,就会自动对分区进行初始化以保证正常使用,这样sdcard上的数据就丢掉了
综上,重建26分区可能会变灰黑色这一问题应属于HDM和DG两个软件共同作用产生的bug,而记录、比较、修正重建26分区时的起始扇区号能够避免这个bug引起的文件丢失
啰嗦完毕,该干嘛接着干嘛去

#注释:本图中也选“删除”


6、打开WinHex,在软件主界面按Ctrl-D打开硬盘克隆功能,严格按下图操作,然后确认写入操作。写入完毕后aboot分区数据即已恢复,可长按电源键约10秒正常开机进入系统

#注释:“357410”是aboot分区在MMC存储器中的起始扇区号。这个aboot分区起始扇区号357410可在DiskGenius软件中选中aboot分区,在分区参数中看到,可自行验证。2和2S所有型号都相同,都填这个数


7、正常开机入系统后,用手机端的Root Explorer将之前放进sdcard中的resize_data文件移动到根目录/system/bin/中(Root Explorer需允许root权限,移动文件时会提示挂载需要挂载为可读写,也需允许),移动文件成功后保持Root Explorer打开的状态,运行下图中命令:

adb shell su -c "chmod 777 /system/bin/resize_data"

#注释:本命令通过adb shell以su(root)权限使用chmod命令修改resize_data文件权限为rwxrwxrwx,以保证文件能够成功被读取并运行。或者也可不执行本条命令,通过Root Explorer修改resize_data文件权限为rwxrwxrwx也行

adb shell su -c "resize_data doit"

#注释:本命令通过adb shell以su(root)权限执行resize_data文件,调整手机中挂载的/data分区实际可用空间信息到与userdata物理分区实际大小一致

adb shell su -c "rm /system/bin/resize_data"

#注释:本命令通过adb shell以su(root)权限使用rm命令删除使用后的resize_data文件。或者也可选择不运行此命令,直接换用Root Explorer删掉resize_data文件

如本步无法调整好/data挂载可用空间大小,可选择线刷一遍系统,让系统在升级后初始化时自己调整/data挂载大小。注意线刷时应选择与当前系统版本不同的线刷包(小版本号区别就好),刷入时选择“保留所有数据”模式。初始化完成后再刷回原版本系统


8、打开手机设置,进入“其他高级设置”-“存储”界面检验工作成果。顺带打开手机文件管理app看看sdcard中的个人数据是不是果真都还在

#注释:其实进行第7步时就能明白sdcard中的东西都还在,不然之前第1步放进去的resize_data就该不见了。而开机进入系统看到自己设置的主题和桌面上的那些app就知道自己的程序和设置也都还在了


9、验证空间可用性:我将一个3.21GB的RAR压缩包改名为test.apk丢进了手机/data/app/目录下,然后在手机“设置-其他高级设置-存储”里验证可用空间是否已超过官方原分区方案的3.75GiB(3.5GB/3584MB)。顺利通过验证,截图如下:

#注释:其实能把3.21GB的文件丢进去就已经说明可用空间确实已扩展了,都不用去设置里看的。拿来做实验验证的这个手机是我已改好的Mi2 32GB版,分区方案与教程中的例子不一样,我总不能为了验证空间可用性,就再把我那可怜的Mi2S 16GB机子重头再折腾一遍吧。添加此验证截图只是为了向大家证明分区空间扩展操作有效、可用。大家改好分区后自己用就好了,不必每个人都学我丢个大文件进去验证一下。不要问我怎么把验证文件放到/data/app/路径下的方法,那又是一个坑。自己想要验证就自己想办法吧,这个我就不交代了


三、清理工作(可选):

Windows任务管理器中杀掉adb.exe进程

删除手机/sdcard/中的aboot.img

删除“C:\Mi2 Repartition”文件夹和其中数据

卸载Paragon Hard Disk Manager 14软件


本教程到此完毕

------------------------------------------------------------------------------------------------------

以下为Update更新区域:

2015.01.05 04:30更新

原第7步因部分机友反馈resize_data在/storage/sdcard0/目录下执行时报“can't execute: Permission denied”权限不足的问题,对第7步运行环境和命令行作修改,保证通用性和成功率。
原因分析:默认状态下/storage/sdcard0/(即/sdcard/)下文件权限为rwxrwx---,我运行adb shell su -c "/storage/sdcard0/resize_data doit"这一命令时的root权限完整,用户组为“所有者”,属于第一组rwx的权限,所以能够顺利运行。而出问题的人运行同一命令时因为root权限不完整,实际执行时用户组为“其他”,属于第三组---的权限,少了第三个“-”代表执行权限的“x”,无法执行resize_data文件。所以想办法绕开这个权限问题就好了(见更新后的第7步)。
如果想获得完整root权限,这个坑就比较深了,需要自己学习想办法去。不过反正分区都搞好了,要不要花时间精力去填这个坑,就看自己怎么想的了。
之前没预计到这一问题,排查解决也不够迅速,给机友们造成困扰,抱歉。

2015.01.05 12:50更新

第5步删除并重建26分区(storage)分区前,请抄记下原分区起始扇区号,并保存此时的分区表。如遇重建26分区后分区变灰黑色,则请检查26分区在重建前后的起始扇区号是否一致。如发现前后不一致,需重新删除分区再重建。第二次重建时在分区详细参数的起始扇区号处填入之前抄记下来的原起始扇区号。或选择恢复之前保存的分区表,放弃第5步重建26分区操作,保留其后部存在2MB的空闲空间不划入使用。如分区变灰黑色的状态下开机,则系统会初始化storage分区,sdcard上的东西就不见了。这个问题推断应属Hard Disk Manager移动storage分区时未能按4K扇区对齐操作,DiskGeniuse重建25分区时又采取4K扇区对齐操作,造成26分区起始扇区号不一致,未能恢复storage原有数据。
向出现此问题造成storage分区被初始化的Dobovy机友说声抱歉。

2015.01.05 22:00更新

添加了第9步验证分区空间扩展后的实际可用性。

2015.01.06 09:07更新

新增步骤2.1备份/恢复环节,确保出问题时能够恢复分区数据到未重分区操作前状态。

2015.02.02 15:57更新

教程内容更新为最终版,已照顾到所有环节,不再进行内容更新
除非注明,发表在“傲孤漠客”的文章『Mi2(S)系列全机型无差别无损无痛不丢数据重分区教程(最终版) 』版权归iMoke所有。 转载请注明出处为“本文转载于『傲孤漠客』原地址https://www.imoke.org/post/20150415644-MI2supdate.html

评论

发表评论   

昵称*

E-mail*(建议输入,以便收到博主回复的提示邮件)

网站

分享:

支付宝

微信