分享

Linux下Android手机刷机实例

 黑传说 2012-09-28

现在用的手机是前年这个时候买的Moto Defy,由于工作比较忙没时间折腾它,直到今年的11月份也一直用的是Android 2.1系统。不过随着身边用Android的同事陆续多了起来,看到他们用的Android 2.3系统还不错,终于在前些天忍不住了,经历了我人生中第二次刷机经历。

为什么是第二次刷机经历?其实这也是另一个我一直不刷机的原因。以前在大学时玩过Moto P2k类型的手机,甚至由于感兴趣还做过主题包和ROM,IT168的Moto论坛现在还能找到我当时发的一些精品贴,所以知道刷机没什么技术含量也没什 么意思。这次的刷机经历我的感受还是和以前一样,糟透了。大家整天都喊这刷机刷机,却很少有人真正去把刷机这件小事当回事儿,以至于我在刷机时遇到很多问 题时最后都是参照国外论坛里面的解决方案解决,国内根本找不到。尤其像Linux用户,Linux的下刷机方案更是少之又少少之又少!所以,我觉得有必要 写一篇blog记录一下,希望能帮到其他Linux&Android用户。

本指南将会以Moto Defy为例告诉你关于Android刷机的一切相关知识,我会尽全力来向你解释这款手机如何工作,怎么去Root,怎么安装SBF。最重要的是:这些固件如何起作用,这样你就不会因为安装一个不正确的Rom而让你的手机变砖了。

(注意:对你手机造成的任何破坏,我可概不负责 )

一、为什么你的Android手机不会“变砖”? 被锁的Bootloader,这又是什么意思?

对一些人来讲,被锁的Bootloader这个设置比较操蛋,而对大多数人来讲(一般不是高级玩家),这确实是一个相当酷的功能,这相当于给你的手机加了一道保险。这个锁定的Bootloader, 就意味着你没有办法重写官方的Bootloader, 或者官方版的Recovery。

当手机打开Bootloader的时候,也就意味着基本上手机的全部硬件都打开了,手机处于可用的状态。我们就能使用官方恢复功能,手机的这一个功能也被锁定,它既不能被删除,也不能被修改,但它具有恢复出厂功能,以及安装升级包的功能。

起初的时候,这个设置造成了一定的麻烦,因为有了这个被锁的Bootloader,你就没有办法安装一个像CM一样自定义的Rom。这时,2nd Init登场了,这个不起眼的应用可以在Bootloader运行之后取得权限,允许Defy去加载一个不同的,非官方版的Android版本。

你甚至可以安装一个自定义的恢复软件,这个恢复软件可以在手机内存中运行,而不是从手机恢复分区中运行,这意味着什么呢?这就是说,即使你的手机变成砖了,或者不慎删除了你的资料,又或者手机系统分区出现问题,你都可以利用它来进行恢复,手机仍能够被RSD(Linux下的一个刷机脚本,Windows下叫RSD Lite,很老的刷机软件了。)以引导模式状态来识别,手机还能够用官方或者修改的Rom重新刷机。这样,手机又能正常使用了。

幸亏有了这个被锁的Bootloader, 这样即使你想把Android变砖也相当困难。

国内论坛中出现的众多问题实际上并不是真的变砖了,而是没有正确的刷SBFs。手机要是真的变砖了就意味着手机不能加载引导程序,也不能初始化手机硬件,这时你就需要用JTAG来直接重新给你的手机写程序(这个软件我也不是很确定能不能在Defy上使用。)

二、root你的Android!

什么是root,为什么人人都在讨论它?

Android手机本质是Linux系统,生来文件系统就是被锁定的,这就是说用户只能对手机进行一些简单的操作,安装/卸载 应用程序,更换手机铃声或者其他的一些基本的东西。你可以看到系统文件,但是不能对其进行操作,也不能更改Android系统的实际操作。

ROOT也就是说你可以像Linux系统管理员一样来访问手机系统。也就说你可以访问和改变系统文件,删除/创建 文件或文件夹等等。想要安装像2ndInit一样需要访问Android系统文件的权限的应用的话,你就得取得读写系统文件的权限。

庆幸的是,给Defy Root是一件相对简单的事情,而且一般不会有什么问题。

友情提示:如果你买的是国行手机,取得root权限会使设备无法保修。

获取root权限:

1.安装ADB。

1.)下载ADB for Linux的工具包,解压到你便于找到的地方。下载地址
2.)新建并编辑一个文件:

1
sudo vi /etc/udev/rules.d/51-android.rules

在里面写入:

1
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666"

其中ATTR{idVendor}的值不同厂商的标识不一样,请按照自己的手机更改。参照表如下:

Manufacturer USB Vendor ID
Acer 0502
Dell 413c
Foxconn 0489
Garmin-Asus 091E
HTC (Older Phones) 0bb4
HTC (Newer phones) 18d1
Huawei 12d1
Kyocera 0482
LG 1004
Motorola 22b8
Nexus One/S 18d1
Nvidia 0955
Pantech 10A9
Samsung 04e8
Sharp 04dd
Sony Ericsson 0fce
ZTE 19D2

3.)保存退出,设置权限:

1
sudo chmod a+rx /etc/udev/rules.d/51-android.rules

4.)编辑 ~/.bashrc 文件加入ADB tool的路径:

1
vi ~/.bashrc

在末尾加入刚下载的工具包解压的路径:

1
export PATH=${PATH}:/home/rabbit/Documents/platform-tools

5.)重启你的Ubuntu,然后USB连接手机,确保usb调试已打开,在终端下输入

1
2
adb start-server
adb devices

如果一切正常,就能显示出当前连接到电脑的android设备。

2. 下载 rageinthecage-arm5和 Superuser package:

rageagainstthecage-arm5:下载地址
md5: bfa28d457b54508326ab55d11399c586
Superuser package:下载地址
md5: 43d9a40b63e916635d5ad7ca32433fab

3.解压 rageinthecage-arm5 和 Superuser package 到 adb 所在目录(Android SDK 安装目录的 /platform-tools 下)。
4.用 USB 数据线将 Motorola Defy 连上电脑。
5.在电脑上打开终端并运行下列命令:

1
2
3
4
adb push rageagainstthecage-arm5.bin /data/local/tmp/
adb shell
chmod 755 /data/local/tmp/rageagainstthecage-arm5.bin
/data/local/tmp/rageagainstthecage-arm5.bin

运行完毕后继续执行下列命令:

1
2
3
4
exit
adb kill-server
adb start-server
adb shell

注意:这时命令行的提示符应该是“#”。如果你看到的是“$”说明命令没有正确执行,请重试第4和第5步。

1
2
3
4
5
mount -o rw,remount /system
exit
adb push su /system/xbin/
adb shell chmod 4755 /system/xbin/su
adb push Superuser.apk /system/app/

6.现在,你的 Motorola Defy 现在就拥有 ROOT 权限了。

三、刷机!

1.Linux下刷入SBF文件

什么是SBF?

SBF文件是Android打包的刷到你手机上全部信息的一个刷机包。在这个刷机包中,有众多的文件,每个文件都以CG XX命名,XX是数字,表示一个序号。

所以,当你给手机刷一个完整版的SBF文件时,它会先取得手机内存权限、格式化内存、创建新的分区,然后把刷机包中的文件拷贝到新的分区中。每个分区都对应着一个CG XX的文件。

刷机包中包含着众多的CG文件,这些CG文件中含有Android系统的版本号。假设你在用Android 2.0,第一版,没有任何升级包,没有任何其他乱七八糟的应用。这个版本的版本号就是第一版。

当手机升级之后,其版本号变成第二版,以此类推。每个Android版本都有独有的一个ID, 一旦你升级了,你就不能回滚到上个版本,在这个版本信息中保存在刷机包的CG31和CG39的文件中。

SBF修改版

这个版本就是说移除CG31和CG39的SBF版本,这样就能在不同Android版本中自由迁移。但是,因为修改版的SBF不能创建 /System (CG39) 和nd CDT (CG31)2个分区,我们需要自己用软件Nandroid Backup来复制系统文件,否则的话,手机可能在缺失/System的分区下不能正常使用。

这个软件就是一款能读写的可自定义恢复的zip文件,它能删除/拷贝 /system分区内的所有文件以及其他分区的文件,并且在操作的同时不会格式化分区也不会重新划分分区,这样就既不会修改系统配置。这也就意味着你不可 能在操作的时候把你的手机变成砖,但你可能会使Android系统不能启动,新的SBF包或者Nandroid就需要安装。

CG 版本

有了以上的解释,顺便来说说CG版本。

如果你刷机的版本低于手机本来的版本,那么在手机启动之后会看到黑屏,或者是提示你刷一个官方的Rom版本。只要记住这一点,你就可以在不同Android版本之间来回刷机了,这样也不会让你的手机变砖。如果你有一块Android 2.0版的defy,而且希望它一直保持降级的能力,你只需要安装一个你想要的Android版本的修改版SBF,然后用相应的Nandroid来进行恢复系统文件。

官方SBF

这里是所有官方的SBF清单(目前这个清单下载链接已经失效,但可以作为参考,下载请看这个清单), 就是说它们都包含全部的CG文件,刷这些SBF后你的手机就像刚从Moto卖给你一样,你要记着刷了这种完整的SBF包进行升级,你就不能降级到一个低版 本了。了解了这些,你就应该能尝试不同的Android版本咯,也能毫无压力的去商店咯。只要弄清楚CG文件的原理,大胆刷机吧。

Do it!

0.)保持你的手机电量超过50%。(至少!)
1.)下载你想刷的SBF文件。
2.)下载sbf_flash文件到你的ADB目录下:下载sbf_flash作者blog
3.)

1
2
chmod +x sbf_flash
sudo ./sbf_flash xxxxxx.sbf

现在,命令行应该会提示你重启手机到bootloader模式。

2.通过fastboot刷入img文件

1.)下载fastboot:点击下载
2.)

1
2
sudo chmod a+x fastboot
sudo ./fastboot devices

成功识别到设备会出现一行字,如果没有成功则什么都没有。
3.)写一个文件到闪存分区,如写入一个文件到boot分区:

1
sudo ./fastboot boot XXX.img

友情提示:想要从任何一个ROM版降级,你只需要刷装一个完整版的官方版的SBF(切记检查CG版本)。

四、常见问题及解决办法:
1.启动的时候黑屏:尝试安装一个比目前手机系统中CG版本更低的系统。
2.安装修改版SBF后出现灵异问题:安装一个与手机SBF相匹配的Nandroid备份,记着先在Recovery模式中清除系统缓存。
3.如何进入恢复模式?同时按下手机电源键和音量减,直到屏幕上出现一个黄色的三角形,一旦看到这个,就意味着进入了recovery模式。现在同时按住音量加、音量减,屏幕上就会出现一个菜单,如果你的是 éclair 版,不用按任何键就会出现这个菜单。
4.如何进入Bootloader模式?按住电源键和音量+键直到手机屏幕上出现一些白色的字,这就进入了Bootloader模式。

五、参考文章:
Motorola Defy: Full Update Guide
All-in-One Defy Beginner’s guide
How to root Defy via Linux!
Fastboot

====================================

黑传说的看法:

不错

加个微投的驱动不知道怎么弄啊???就是这个华阳微投


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多