完全升级OTA包的安装流程(上)

本文详细介绍了Android设备在Recovery模式下,如何启动和执行完全升级OTA包的过程。从设置环境变量、建立目录,到启动recovery主程序,再到解析并执行升级脚本,每一步都至关重要。文中还提到了关键函数如`init.rc`、`recovery`主程序、`install_package`和`update_binary`的作用,为理解Android系统的OTA升级提供了深入见解。
摘要由CSDN通过智能技术生成
完全升级OTA包的安装流程(上)
从bootloader 进入Recovery 模式后,首先也是运行Linux内核,该内核跟普通模式没有区别(减轻了BSP开发者的任务)。区别从执行文件系统开始。 Recovery 模式的细节就隐藏在其根文件系统中。
下面,我们就看看进入Recovery 根文件系统都干些啥。
init.rc
    和正常启动一样,内核进入文件系统会执行/init, init 的配置文件就是 /init.rc, 前面文章讲过,这个文件来自:bootable/recovery/etc/init.rc,下面,我们看看它的内容。
  on init
    export PATH /sbin
    export ANDROID_ROOT /system
    export ANDROID_DATA /data
    export EXTERNAL_STORAGE /sdcard

    symlink /system/etc /etc

    mkdir /sdcard
    mkdir /system
    mkdir /data
    mkdir /cache
mount /tmp /tmp tmpfs

on boot

service recovery /sbin/recovery
service adbd /sbin/adbd recovery
    disabled
    socket adbd stream 660 system system

# Always start adbd on userdebug and eng builds
on property:ro.debuggable=1
    write /sys/class/android_usb/android0/enable 1
    start adbd
可以看到,它很非常简单:
1)   设置几个环境变量。备用。
2)   建立 etc 链接。
3)   造几个目录。备用。
4)   Mount /tmp 目录为内存文件系统 tmpfs,后面会用到。
5)   Trival 设置,不必关心。
6)   启动 recovery主程序。
7)   如果是eng模式(此时persist.service.adb.enable),启动adb
当然,init主程序还会装载属性配置文件 /default.prop, 它包含了很多系统属性设置,比如,ro.build.*, 等等。
很明显,这里最重要的就是recovery主程序,下面,我们分析它。
先看一段注释
recovery 主程序
int
main(int argc, char **argv)
{
     time_t start = time(NULL);
     // If these fail, there's not really anywhere to complain...
     freopen(TEMPORARY_LOG_FILE, "a", stdout); setbuf(stdout, NULL);
     freopen(TEMPORARY_LOG_FILE, "a", stderr); setbuf
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值