分享

Android手机ROOT权限

 lauexue 2011-12-10

Hero刷机小常识

G3的ROM目前分类两大类:官方原版RUU版ROM和国内外高手DIY版ROM。这二者有什么区别呢?官方版ROM必须要用HTC特定的RUU方式刷机,而且刷好后系统是不带有ROOT权限,系统默认是英文(需手动用第三方软件调出中文语言);高手DIY版ROM都是在官方原版ROM基础上进行原生编译的、而且刷机方式简单,基本都是ZIP方式的ROM直接放在SD卡上进行刷机的。而且刷好后系统自带中文语言以及ROOT权限,自动优化并配置好一些相应的基础设置。

那我到底要选择什么版本的ROM刷呢?

是选择官方版本的稳定还是选择高手DIY版的完美优化,这个还是要看你个人的口味来选择了!

下页以安桌原生编译ROM为例进行示范。

Hero ROM 1.1 安逸版

G3 简明文字刷机教程

1、下载刷机更新程序Getroot1.2

2、将刷机更新程序 getroot.apk 安装到 G3 手机中,安装成功手可以在程序列表中看到 Flash Recovery 。点击运行 Flash Recovery ,运行完毕后程序会自动退出。

3、刷机前请备份好所有重要信息和数据。

3、将下载的 Hero 1.1 ROM 包重命名为 update.zip(这里要注意系统隐藏扩展名的问题),复制到储存卡中,并把存储卡放入 G3 手机。

4、将 G3 手机关机,长按 HOME 键(小房子)+ 电源键,直到进入刷机模式。

5、选择第三项重置,清空内存(注:此操作会清除全部数据,请提前做好备份)。

6、选择第二项开始刷机。

7、等刷机过程全部结束,选第一顶,重新启动系统,至此刷机就大功告成了。

话不多说,直接开始首先把system/framework/framework-res.apk复制出来,待会儿拿他开刀~~~直接用WinRAR 或者好压打开framework-res.apk找到里面\\res\\xml\\plmn.xml解压出来,运营商的名字就在这里面。
使用AndroidResEdit打开plmn.xml!
打开一切就明了了,找到“中国移动”“中国联通”修改为你想要的字符,只能是小于等于四个字符的。
否则会报错~~再把plmn保存(千万别使用AndroidResEdit的签名功能~~)
现在你的plmn就是个性化的了。再用压缩软件打开framework-res.apk ,进入\\res\\xml\\,用新的plmn代替原来的。
framework-res.apk不用签名就可以用了。
再把修改后的framework-res.apk覆盖system/framework/framework-res.apk此时有可能会有一些进程异常停止。不理,暂时不要重启,马上设置framework-res.apk  的权限。按下图设置重启系统。好了,你可以欣赏你的个性运营商了~ ~~本贴针对原本支持显示“中国移动”的ROM。JD2 JD3测试通过,其他ROM未测试~~


1、什么是root?


  root相当于Windows中的管理员权限,root权限默认是不允许用户使用的,因为用户可能会误操作或者运行到恶意软件而通过root权限破坏手机文件系统。


  2、那么为什么要root呢?


  root过的Nexus One可以做更多的事情,翻wall更方便,运行Ubuntu,刷机等等。


  3、如何看是否成功root了?


  去Android Market找一个Terminal Emulator下载下来,进入Terminal Emulator以后键入su回车,如果命令提示开头从


  备用方法:键入su后回车,接着键入whoami回车,如果显示uid 0则代表root成功


  4、什么是“解锁bootloader”?


  bootloader一旦解锁将不再被保修,但是可以允许你更方便的安装第三方系统


  5、解锁bootloader后的现象是什么?


  开机后屏幕下方会有一个开锁的标志


  6、什么是Recovery?


  直译过来“恢复”,就是一个仅有刷机(和其他辅助刷机的功能)的一个程序,一般情况下刷机都是通过Recovery完成,目前常用的Recovery有Clockwork Recovery和Amon RA,我个人建议使用Amon RA1.8.0.1或以上的版本,操作简单。


  7、什么是Radio?


  负责处理通讯信号的一系列软件,新版的Radio一般能带来更少的电池消耗、更强的信号、更好的通话质量和网络速度。
Android2.2需要4.06以上的radio才可以正常工作,Cyanogen Mod5.0.8虽然不是Android2.2但是也需要4.0.6的Radio才能工作
.

  8、什么是Kernel?


  内核,Android系统基于Linux,Linux的运行就要靠内核来做所有底层的数据交换和调度。新版的Kernel一般能带来系统速度的提升和新功能,还有就是不同的电源管理方案可能节省电池。不是所有的Kernel都能用在所有的系统上,比如Pershot做的Kernel就只能适用于CM和Enomther的系统。


  9、内核电源管理AVS和SVS的区别?


  Nexus One的CPU自身支持一种调整电压的方式,就是根据CPU的运行情况动态调整所需的电压,这种模式就是AVS。但是Nexus One原版的系统并不支持这个功能,因为这个功能并不是经过严格测试的。 目前最常见的AVS内核就是IntersectRaven制作的了,现在AVS内核在大多数Nexus One上是比较稳定的。


  默认的电源管理是SVS,也就是静态电压设置,根据CPU的工作频率跟负载来静态的调节电压。


  一般来讲AVS比SVS更节省电池


  一般刷机的步骤顺序:


  1、解锁Bootloader。


  2、刷第三方Recovery。


  3、通过Recovery,先刷Radio(注意版本,Android2.2系统必须用4.06或以上的Radio,最新版是5.12)。


  4、通过Recovery,刷系统。


  5、(如果系统并不自带Google的软件)刷Google Apps Addon(主要适用于Cyanogen Mod)。


  6、(可选)通过Recovery,刷内核。


  radio、系统、google apps跟内核的顺序一定不要随意调整,否则容易造成系统无法启动的情况。
 

目录

●1、背景知识

●2、boot和recovery映像的文件结构

●3、对映像文件进行解包、编辑、打包的常规方法

●3.1、另一种解包、编辑、打包的方法

●4、将新的映像刷回到手机

●5、解包、编辑、打包为我们带来了什么

●6、本文讲的内容与使用update.zip刷机包不是一码事

 

正文

1、背景知识Android手机的文件系统有许多存储器组成,以下是在adb shell下面的输出:

#cat /proc/mtddev:    size   erasesize  name

mtd0: 00040000 00020000"misc"

mtd1: 00500000 00020000"recovery"

mtd2: 00280000 00020000"boot"

mtd3: 04380000 00020000"system"

mtd4: 04380000 00020000"cache"

mtd5: 04ac0000 00020000"userdata"

 

**************************

注意,不同的手机在上述存储设备的顺序可能会各不相同!一定要检查您的手机,确定在以下的操作中选择正确的设备号(mtdX,这个X的序号一定要检查清楚)。

**************************

在本向导中,我们主要描述对"recovery"和"boot"的存储设备进行操作;"system"存储设备保存了android系统目录的所有数据(在系统启动后会挂载到“system/”目录);“userdata”存储设备将保存了android数据目录中的所有数据(在系统启动后会挂载到“data/”目录,里面是会有很多应用数据以及用户的preference之类的配置数据)。

从上面的输出可以看出来,recovery和boot分区对应着/dev/mtd/mtd1和/dev/mtd/mtd2,在你您开始做任何修改之前一定要做两件事情,第一件事情,一定要先对这两个分区进行备份。

可以使用如下命令进行备份:

# cat /dev/mtd/mtd1 > /sdcard/recovery.img

# cat /dev/mtd/mtd2 > /sdcard/boot.img

(注意added by lxros,只有手机获取了ROOT权限以后才能够执行上述的备份命令)

第二件事情,你您应该把你您最喜欢的update.zip刷机包放置到你您的sd卡的根目录上面。如此一来,即使你您在后续的操作中出了问题,也可以启动到recovery模式进行恢复。

另外一个你您需要知道的重要文件是在android系统目录下的/system/recovery.img,此文件是mtd1存储设备的完全拷贝。这个文件在每次关机的时候,会自动地被写回到mtd1存储设备里面。

这会意味着两个事情:

(1)任何对/dev/mtd/mtd1中数据的直接修改都会在下一次重启手机以后消失。

(2)如果希望对/dev/mtd/mtd1进行修改,最简单的做法是用你您自己的recovery.img替换掉/system/recovery.img。当你您创建自己的update.zip刷机包的时候(特别是在做刷机包的适配的时候),如果你您忘记替换这个/system/recovery.img,这个recovery.img就会在关机的时候被烧写到mtd1里面去或许会变砖。一定要注意这一点!(译者的话,关于这个/system/recovery.img文件,在2.1的android的平台里面并没有找到,或许这个机制已经out了?!或者偶本人对这段话的理解不够深入?!希望明白的朋友不吝斧正)

★★

2、boot和recovery映像的文件结构boot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk内存盘,然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)。

此类文件的定义可以从源代码android-src/system/core/mkbootimg找到一个叫做bootimg.h的文件。(译者的话,原文是一个叫做mkbootimg.h的文件,但从Android 2.1的代码来看,该文件名应该是改为bootimg.h了)。

/*

** +-----------------+

** | boot header     | 1 page

** +-----------------+

** | kernel          | n pages

** +-----------------+

** | ramdisk         | m pages

** +-----------------+

** | second stage    | o pages

** +-----------------+

**

** n = (kernel_size + page_size - 1) / page_size

** m = (ramdisk_size + page_size - 1)/ page_size

** o = (second_size + page_size - 1) / page_size

**

** 0. all entities are page_size aligned in flash

** 1. kernel and ramdisk are required(size != 0)

** 2. second is optional (second_size== 0 -> no second)

** 3. load each element (kernel, ramdisk, second) at

**    the specified physical address (kernel_addr, etc)

** 4. prepare tags at tag_addr.  kernel_args[] is

**    appended to the kernel commandline in the tags.

** 5. r0 = 0, r1 = MACHINE_TYPE, r2 = tags_addr

** 6. if second_size != 0: jump to second_addr

**    else: jump to kernel_addr

*/

 

**************************

ramdisk映像是一个最基础的小型文件系统,它包括了初始化系统所需要的全部核心文件,例如:初始化init进程以及init.rc(可以用于设置很多系统的参数)等文件。如果你您希望了解更多关于此文件的信息可以参考以下网址:

http://git.source./?p=kernel/common.git;a=blob;f=Documentation/filesystems/ramfs-rootfs-initramfs.txt

以下是一个典型的ramdisk中包含的文件列表:

./init.trout.rc

./default.prop

./proc

./dev

./init.rc

./init

./sys

./init.goldfish.rc

./sbin

./sbin/adbd

./system

./data

**************************

recovery映像包含了一些额外的文件,例如一个叫做recovery的二进制程序,以及一些对该程序支持性的资源图片文件(当你您按下home+power组合键的时候就会运行这个recovery程序)。

典型的文件列表如下:

./res

./res/images

./res/images/progress_bar_empty_left_round.bmp

./res/images/icon_firmware_install.bmp

./res/images/indeterminate3.bmp

./res/images/progress_bar_fill.bmp

./res/images/progress_bar_left_round.bmp

./res/images/icon_error.bmp

./res/images/indeterminate1.bmp

./res/images/progress_bar_empty_right_round.bmp

./res/images/icon_firmware_error.bmp

./res/images/progress_bar_right_round.bmp

./res/images/indeterminate4.bmp

./res/images/indeterminate5.bmp

./res/images/indeterminate6.bmp

./res/images/progress_bar_empty.bmp

./res/images/indeterminate2.bmp

./res/images/icon_unpacking.bmp

./res/images/icon_installing.bmp

./sbin/recovery

★★★

3、对映像文件进行解包、编辑、打包的常规方法(注意,下面我给你您介绍的是手工命令行方式进行解包以及重新打包的方法,但是我仍然创建了两个perl脚本,这两个脚本可以让你您的解包和打包工作变得轻松许多。

可以参考本文的附件

unpack-bootimg.zip

http:///files/apps/unpack-bootimg.zip

repack-bootimg.zip

http:///files/apps/repack-bootimg.zip

如果你您很擅长使用16进制编辑器的话,你您可以打开boot.img或者recovery.img,然后跳过开始的2K的头数据,然后寻找一大堆0的数据,在这一堆0的数据后面,紧跟着1F 8B这两个数字(1F 8B是gzip格式的文件的结束标记)。从此文件开始的地方(跳过2K的头),一大堆0后面紧跟着到1F 8B这两个数字为止的全部数据,就是gzip压缩过的linux内核。从1F 8B后面紧跟着的数据一直到文件的结尾包含的全部数据,就是ramdisk内存盘的数据。你您可以把把内核和ramdisk两个文件分别保存下来,在进行分别的修改和处理。我们可以通过un-cpio和un-gzip操作来读取ramdisk文件中的数据,可以使用如下的命令来实现这个目的,以下操作会生成一个目录,直接cd进去就可以看到ramdisk中的数据了:

gunzip -c ../your-ramdisk-file | cpio -i

**************************

此命令可以将ramdisk中的所有的文件解包到当前的工作目录下面,然后就可以对它进行编辑了。当需要重新打包ramdisk的时候,就需要re-cpio然后re-gzip这些数据和目录,可以通过如下命令来实现:(cpio会把所有当前目录下面的文件都打包进去,因此,在进行此步骤之前,请把不需要的文件都清除掉。)

find . | cpio -o -H newc | gzip >../newramdisk.cpio.gz

最后一步就是通过mkbootimg这个工具,把kernel和ramdisk打包在一起,生成一个boot.img:

mkbootimg --cmdline \'no_console_suspend=1 console=null\'--kernel your-kernel-file --ramdisk newramdisk.cpio.gz -o mynewimage.img

**************************

这里的mkbootimg工具会在编译android的源代码的时候会在~/android-src/out/host/linux-x86/bin目录下面自动生成。

**************************

下载地址:http://git.source./?p ... ;a=tree;f=mkbootimg

现在,如果不想背这些复杂的命令或者摆弄那个让人眩晕的16进制编辑器的话,可以尝试使用我编写的用于解包和打包的perl脚本了。希望这些脚本能够节约各位的键盘。

★★★☆

3.1、另一种解包、编辑、打包的方法下载split_bootimg.zip文件,在此zip文件中包含一个perl文件,split_bootimg.pl脚本,该脚本可以读取boot.img头(根据Android源码中的bootimg.h读取)将kernel和ramdisk读取出来,此脚本也会输出内核命令行和板子名字。

http:///files/linux/split_bootimg.zip

 

**************************

(注意,不要使用从/dev/mtd/mtd2直接拷贝出来的boot.img,此映像可能在读取过程遭到损坏。)

下面是一个从TC4-RC28更新中提取出来的boot.img进行解包操作:

% ./split_bootimg.pl boot.imgPage size: 2048 (0x00000800)

Kernel size: 1388548 (0x00153004)

Ramdisk size: 141518 (0x000228ce)

Second size: 0 (0x00000000)

Board name:

Command line: no_console_suspend=1Writing boot.img-kernel ... complete.Writing boot.img-ramdisk.gz ... complete.

**************************

解包ramdisk的命令如下:

% mkdir ramdisk

% cd ramdisk

% gzip -dc ../boot.img-ramdisk.gz | cpio -i

% cd ..解码完毕后,就可以修改了(例如,在default.prop设置ro.secure=0等等)使用mkbootfs工具(mkbootfs工具是编译完毕Android源代码以后,就会在~/android-src/out/host/linux-x86/bin自动生成)来重新创建ramdisk,可以使用如下命令来操作:

% mkbootfs ./ramdisk | gzip > ramdisk-new.gz

使用mkbootimg来重新创建boot.img,mkbootimg也可以在~/android-src/out/host/linux-x86/bin目录中可以找到:

% mkbootimg --cmdline \'no_console_suspend=1 console=null\'--kernel boot.img-kernel --ramdisk ramdisk-new.gz -o boot-new.img

(注意:console=null的命令行选现是从TC4-RC30的boot.img引入的,用以去掉root shell)

★★★★

4、将新的映像刷回到手机可以将recovery.img拷贝到/system目录下面,然后重新启动手机,让手机自动为你您刷写到mtd里面(工作原理在上面已经提过了)。对于boot.img可以通过将其拷贝到sd卡的根目录,然后通过手机内的刷写工具将此映像写入到手机中。例如,使用adb工具(Android SDK中的一个工具)将boot.img拷贝到手机的sd卡的根目录:adb push ./mynewimage.img /sdcard然后通过adb shell登录手机(获取过ROOT的)的shell交互模式,利用命令行进行交互:

# cat /dev/zero > /dev/mtd/mtd2   write: No space left on device [thisis ok, you can ignore]

# flash_image boot /sdcard/mynewimage.img

然后重启手机。如果手机能够正常启动,那么祝贺你您,您的修改和替换已经成功了;如果不能够顺利启动,则需要重新启动进入recovery模式,并且使用update.zip来恢复。

★★★★★

5、解包、编辑、打包为我们带来了什么可以修改手机开机启动时候的画面,具体的操作的地址为:

http://forum./showthread.php?t=443431

★★★★★★

6、本文讲的内容与使用update.zip刷机包不是一码事您可以很容易地在其他论坛上看到关于如何自制update.zip刷机包的方法,也可以下载到很多在网络上共享的自制刷机包。例如:近期的多数刷机包都来自对rc30包的修改和调整。在update.zip刷机包里面会包括新的boot.img,recovery.img以及整个system/目录下的若干文件的替换和更新。如果您希望自己自制boot.img以及recovery.img,建议您选取相对较新的更新和版本。(选用较老的映像的话,或许会出现兼容性问题)。

刷机前必知:
1、什么是root?
root相当于Windows中的管理员权限,root权限默认是不允许用户使用的,因为用户可能会误操作或者运行到恶意软件而通过root权限破坏手机文件系统。
2、那么为什么要root呢?
root过的Nexus One可以做更多的事情,翻wall更方便,运行Ubuntu,刷机等等。
3、如何看是否成功root了?
去Android Market找一个Terminal Emulator下载下来,进入Terminal Emulator以后键入su回车,如果命令提示开头从
备用方法:键入su后回车,接着键入whoami回车,如果显示uid 0则代表root成功
4、什么是“解锁bootloader”?
bootloader一旦解锁将不再被保修,但是可以允许你更方便的安装第三方系统
5、解锁bootloader后的现象是什么?
开机后屏幕下方会有一个开锁的标志
6、什么是Recovery?
直译过来“恢复”,就是一个仅有刷机(和其他辅助刷机的功能)的一个程序,一般情况下刷机都是通过Recovery完成,目前常用的Recovery有Clockwork Recovery和Amon RA,我个人建议使用Amon RA1.8.0.1或以上的版本,操作简单。
7、什么是Radio?
负责处理通讯信号的一系列软件,新版的Radio一般能带来更少的电池消耗、更强的信号、更好的通话质量和网络速度。
Android2.2需要4.06以上的radio才可以正常工作,Cyanogen Mod5.0.8虽然不是Android2.2但是也需要4.0.6的Radio才能工作
 
☆★刷机前准备工作★☆
HTC系列:金卡,刷机包,进入Recovery模式的底包;其他系列:刷机包(ROM),进入Recovery模式的底包。

┟┉┉刷机注意事项┉┉┦
刷机有很多种刷发,一种是用电脑连接数据线刷机,一种是直接用手机刷机(直刷)。支刷必须SPL解锁才可以。
刷机之前先备份,如果有电脑先把内存卡用读卡器连接电脑把卡里德东西全部复制到电脑任意你找到的地方。没有电脑只好用手机了,下载个钛备份,记住一定要放到手机内存哦
最后是最重要的,无论哪种刷机法刷机都必须要保证在电池电源充足的情况下进行,否则刷机途中断电你就中奖了,手机“变砖”不再是神话
┅┅┅HTC系列刷机┅┅┅
1首先是制作金卡。
金卡的原理:
很多朋友第一时间下载了官方的Sense,然后就开始升级,不是台版的机器都会提示客户ID错误,这是因为更新程序会检测你机器的shippment,也就是销售地区,如果和升级程序不一致,就会中断升级,造成升级失败。
而金卡实际上就是在一张普通的TF卡上写入一些引导信息,使得升级程序,或者说你本机SPL的检测跳过对客户ID的检查,从而达到“天下大一统”,使非官方版本的机器顺利升级。
制作金卡所需的TF卡,最好要大品牌的,有点国际影响的正品。通过金卡镜像制作网站的作者所讲,他是收集了TF卡序列号信息搞的那个网站,所以你的TF卡一定要好一点的。推荐Sandisk和金士顿的,创见的也可以。
制作金卡所用的CID,只和卡有关,和机器的版本无关,查询CID时你手机内是哪个TF卡,做金卡的时候就要用哪张TF,CID是和卡对应的!!!
金卡制作教程
2.要刷第三方ROM首先检查自己的SPL是否解锁。
点击 “返回键+开机键”,看看第一行 是不是显示为OFF 如果是表明解锁,如果是ON表示未解锁
3.由于解锁的方式不同,如果想解锁的请内线我,说清机型,我会给你提供教程。
4.下载ROM,这个如果需要也可以内线我。
5.开始刷机
1、首先把刷机包文件重命名为update.zip大家一定要注意后缀为.zip
2、把刷机文件直接复制到SD卡根目录。
3、关机——按住【房子】+【电源】开机,开机后不要放开【房子】按钮直到看到RECOVERY刷机界面
各个进去刷机模式的方法不一样.
4、进入恢复模式后就是开始刷机了,无论什么机型都是那几部操作通用刷机教程,不要看文字,只看图,一步步来
第二个刷机图文┋最简单的文字刷机
5、到此刷机完毕,开机后进入设置→关于手机,看看是否刷机成功吧。
 

有句古话叫常在河边走,难免会翻船。对于经常刷机的Android刷友来说,难免会碰到刷机失败损坏recovery程序乃至手机无法启动的情况,也就是传说中的手机变砖块。不过刷机失败手机变砖是小事而已,略施小计就可以让你的Android手机重新复活,方法如下:
1. 在PC 上安装配置Android SDK 刷机失败后手机变砖无法在手机上完成操作,智能借助Android SDK工具,所以你必须在操作的PC上下载并安装Android SDK程序,程序下载地址和安装配置方法见Android SDK官网 http://developer./sdk/

2. 安装Android 手机USB 驱动程序 安装完Android SDK后就可以把手机通过USB线缆连接至PC,开启手机电源后PC会提示安装设备驱动程序,不要让系统自动查找驱动程序安装,选择自定义驱动程序位置,因为已经安装了Android SDK,驱动程序的位置默认为Android SDK的安装目录下的usb_driver子目录,选择从这个目录安装驱动程序。

3. 下载一个可用Recovery 程序 变砖的Android手机能否复活的关键就是Recovery程序,因为recovery程序意味着你可以再次刷新的ROM,相当于给PC重新安装操作系统。Android平台有很多可用的recovery程序,推荐使用最常见的Clock Recovery程序,注意recovery程序针对不同手机型号有不同版本的程序,下载时注意和手机型号匹配。把下载的recovery程序放在某一目录备用,比如c:\\recovery-RA-Magic-v2.3.1.img
4. 关键步骤:重新给变砖的手机安装recovery 程序 在PC上打开命令提示符(Windows系统,开始,运行,输入cmd回车),输入 #adb devices 回车,如果返回一串序列号说明手机已经正常连接。在命令提示符使用cd命令切换到recovery程序所在的目录。然后输入下面的命令
# adb reboot bootloader 回车后手机应该会进入fastboot模式,然后再执行下面的命令把recovery程序安装到手机上
#fastboot flash recovery-RA-Magic-v2.3.1.img 回车后如果看到下面的提示就说明recovery程序已经成功安装。
fastboot flash recovery recovery-RA-Magic-v2.3.1.img
sending ‘recovery’ (4594 KB)… OKAY
writing ‘recovery’… OKAY
拔掉手机USB连接线,关机,重新按指定键看看是否可以重新进入recovery模式了,到这一部手机已经成功复活了,现在可以重新刷机给手机再安装一个操作系统了。
 
 

 

 

 

 

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多