首页 热点资讯 义务教育 高等教育 出国留学 考研考公

如何修改Android系统的Ramdisk以及boot镜像

发布网友 发布时间:2022-04-22 10:57

我来回答

2个回答

热心网友 时间:2023-10-11 16:39

  如果经常看我blog的朋友,应该记得前年我曾经写过一些关于Android的文章,其中一篇是对Android启动过程的进一步研究。现在要做的事情呢,就是对两年前这篇文章的一个实践了:)当然,当年的文章只能作为参考,因为那是针对模拟器的,Ramdisk.img就在Tools工具下。而现在,我们是针对真机提取Ramdisk,修改相关文件,再将其放回去,这样以后Android设备启动时,加载的都是已经修改过的Ramdisk镜像了。我们不会去直接用Tools目录下的Ramdisk,因为很可能你的Boot镜像是已经修改过的,你只不过想在其基础上进行进一步修改而已。

  1提取

  好,进入正题,本文主要以修改boot.img中的ramdisk为例,但是其他的修改原理都是相通的。

  首先,我们要把boot镜像从设备中提取出来,方法就是在上一篇文章中谈到的,先去adb shell中

  cat /dev/mtd/mtd2 > /sdcard/root.img

  然后

  adb pull /sdcard/root.img ./

  这样就把root.img拷贝到本地目录下了。好,接下来的步骤,可要看仔细了,错了一点,就完全不对路了。

  我们已经介绍过,boot.img的组成结构是

  +—————–+
  | boot header | 1 page
  +—————–+
  | kernel | n pages
  +—————–+
  | ramdisk | m pages
  +—————–+
  | second stage | o pages
  +—————–+

  那我们要做的就是把这几个部分分别分离出来。具体的分离原理并不是很难,就是特别麻烦。所以建议大家都用现成的脚本来做。点击unpack下载分离的脚本,点击repack下载重新打包的脚本。

  好,我们现在先进行镜像分离。用命令

  ./split_bootimg.pl boot.img

  成功执行后,可以得到两个文件,一个是boot.img-kernel,另一个是boot.img-ramdisk.gz。我们这里以修改ramdisk为例,所以将其解包

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

  解包之前新建一个文件夹放解包出来的文件,然后进入这个文件夹执行gzip和cpio的命令。至于原理,同上,请参考两年前的这篇文章。

  2 生成新img

  好,接下来你就可以做你想做的任何修改了,包括init.rc之类的进程方面的修改,或者丢一个什么东西进去,或者其他。只需要确保你做的修改没有问题就行。修改完成后,自然就是要将其重新还原成img包了,这时repack脚本就派上用场。用命令

  repack-bootimg.pl boot-new.img

  就可以生成新的boot-new.img了。

  3 刷入新img

  生成了新的img后,我们如何在系统上应用我们的新boot.img呢?首先,把img文件放到sdcard上去

  adb push ./boot_new.img /sdcard

  然后执行这两个操作

  # cat /dev/zero > /dev/mtd/mtd2
  # flash_image boot /sdcard/mynewimage.img

  执行第一个操作时,可能会提示你

  write: No space left on device

  这个信息没关系,不用管它。两个命令都执行后,最后adb shell reboot即可。如果重启顺利,那么恭喜你,你的新镜像刷成功了,此时的ramdisk自然也是新的ramdisk了。

  4 刷boot镜像有问题?

  其实到这里,才是俺想发挥的地方。上面介绍的所有步骤,有两个特点

  4.1 国外友人上都介绍过
  4.2 G1上成功率最高

  所以如果你是用Magic或者Hero,有一定几率会出线重启之后,画面就停留在 HTC 或者Android那里,不会进入系统。此时你必须拿出电池重新开机,按照我这篇文章所讲的方法刷一次recovery image,才能正常进入系统。如果你真的遇到这种情况,就说明上面介绍的这个方法不适合你,那么,还有没有别的方法让系统boot我们自己的boot image呢?

  当然有。在这篇文章中,我们介绍了有很多第三方ROM供我们刷机,从而达到更多功能或者获得root权限的目的。其中,我们介绍了里面有一个update.zip的东西,如果亲自刷过机的朋友就知道这是什么文件。我同时也介绍了,update.zip里面就是要添加到你的system中的各种工具,其中就包括了boot.img。也就是说,我们可以自己做一个属于自己的ROM,其中包括我们自己的boot.img。

热心网友 时间:2023-10-11 16:40

用RE

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com