[技术讨论] 安卓 boot&开启adb超级权限

1#
发表于 2015-3-1 20:49:28 | 查看: 5134| 回复: 9
本帖最后由 Air 于 2016-9-10 12:27 编辑

所需工具:ADB工具套件、linux系统或安装虚拟机 我用的是Ubuntu

前提条件:装好手机驱动
测试手机:红米1


作用:即使手机没有root权限,也可直接调用adb 调试模式 此功能拥有root权限,可用来管理系统文件。 也就是我们完全可以手动打造纯净版root,免去使用他人root工具带来的安全隐患。



一、BOOT简单介绍
      离上次的安卓开机动画替换教程已经有一段时间了,帖子中提到的boot就借这个机会,把开机第一屏和boot相关的知识一并说下,随便把这个坑填了。那么开机第一屏和boot有什么关系呢,如果你有成功替换了开机动画,你会发现开机过程中,第一个出现的画面并非是开机动画,因为还有一个叫“开机第一屏”,他是存在boot内存中,物理数据所在logo.img里面。

*至于为什么会有开机第一屏其实是一个系统的启动顺序,好比xp中你先看到bios画面再到xp载入等待画面,boot同等bios,logo.img同等载入画面。
*boot.img的结构,我把它简单的分为两部分,并不是什么专业的解释只是根据解包后的文件来做简单分类,说得太过专业只会起反作用。

::boot.img的结构
1、内核         kernel      *同等bios 可以修改参数 来超频手机,同时移植ROM包也涉及内核修改替换。
2、虚拟内存  ramdisk    *包含一些常用的系统管理级软件,驱动和一些简单图片动画(开机第一屏),反正是最底层的东西。


二、BOOT解包,上文简单化介绍boot,接下来入正题。长话短说、跟着步骤走就得了。
1、下载官方刷机包,再次强调一定要官方,为了安全稳定,boot不要乱刷。虽然也有替换内核之类的东西,这个一般移植包的时候才会用到。

2、解开刷机包,如果你的刷机包是zip只需用自带rar解压,如果是其他比较冷门的机型他的刷机包也许是自定的格式,需要用官方的工具解包,或另找解包工具。

3、解包后提取包中的boot.img。 也可通过adb或软件 备份得到(此法可略过第一步)

4、把boot.img放入linux虚拟机中进行解包,解包工具我会在最后放上,把工具和boot.img一同放进linux虚拟机中,放到同一目录下,打开终端 快捷键ctr+alt+t,输入以下命令,如果你不是以root用户登录linux,那么需要输入sudo获取临时root权限。建议还是修改一下系统配置以root用户登录方便操作。
  1. cd 你的工作目录                               //进入工作目录 这个目录包含工具和boot.img。
  2. ./split_bootimg.pl boot.img                   //解包boot.img  会得到两个文件 分别是boot.img-ramdisk.gz 和boot.img-kernel
  3. mkdir -p boot                                 //创建boot文件夹
  4. cd boot                                       //进入boot文件夹
  5. gzip -dc ../boot.img-ramdisk.gz | cpio -i     //解包boot.img-ramdisk.gz  
复制代码
*注:如果解包错误用十六进制工具打开“boot.img-ramdisk.gz”删除前512字节,删除之前先新建一个文件把前512字节保存起来,打包的时候要恢复这512字节特征。

下面为图文流程
1.解包后得到ramdisk和kernel

2.用自带双击打开压缩包测试是否添加了标识。

2.如打开错误需用十六进制工具删除前面512字节标识,在工具下显示十六进制 即200

3.删除标识后的包能正常打开。

4.ramdisk解包后的目录文件


三.修改default.prop开启ADB超级权限所有机型都大同小异 主要找到secure和debug字样进行修改。
ro.secure=0          //关闭安全锁
ro.adb.secure=0    //同上
ro.debuggable=1   //开启调试模式详细可参考开发版中的设置。

*注:修改的时候建议把他复制一份到其他目录,然后双击打开,修改完毕后把他剪切或复制到源目录进行替换。 至于为什么要这样做,我曾经因为直接修改进行打包的时候发现多出了一个备份文件从而导致刷boot失败,这个备份文件估计是linux自动生成的 而且是隐藏属性的,所以最好用替换法。

6.打包ramdisk & boot.img

  1. cd ..                                                  //返回上级目录
  2. ./mkbootfs ./boot | gzip > ./boot-ramdisk-new.gz       //打包boot目录生成boot-ramdisk-new.gz文件 还原gz的前512字节特征
复制代码
*注:打包boot.img的时候记得把之前ramdisk保存下来的512字节还原。
问:--base 0x10000000 --pagesize 2048 的值怎样来的?

  1. unpackbootimg -i boot.img -o ./boot      //使用unpackbootimg解包记下“BOARD_KERNEL_BASE”和“BOARD_PAGE_SIZE”的值
复制代码

7.刷写boot.img

boot.img已经修改打包好了,最后只需把他刷进手机即可,前提安装好驱动不然无法使用fastboot命令。
手机进入“bootloader”即工程模式。机型不同进入方法也不同。我的是红米,进入方法是 关机后 按住音量键减再按住开机键。然后选择”bootloader“或使用ADB命令进入。

  1. adb reboot bootloade            //重启到bootloade
  2. fastboot reboot-bootloader      //同上 这个是在工程模式下的重启到工程模式 的命令。如果能使用这个命令表示当前已经处于工程模式。
复制代码
*注:某些机子无法使用adb命令进入工程模式,包括我的红米1,所以我一般是手动进入。

8.刷入boot.img,进入工程模式后输入以下命令即可,如果出现无限重启表示boot.img制作出了问题,这时可用原版的boot.img重新刷入即可解决问题。
  1. fastboot flash boot boot-new.img      //工程模式刷入boot-new.img
  2. fastboot reboot                       //重启系统
复制代码
工具下载:
http://pan.baidu.com/s/1bo2NUI7
makebootimg.rar 为linux下的工具windows用不了。



以上为我对boot的全部认识,简单的介绍了boot以及打包解包和刷入。
字码已经太多了,我看开机第一屏需要留到下次再说了,这个坑无法填完...







更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1星币 +30 宝石 +3 收起 理由
幻忆叶 + 30 + 3 好东西!

查看全部评分

1
回复

使用道具 举报

THF灵乌路 空 - 用于纪念论坛的前身 THF东方幻梦想的特殊勋章1周年纪念勋章 - 论坛1岁纪念勋章次元守护者 - 对小镇做出巨大贡献的小伙伴才可以拥有的勋章(medal of supporter)
2#
发表于 2015-3-1 20:51:05
圍觀絕版叔~
番長(问君能有几多愁?恰似一部新番没看头。)
回复

使用道具 举报

3#
发表于 2015-3-1 20:52:23

流光好久不见!
回复

使用道具 举报

金刚 - 舰队collection
4#
发表于 2015-3-2 03:25:10
本帖最后由 kami1217 于 2015-3-2 03:55 编辑

我记得好像可以用一个叫mkbootimg来生成boot.img,但貌似这是好多年前看到的东西了,不知道还管不管用
我找到source code:https://android.googlesource.com/platform/system/core/+/master/mkbootimg/
core-master-mkbootimg.tar.gz
回复

使用道具 举报

金刚 - 舰队collection
5#
发表于 2015-3-2 03:32:33
我就说我回复的帖子不见了,原来是楼主用的stack楼层啊
回复

使用道具 举报

金刚 - 舰队collection
6#
发表于 2015-3-2 04:51:12
本帖最后由 kami1217 于 2015-3-2 04:59 编辑

楼主光给命令,不给code,顺便把用来分解的split_bootimg.pl找到了:
split_bootimg.zip
由于这个是用骆驼写的,所以得确保你的linux已经安装perl,貌似ubuntu是默认安装的。如果没有,package里面也有
  1. # sudo apt-get install perl
复制代码
下载地址:https://www.perl.org/get.html
去查了下,perl排名11位,比matlab还后面,很少看到.pl的程序。


回复

使用道具 举报

7#
发表于 2015-3-2 11:53:07
kami1217 发表于 2015-3-2 04:51
楼主光给命令,不给code,顺便把用来分解的split_bootimg.pl找到了:

由于这个是用骆驼写的,所以得确保你 ...

心急吃不着热豆腐
回复

使用道具 举报

8#
发表于 2015-4-19 05:26:34
神奇的样子支持
回复

使用道具 举报

9#
发表于 2015-5-24 22:38:21
好复杂
回复

使用道具 举报

11#
发表于 2016-2-16 14:15:06

火钳刘明_(:зゝ∠)_
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则