本教程内容基本转载 xda论坛"forest1971 "大神的,而第一个发现这个方法的是xda另一位大神"Drnull",这里谨向出现此问题的朋友做一些操作演示,刷机有风险,请谨慎对待 根据longerhair兄弟的说法,我的应该是半砖,在刷了几个其它内核和rom之后,都卡在FACTORY过不去,我直接跳到原贴子的第三步(依旧卡在FactoryFS.img失败的砖家看过来) 1,建立adb 操作环境,在电脑上操作adb. 首先要安装adb的驱动(方法:安装Kies并更新), 然后下载adb本帖隐藏的内容 adb.zip (3.26 MB, 下载次数: 11)到C盘根目录(解压后路径是C:\adb\tools).2,下载本帖隐藏的内容 4pda_kernel.tar (6.06 MB, 下载次数: 10)内核, 这个内核带有分区工具(这个基本用不上)和CWM(后面要用到), 用odin刷进去3. 用USB线将连接至电脑. 并且重启进入recovery. 4. 在WINDOWS操作系统里面的CMD里面运行CD 命令进入C:\adb\tools (ms-dos小白可参照我下面截图的命令,win7的系统要先运行 cd/才能到c根目录,)然后接着运行如下命令.adb devices如果正确的话, 在cmd里面, list of devices attached 下面应该一串数字或者字母(如果你的是进入recovery,后面会是recovery,而非device). 如果没有那串数字或者字母,说明还没连上adb, 可以在recovery-mount usb storage 选 mount storage, 连上了电脑应该会有声音, 然后重新输入"adb devices"(已经连上adb的不用管)接着运行adb shell你会看到生成"~ #", 如果生成的是" $"可能你没有root接着运行(~ #) umount /cache (输入代码时,直接用鼠标copy "umount /cache"进去就行了)我在运行这一步时,出现sbin/sh:~: not found 错误结果, 解决方法是进入recovery里面 amounts and storage-unmount cache(选这个) 接着运行(~ #) parted /dev/block/mmcblk0运行结果parted /dev/block/mmcblk0GNU Parted 1.8.8.1.179-aef3Using /dev/block/mmcblk0Welcome to GNU Parted! Type 'help' to view a list of commands.(parted)然后再运行(parted) print运行结果printprintModel: MMC VYL00M (sd/mmc)Disk /dev/block/mmcblk0: 15.8GBSector size (logical/physical): 512B/512BPartition Table: gptNumber Start End Size File system Name Flags1 4194kB 25.2MB 21.0MB ext4 EFS2 25.2MB 26.5MB 1311kB SBL13 27.3MB 28.6MB 1311kB SBL24 29.4MB 37.7MB 8389kB PARAM5 37.7MB 46.1MB 8389kB KERNEL6 46.1MB 54.5MB 8389kB RECOVERY7 54.5MB 264MB 210MB ext4 CACHE8 264MB 281MB 16.8MB MODEM9 281MB 1174MB 893MB ext4 FACTORYFS10 1174MB 3322MB 2147MB ext4 DATAFS11 3322MB 15.2GB 11.9GB fat32 UMS12 15.2GB 15.8GB 537MB ext4 HIDDEN5, 下面是重点,假设分区有损坏,我们要把它们去掉,然后重新再分.(1) 去掉分区运行代码(parted) rm 9(parted) rm 10(parted) rm 11在执行(parted) rm 11 命令时,出现 "partition /dev/block/mmcblk0p11 is being used, you must unmount it before you modify it with parted"错误, 我重新再刷一次4pda_kernel 内核, 再从头(abd devices)运行代码,这一次全部顺利(连unmount cache也行了, 除了找不到9,10分区外,因为上面已经移除了). 没有错误的就不用管了.这只是我个人操作出现的问题.另外还有个更简单的方法:进入recovery里面 amounts and storage-unmount system(选这个) , 试试,如果不行继续选 unmount cache 再试试出错前输入的代码.(2)下面我们来生成新的分区运行代码(生成9区)(parted) mkpartfs primary ext2 3322 4215(parted) name 9 FACTORYFS接着运行代码(把9区由ext2格式转为原来的ext4)(parted) quit~ # tune2fs -j /dev/block/mmcblk0p9~ # e2fsck -fDp /dev/block/mmcblk0p9~ # tune2fs -O extents,uninit_bg,dir_index /dev/block/mmcblk0p9~ # e2fsck -fDp /dev/block/mmcblk0p9上面四条代码,一条条来运行,遇到警告不理他丫的,直接 Y+回车键在把分区转为ext4格式如果遇到:1. ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab2. file while determining whether /dev/block/mmcblk0p9 is mounted.复制代码试试1. ~ # mount /dev/block/mmcblk0p9 /system复制代码后再运行转格式的代码.如果还是不行的话,进入到CWM 选"mount and storage" - "mount /system" 然后回到电脑cmd 重新运行转格式代码 (这个方法是从xda偷来的,注意不同区,后面数字要改, 例如7区后面改为mmcblk0p7)运行"e2fsck -fDp /dev/block/mmcblk0p9"如果遇到错误如"unexpected inconsistency", 要你"run fsck manually" 那就去掉"p"变成"e2fsck -fD /dev/block/mmcblk0p9",再运行. 接着运行代码(生成10区)~ # parted /dev/block/mmcblk0(parted) mkpartfs primary ext2 4215 6362(parted) name 10 DATAFS接着运行代码(把10区由ext2格式转为原来的ext4)(parted) quit~ # tune2fs -j /dev/block/mmcblk0p10~ # e2fsck -fDp /dev/block/mmcblk0p10~ # tune2fs -O extents,uninit_bg,dir_index /dev/block/mmcblk0p10~ # e2fsck -fDp /dev/block/mmcblk0p10接着运行代码(生成11区,这个不需要转, fat32没有问题)~ # parted /dev/block/mmcblk0(parted) mkpartfs primary fat32 6362 15200(parted) name 11 UMS如果出现 "end? "在后面,[code](parted) mkpart 6362MB 15.2Gmkpart 6362MB 15.2Gmkpart 6362MB 15.2GEnd?[code]可能就是你输入的是早期方法的代码,"(parted) mkpart 6362MB 15.2G" 改为现在的"(parted) mkpartfs primary fat32 6362 15200"应该没有问题,如果还有问题,把15200改为15564(3) 运行代码(parted) rm 7(parted) mkpartfs primary ext2 54.5 264(parted) name 7 CACHE(parted) quit~ # tune2fs -j /dev/block/mmcblk0p7~ # e2fsck -fDp /dev/block/mmcblk0p7~ # tune2fs -O extents,uninit_bg,dir_index /dev/block/mmcblk0p7~ # e2fsck -fDp /dev/block/mmcblk0p7上面分别是删除7区,再重新建立,再转换为ext4格式,跟前面几区一样.如果建区不成功,可能是因为坏区在这里,你可以调整这个区的大小, 54.5(起始) 264(结束), 在起始和结束之间选任意数字, 使之不小于128.(即128m,此区为cache 缓存)上面都顺利的话,运行代码reboot重启. 之后再连接, 连上adb, 再依次运行代码 adb devices, adb shell, umount /cache, parted /dev/block/mmcblk0,(parted) print上面只是查看一下是否分区和转化格式对了没有.到此转换成功...下面刷机..............注意: longerhair兄弟提到用odin刷机,但是xda 的大神认为应该用卡刷,我也看到有人用odin刷不行,用卡刷成功。