【Android】 Generic Boot Partition

概览

在 Android 12 中,通用boot映像称为 通用内核映像 (GKI),包含通用 ramdisk 和 GKI 内核。

对于搭载 Android 13 的设备,通用 ramdisk 将从boot.img中删除并放置在单独的init_boot.img中。此更改使boot.img仅包含 GKI 内核。

Android 12中的通用内核映像(Generic Kernel Image,GKI):
    在Android 12中,通用内核映像包含通用ramdisk和GKI内核。

Android 13中的变化:
    Android 13中,通用ramdisk从启动映像中移除,并放置在一个独立的init_boot映像中。这使得启动映像仅包含GKI内核。
    对于继续使用Android 12或更早内核版本的设备,通用ramdisk仍保持在原来的位置,不需要新的init_boot映像。

构建通用ramdisk的要求:
    通用ramdisk应该仅包含第一阶段初始化和一个包含时间戳信息的属性文件。
    为了构建通用ramdisk,需要将供应商特定的资源从ramdisk中移出。

对没有专用recovery分区的设备的影响:
    没有专用恢复分区的设备上,所有恢复相关的部分从通用ramdisk移到vendor_boot ramdisk。

对使用专用recovery分区的设备的影响:
    使用专用恢复分区的设备不需要更改恢复ramdisk,因为恢复ramdisk是自包含的。
通用ramdisk是Android系统中的一个组件,它是一个包含特定启动所需文件和脚本的ramdisk(RAM磁盘)。这个ramdisk在启动过程中被加载到内存中,以提供系统初始化所需的文件系统、设备节点、二进制文件和其他必要资源。

在Android中,ramdisk通常包含两个主要部分:

    第一阶段初始化(init): 这是Android系统启动时运行的第一个用户空间进程。它负责执行设备初始化和启动后台服务等任务。

    属性文件: 包含有关设备属性和配置信息的文件,例如硬件特性、制造商信息等。

通用ramdisk的目的是提供一个通用的启动环境,以确保Android系统能够在各种设备上正常启动。这种通用性有助于简化Android的开发和维护,使其更容易移植到不同的硬件平台上。

关于init_boot.img,根据提供的信息,Android 13中的变化包括将通用ramdisk从启动映像中移除,并将其放置在一个独立的init_boot映像中。这样的设计可能是为了更好地模块化系统,使得通用ramdisk可以在不同设备上共享,而不需要嵌入在启动映像中。init_boot.img 可能包含通用ramdisk和其他启动相关的文件,为系统提供更灵活的启动配置。

架构

下图说明了运行 Android 12 及更高版本的设备的架构。init_boot使用 Android 13 启动的设备有一个包含通用 ramdisk 的新 映像。从 Android 12 升级到 Android 13 的设备使用与 Android 12 相同的架构。

随 Android 13 一起启动,无专用recovery

在这里插入图片描述
Figure 1. Devices launching or upgrading to Android 13, with GKI, no dedicated recovery

随 Android 13 一起启动,专用和 A / B recovery(专用 ramdisk)

在这里插入图片描述
Figure 2. Devices launching or upgrading to Android 13, with GKI, dedicated and A/B recovery

如果设备有 recovery_a 和 recovery_b 分区,请参考此图。

随 Android 13 一起启动,专用和 non-A / B recovery(专用 ramdisk)

在这里插入图片描述
Figure 3. Devices launching or upgrading to Android 13, with GKI, dedicated and non-A/B recovery

如果设备有一个名为 recovery 但没有插槽后缀的分区,请参考此图。

启动或升级到Android 12,没有专用recovery

在这里插入图片描述
Figure 4. Devices launching or upgrading to Android 12, with GKI, no dedicated recovery

启动或升级到Android 12,专用和A/B recovery(专用Ramdisk)

在这里插入图片描述
Figure 5. Devices launching or upgrading to Android 12, with GKI, dedicated and A/B recovery

如果设备有 recovery_a 和 recovery_b 分区,请参考此图。

启动或升级到Android 12,专用和非A/B recovery(专用Ramdisk)

在这里插入图片描述
Figure 6. Devices launching or upgrading to Android 12, with GKI, dedicated and non-A/B recovery

如果设备有一个名为 recovery 但没有插槽后缀的分区,请参考此图。

升级到Android 12, recovery-as-boot (recovery-as-ramdisk)

在这里插入图片描述

Figure 7. Devices upgrading to Android 12, no GKI, recovery-as-boot

升级到Android 12,专用recovery(专用ramdisk)

在这里插入图片描述
Figure 8. Devices upgrading to Android 12, no GKI, dedicated recovery

Boot images contents

在这里插入图片描述
在这里插入图片描述

通用ramdisk图像内容

通用ramdisk包含以下组件:

  • init
  • Added system/etc/ramdisk/build.prop
  • ro.PRODUCT.bootimg.* build props
  • Empty directories for mount points: debug_ramdisk/, mnt/, dev/, sys/, proc/, metadata/
  • first_stage_ramdisk/
    – Duplicated empty directories for mount points: debug_ramdisk/, mnt/, dev/, sys/, proc/, metadata/

更详细步骤请参考:

https://source.android.com/docs/core/architecture/partitions/generic-boot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值