android 刷机 root 相关
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#原理
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1.使用 adb 连接设备成功后,我们对设备的系统具有了 root 权限,而设备系统自身并没有 root 权限。例如您在 market 看到 need rooted device 字样,那就是意味着您的设备系统也具有 root 权限。通常来说,root 指设备自身可以执行 su 并获得 root 权限。
2.使用 adb 得到root权限的原理
adb ( android debug bridge ) 链接设备,并使用具有 root 权限的 adb 修改/替换设备 su 文件,从而具有 root 权限。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#使用adb得到root权限的操作
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
插入 usb 数据线,然后打开终端,进入 adb/tools 目录,执行
adb devices
此时显示为:
List of devices attached
0123456789ABCDEF device
成功列出已连接的设备后,执行
(Android adb devices显示 ???????????? no permissions怎么办?
Windows:运行adb root
Linux:
adb kill-server
sudo adb root)
adb shell mv /system/xbin/su /system/xbin/osu # 备份原 su 文件
adb push su /system/xbin # 把 adb/tools 的 su 文件 推送到 android设备 /system/xbin
adb shell rm /system/bin/su # 移除其他的 su 文件
adb shell ln -s /system/xbin/su /system/bin/su # 软链 su
adb shell chmod 6755 /system/xbin/su # 变更权限
adb shell sync # 同步所有缓存中的文件
adb shell reboot # 重启 android 设备
等待设备重启完成后,可以在 adb shell 模式输入:su(回车),会出现su: access granted, courtesy of www.magicandroidapps.com #等提示,代表成功了
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#关键词
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Bootloader
Bootloader是一个启动加载程序,负责系统硬件的初始化工作,也是刷机工作的第一道坎。大部分厂商采用了锁Bootloader的方式来阻止用户刷机,用户如果想要刷第三方固件就必须对Bootloader进行解锁,由于Bootloader加密算法较为复杂,所以解锁就变成了一件困难事,部分厂商因用户不满最终妥协,提供了官方的解锁途径,比如HTC和索尼爱立信,用户需要到官方网站进行申请然后解锁,但解锁后会失去保修,而另外一部分厂商则不提供解锁,那么解锁Bootloader就变成了一件很复杂的事,虽然有些黑客通过内外相勾结的方式破解了Bootloader算法,但没有破解是绝对完美的,也有很多朋友的手机在解锁时变成了转头。
如何判断Bootloader解锁呢?当Bootloader解锁后,启动手机会出现开锁图标,或者再次进入Bootloader界面有Unlock标志,就证明Bootloader顺利解锁。
Recovery
Recovery是手机的工程模式,主要用来执行手机的复位和升级工作,大部分厂商都在手机中提供了进入Recovery的方法,所以用户可以在官方下载Update.zip升级包在Recovery下进行升级,这种方式也是我们俗称的卡刷,当然也有部分厂商不提供,比如中兴。官方提供的Recovery一般来讲功能有限,而且尽可以进行Update升级包升级的操作,所以对于刷机的用户来讲官方的Recovery是没太大用的,大家一般都会选择使用第三方的Recovery来代替官方的。对于Recovery的操作,每家厂商的机型都有所不同,但是都大同小异,手机上的物理按键仅有几颗,所以Recovery的操作一般都是集中在开关机键、音量键或者确定键上。
root
在类UNIX系统中,root为超级用户,拥有系统的最高权限,如果我们把玩和使用分开算的话,那么玩Android手机的第一步就是获取root权限,只有有了系统的最高权限,我们才能在Android系统中释放最大的能量,干一些用户权限完不成的事。关于刷机方面,root主要是为了获取权限后让手机能够顺利的刷入第三方的Recovery,各个手机也都提供了各种不同的root方法,大体上可以分为两种,一种是临时root,而另一种是永久root,临时root会在系统重启后超级用户权限消失,而永久root不会。
Wipe
Wipe是主清除、复位的意思,这个字眼也是刷机的朋友经常听到的,很多朋友都是按照刷机教程去做了,但并不知道做的目的,Wipe存在于手机的Recovery之中,默认系统提供了两个Wipe方式,第三方的Recovery可能提供了三个,其中一个为执行两个Wipe(用户数据和虚拟机缓存),Wipe只是为了清除干净手机的用户数据以及虚拟机缓存,如果没有Wipe,可能会造成手机刷机后无法正常启动,在启动界面出现死循环等状况,所以刷机的朋友应该养成双Wipe的好习惯。
卡刷
就是recovery刷机,把刷机包(一般是update.zip)放到内存卡里,然后刷上recovery 运行刷机就好,现在都有一键recovery 所以这种方法速度快,简单,成功率几乎100% 。
线刷
就是FTM模式刷机,一般都是官方出的刷机软件然后你用他软件在线更新。
HBOOT
在HTC的Android 系统的系列手机中,HBOOT就是SPL。
SPL
SPL英文全称是Second Program Loader,“第二次装系统”,就是负责装载操作系统到ROM中。另外SPL还包括许多系统命令,如mtty中使用的命令等。SPL损坏了还可以用烧录器重写。
SPL一般提供这几部分功能:检测手机硬件、寻找系统启动分区、启动操作系统为系统的基本维护提供操作界面,可以通过数据线与操作终端(如PC)建立连 接,并接受和执行相应命令。
SPL主要作用就是引导系统启动。
解释一下Android的SPL的大致含义,希望对您有所帮助。
SPL除了包含手机的bootloader启动android外,还包含其他一些功能,如刷nbh,支持fastboot等等。
HBOOT的作用
手机是由hboot来负责引导启动的,这里简单讲一下流程,hboot启动后,会检查安全锁的状态:
如果检查后发现是S-ON,说明安全锁是打开的,那么hboot在完成引导启动的同时,会将system和recovery分区做写保护。
如果检查后发现是S-OFF,说明安全锁是关闭的,那么hboot在完成引导启动的同时,会将system和recovery分区的写保护打开。
修改后的hboot在这里起到什么作用呢?
当手机通过hboot启动,hboot在检查安全锁是什么状态的时候,无论检查结果是什么,这个修改过的hboot都会认为安全锁是关闭的,即让hboot自己欺骗自己,认为安全锁处于S-OFF状态。实际上此时的安全锁还是S-ON,只不过显示出来是S-OFF罢了。
这也就为下面这种情况找到了合理的解释:
机器状态为ENG S-OFF的朋友刷了官方包,然后ENG变回SHIP,S-OFF变回S-ON。但机器状态为SHIP S-OFF的朋友进行同样的操作,却不会失去S-OFF。
因为官方包是一个完整的刷机包,在更新过程中,会把hboot覆盖掉,那么,当这个被修改的hboot被替换成官方原版的hboot后,我们的机器也就回复到了原始的SHIP状态。此时,因为ENG S-OFF是一种假象,所以,S-OFF就变回了S-ON,但是因为SHIP S-OFF是真的把安全锁关了,所以,S-OFF还是保持不变。
既然你刷了ENG的hboot,那么他就会一直都显示S-OFF,所以不会有ENG S-ON的情况出现。
S-OFF
S代表 Security Lock,是安全锁,保护锁的意思。S-OFF就是安全保护关,S-ON就是安全保护开。
Secure Lock 就是安全锁。是硬件设计厂商用于保护固件不被刷写而设计的安全锁。如果这个安全锁是关闭的,那么对手机内的闪存芯片的刷写保护就关闭了,言外之意也就是可 以随便刷ROM了;反之,S-ON就是安全锁打开了,手机被写保护了。HTC的机器在用RUU刷机的时RUU会将安全锁暂时关闭,然后就可以刷HTC自己 的ROM。而HTC的HBOOT还有签名验证,所以没有HTC前面的ROM在刷机的时候是无法通过验证的。
ENG S-OFF
ENG代表 Engineer,也就是工程的意思。是HTC的手机在工程阶段测试时候使用的SPL,这种SPL是最不稳定的,一般只有HTC的ENG版本的RUU里面带这种SPL,也就是工程版RUU里面才带这种。
SHIP S-OFF
SHIP代表 SHIPPMENT,也就是出货的意思。当HTC交货给各大运营商的时候,ROM都是SHIP S-ON的,这些ROM都是经过了很多测试的,同样也是非常稳定的,也是零售版本采用的系统。