ThisDay
V2EX  ›  Android

关于 recovery 到底是个什么系统?求科普

  •  
  •   ThisDay · Jun 14, 2015 via Android · 15366 views
    This topic created in 4170 days ago, the information mentioned may be changed or developed.
    我只知道它能驱动一部分手机硬件,可以运行shell命令。然后呢它到底是个什么系统?
    18 replies  •  2015-06-25 16:15:36 +08:00
    nealfeng
    nealfeng
    Jun 14, 2015
    1
    linux
    icedx
    icedx
    Jun 14, 2015
    2
    Recovery 就是一个Linux 内核
    只是被叫做Recovery 的
    在层面上是与内核同等的
    只不过内核在运行末期会加载Java 虚拟机 呈现出用户界面
    Recovery 则是执行特定命令 完成对系统的更新
    wy315700
    wy315700
    Jun 14, 2015
    3
    类似于Windows里的PE环境,
    ThisDay
    ThisDay
    OP
    Jun 14, 2015 via Android
    4
    @wy315700 跟PE差远了吧 。。PE就是个在移动介质上的win系统
    allenforrest
    allenforrest
    Jun 14, 2015 via iPhone
    5
    可以简单理解为一个二级Bootloader
    ThisDay
    ThisDay
    OP
    Jun 14, 2015 via Android
    6
    @icedx recovery有必要加载Java虚拟机吗?感觉能驱动起来屏幕然后能执行shell脚本就行了。并且一般recovery的ing一共也才几兆大小
    ThisDay
    ThisDay
    OP
    Jun 14, 2015 via Android
    7
    @allenforrest 照你这么理解,那安卓系统也是个二级的bl,我认为,recovery还有flash已经安装系统应该是平行关系的三个系统
    wy315700
    wy315700
    Jun 14, 2015
    8
    @leeyuzhe 一样的,PE也可以安装在硬盘里,本质上是一个轻量级的操作系统而已
    billlee
    billlee
    Jun 14, 2015
    9
    大概是 recovery 和 Android 的 init 进程不同吧。
    xuhaoyangx
    xuhaoyangx
    Jun 14, 2015
    10
    就是一个linux的init的玩意,可以理解成轻量级linux系统
    icedx
    icedx
    Jun 14, 2015
    11
    @leeyuzhe 我没说Recovery 会加载Java 虚拟机啊...
    yaoye0o
    yaoye0o
    Jun 14, 2015 via Android
    12
    recovery还有这样的意义啊。我只知道在rec模式能刷机
    VYSE
    VYSE
    Jun 14, 2015❤️1
    14
    @billlee 内核也不一样,recovery是另外一个mini系统,只能驱动部分外设,mount system进行刷机
    ThisDay
    ThisDay
    OP
    Jun 15, 2015
    15
    @HackerOO7 recovery是一个受限启动模式,独立于您的Android操作系统。就这一句有用的,我想知道它的原理,这页面全是简介与使用方法、不过还是谢谢呢
    @VYSE 具体需要驱动哪些硬件,cpu+内存+屏幕(显示)就够了吧
    @billlee 应该是俩独立的系统,而不是一个系统里俩不同的init
    VYSE
    VYSE
    Jun 15, 2015 via Android
    16
    @leeyuzhe 触控硬盘usb vibrator都可以,取决于rec作者定制的内核
    acess
    acess
    Jun 24, 2015 via Android❤️1
    17
    我记得recovery启动需要的文件都在recovery分区里面(或者说recovery.img),运行时被加载到内存盘里。(其实和Android很像,只是Android又继续启动了很多服务,启动了app_process等)
    这一点跟WinPE很像。
    /init程序应该和Android相同或者相似,都可以解释执行/init.rc(Linux也有init程序,好像叫做sysvinit,但我记得一般用的都基于shell,systemd就是用来取代传统init的)。
    一般看到的那个可以用音量键和电源键等操作的,带菜单的recovery界面就是一个Linux可执行文件搞定的(文件名就是recovery)

    我记得recovery分区和boot分区差不多,只是一个开机默认启动,一个按组合键启动,如果给recovery刷了boot.img就可以启动Android。不同机器可能不同吧,我的机器的EMMC分区表就是GPT……


    有个工具mkboot可以解压新版Android的boot.img、recovery.img,这些镜像文件貌似是在编译Android时编译出的一个小工具mkbootimg创建的。ubuntu上也有包abootimg可用。我觉得解压看看就大概知道里面有什么了。换内核时可以用这些工具。新版内核还有dtb文件,mkboot可以处理。
    ThisDay
    ThisDay
    OP
    Jun 25, 2015 via Android
    18
    @acess 感谢,写得这么详细
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   951 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 19:53 · PVG 03:53 · LAX 11:53 · JFK 14:53
    ♥ Do have faith in what you're doing.