该系列文章总纲链接:专题分纲目录 Android系统基础。
1 常见镜像解读
这里主要针对刷机过程中经常遇到的分区进行解读和说明,包括:bootloader镜像、boot.img、ramdisk.img、recovery.img、cache.img、userdata.img、splash.img、radio.img、system.img、vendor.img、dtbo.img、vbmeta.img,具体如下:
- Bootloader(引导加载程序)镜像是指存储在 Android 设备上的用于引导系统启动的程序。它位于设备的非易失性存储器(如闪存)中,是设备启动过程中的第一个被执行的代码。Bootloader 的主要功能是加载操作系统内核、初始化硬件设备、设置内存环境,并在启动过程中处理引导参数和配置。Bootloader 的工作是在设备上电后立即执行的,它负责引导并启动操作系统。Android系统的Bootloader主要负责加载和引导 Android 系统的核心组件,如内核和启动映像(boot image)。
- boot.img,启动映像是一个包含了启动所需文件的压缩文件,它在设备启动时被加载到内存中,并由引导加载程序(Bootloader)负责解压和执行。启动映像主要包含以下几个重要组件:内核(Kernel):启动映像包含了 Linux 内核,它是操作系统的核心部分,控制着设备的硬件操作、内存管理、进程调度等、RAM 磁盘(RAM Disk):启动映像可能包含了一个临时的文件系统,用于存储启动过程中所需的文件和脚本。这部分内容也可以单独打包成 ramdisk.img、命令行参数:启动映像包含了传递给内核的命令行参数,这些参数可以影响系统的启动行为和配置、其他元数据:启动映像可能包含一些元数据,如校验和、签名和版本信息等,用于验证和识别启动映像的完整性和版本。boot.img 的目的是在设备启动时提供必要的文件和配置,以启动 Android 系统。它被引导加载程序加载到内存中,并通过执行内核来初始化系统和启动系统服务。启动映像的正确配置和处理对于设备的正常启动和运行至关重要。
- ramdisk.img 是Android系统中的一个镜像文件,它包含了用于启动过程的 RAM 磁盘(RAM Disk)的内容。RAM 磁盘是一个临时的文件系统,它位于内存中并用于存储启动过程中所需的关键文件和脚本。当设备启动时,内核会将 ramdisk.img 中的内容加载到内存中,并将其挂载为根文件系统(root filesystem)。ramdisk.img 包含了启动过程中所需的文件和目录,例如:init.rc:一个重要的启动脚本,定义了系统启动过程中的各个阶段和操作、fstab:文件系统表,定义了设备中各个分区的挂载点和属性、default.prop:系统属性配置文件,包含了一些系统配置参数和属性、sepolicy:SELinux 策略文件,定义了安全策略和权限控制规则。此外,还可能包含其他启动所需的二进制文件、库文件和资源文件等。ramdisk.img 的目的是在启动过程中提供必要的文件和脚本,以确保系统能够正确初始化和运行。它在设备启动时被加载到内存中,作为临时的根文件系统,提供了启动过程中所需的关键功能和配置。
- recovery.img:该镜像文件包含了Android系统的恢复模式(Recovery Mode)。恢复模式是一个独立的系统环境,用于设备的修复、刷机、备份和恢复等操作。
- cache.img:该镜像文件包含了设备的缓存分区。缓存分区用于存储应用程序的临时文件、系统缓存和其他临时数据。
- userdata.img:该镜像文件包含了设备的用户数据分区。用户数据分区用于存储用户的应用程序、设置、多媒体文件、个人数据等。
- splash.img:该镜像文件包含了设备的开机动画(Boot Animation)。
- radio.img:该镜像文件包含了设备的无线电固件(Radio Firmware)。它控制设备的无线通信功能,如移动网络、Wi-Fi、蓝牙等。
- system.img:该镜像文件包含了Android系统的核心文件和应用程序。它包含了Android操作系统的主要组件,如系统库、应用程序、框架、资源等。system.img是Android系统的主要部分,它提供了用户界面、系统功能和应用程序运行环境。
- vendor.img:该镜像文件包含了设备制造商的专有驱动程序、库文件、二进制文件。它是为了实现设备制造商特定的功能和硬件支持而提供的。它通常包含了设备制造商自定义的功能、硬件驱动程序和优化。
- dtbo.img:该镜像文件包含了设备树(Device Tree Overlay)信息。设备树是一种描述硬件配置和设备功能的数据结构,它允许系统在运行时动态配置硬件设备。dtbo.img包含了设备树的增量信息,可以在系统启动时加载并覆盖默认的设备树。在设备启动时加载并配置硬件设备,允许动态修改设备树,以适应不同的硬件配置和功能需求。
- vbmeta.img:该镜像文件包含了验证引导(Verified Boot)的元数据信息。验证引导是一种安全机制,用于确保系统启动过程中的完整性和安全性,通过验证启动映像的签名和哈希值,防止未经授权的修改和恶意软件的加载。vbmeta.img包含了包括签名、哈希值和公钥等在内的元数据,用于验证启动映像的完整性。
- persist.img:该镜像包含了 persist 分区的完整数据副本,并以镜像文件的形式进行存储。persist 分区中的数据是持久化的系统设置和配置数据,包括用户定义的系统设置、网络配置、应用程序配置等。这些数据在设备重新启动后需要被保留,以确保用户的个性化设置和应用程序的配置不会丢失。为了方便备份、恢复和修改 persist 分区的数据,设备制造商或开发者经常将 persist 分区的数据打包为一个镜像文件,即 persist.img。这个映像文件可以通过特定的工具或刷机方法来处理。通过备份 persist.img 镜像文件,用户可以在需要时还原系统设置和配置数据,或在修改设备时将其恢复到原始状态。这对于刷机、定制 ROM、备份用户数据等操作非常有用。
2 常见分区解读
以下是常见的 Android 系统分区以及它们的解读,具体如下:
- boot:boot 分区包含了引导映像(boot image),它包括了内核(kernel)和用于引导 Android 系统的初始化脚本。该分区负责设备的引导过程,加载内核并启动 Android 系统。
- kernel:kernel 分区存储了操作系统的核心组件,即 Linux 内核。内核是操作系统的核心部分,它负责管理硬件设备、内存管理、进程调度等底层功能。
- system:system 分区是 Android 系统的主要分区,包含了操作系统的系统文件、应用程序、库文件、系统配置等。这是 Android 系统的核心部分,负责提供系统的基本功能和服务。
- vendor:vendor 分区存储了设备制造商提供的专有文件和驱动程序。这些文件和驱动程序用于支持设备特定的硬件功能和功能扩展,如摄像头、传感器、音频等。
- recovery:recovery 分区包含了 Android 系统的恢复模式(Recovery Mode)。恢复模式是一个独立的系统环境,用于设备的修复、刷机、备份和恢复等操作。recovery 分区通常包含了恢复模式的相关文件和脚本。
- cache:cache 分区用于存储应用程序的临时文件、系统缓存和其他临时数据。这些数据可以帮助加快应用程序的启动速度和系统的响应性。cache 分区经常被清除以解决应用程序问题或释放存储空间。
- data:data 分区用于存储应用程序的数据和用户数据。这包括应用程序的设置、数据库、媒体文件、文档等。大多数用户生成的数据都存储在此分区中。
- sdcard 或 external_sd:这些分区是用于外部存储设备,如可移动 SD 卡或 USB 存储设备。它们提供额外的存储空间,用于存储用户的文件、媒体、下载内容等。
- cache/recovery:cache/recovery 分区是用于存储恢复模式的临时文件和缓存数据。在恢复模式下,这个分区可能用于安装更新、备份系统、刷写固件等操作。
- misc:misc 分区包含了一些与设备相关的杂项数据,如设备序列号、唯一标识符等。这些数据用于设备的识别和特定功能的支持。
- metadata:metadata 分区包含了关于分区布局和文件系统的元数据信息。它记录了分区的大小、文件系统类型、位置等。这些信息对于系统的分区管理和文件系统的正确识别很重要。
- persist:persist分区主要用于存储持久化的系统设置和配置数据。它是 Android 系统中的一个特殊分区,用于保存设备设置、用户首选项和应用程序配置等信息,以便在设备重新启动后保持持久性。