Android 系统的分区介绍

这篇具有很好参考价值的文章主要介绍了Android 系统的分区介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

由于Android系统采用Linux架构,所以Android的系统分区可以类比同样采用Linux架构的操作系统(如Windows)。

Android系统分区分类

现在一般常见的Android分区方式共有三种,在不同的Android系统版本上会采用不同的分区方式。

1、传统分区(non-A/B分区)一般常见于Android10及以下的手机

2、A/B分区(部分机型会存在,是两种更常用机型的过渡阶段)

3、virtual A/B分区(VA/B)

Android 系统的分区介绍,操作系统,linux,android,车载系统

  1. modem分区,主要是手机短信的通讯模块;
  2. bootloader分区,主要用于线刷;
  3. recovery分区,只有用于普通刷机;
  4. boot分区,用于启动;
  5. system分区,系统分区;
  6. data分区,用户分区;
  7. cache分区:存储使用过程中的缓存数据
  8. vendor:包含有厂商私有的可执行程序、库、系统服务和app等。可以将此分区看做是system分区的补充,厂商定制ROM的一些功能都可以放在此分区。
modem分区
bootloader分区
recovery分区
boot分区
system分区
data分区
cache分区

双清就是指对data分区和cache分区进行清理。

boot分区:由 kernel 和 ramdisk 构成。存放BootLoader程序,起开机启动和引导作用,是手机接通电源后跑通的第一个程序。他的下级kernel(内核)分区,负责扩充操作系统(如Android OS,MIUI)的功能,负责管理设备硬件调度,系统进程,设备内存等,维持操作系统的稳定性。boot分区另一下级ramdisk(虚拟内存)分区,该分区存放一些kernel分区运行必须的驱动,让内核率先跑通虚拟的文件系统,再通过ramdisk分区中的驱动,跑通真正的文件系统(有点拗口,简而言之就是真正文件系统的临时替代品)。要注意的是ramdisk分区的实际数据存储于RAM中。那么当boot分区损坏时,导致BootLoader程序没法跑通,故卡在开机第一屏(卡米)。当然当我们修改CPU调度或者给GPU超频时,也需要修改boot分区的文件。

system分区:这个分区包含了整个操作系统除 kernel 和 ramdisk 之外的其它部分,包括 Android UI 和设备上预装的 APP。删除这个分区只会同步将 Android 系统从设备上卸载掉,而不会导致设备不能重启,因此你依然可以顺利让设备进入到 recovery 或 bootloader 模式来为它重新刷入一个新的 ROM。举一个天真的例子,如果将存放在system中的MIUI14系统文件全部改成origin OS 3(这年头什么UI都敢叫自己OS了),那么你就完成了刷入origin OS 3的步骤。

recovery 分区:相当于一个备用的 boot 分区,利用它我们可以使设备启动到恢复模式窗口来进行一些高级的恢复和维护操作。

data分区:也被称作 userdata,是用户数据被存储的地方——也就是说你的联系人、短信、配置文件和你自己安装的 APP 都位于这里。删除这个分区相当于将你的设备恢复出厂设置,你的设备会变得和你第一次开机或最后一次刷入官方/自定义 ROM 后一样。你在设备上点击清除用户数据或恢复出厂设置按钮后,实际上清除掉的就是这个分区。

cache分区:存放的是 Android 系统中经常被访问的数据和 APP 的部件。删除这个分区不会对你的个人数据造成影响,这个分区上的数据会随着你继续使用设备被重新收集并存储在这里。

misc分区:包含了各种以开关量形式保存的系统配置,包括 CID(Carrier or Region ID)、USB配置和某些硬件配置等。这是个很重要的分区,如果它遭到了破坏或有数据丢失,那么设备的一些功能可能无法正常使用

Android系统的启动

启动概述:Loader > Kernel > Native > Framework > Application

细分:BootRom > Bootloader > Kernel > Init > Zygote > SystemServer > Launcher

Loader层主要包括Boot Rom和Boot Loader;
Kernel层主要是Android内核层;
Native层主要是包括init进程以及其fork出来的用户空间的守护进程、HAL层、开机动画等;
Framework层主要是AMS和PMS等Service的初始化;
Application层主要指SystemUI、Launcher的启动;

bootloader分区分成两个部分,分别叫做primary bootloader和secondary stage bootloader。Primary bootloader主要执行硬件检测,确保硬件能正常工作后将secondary stage bootloader拷贝到内存(RAM)开始执行。Secondary stage bootloader会进行一些硬件初始化工作,获取内存大小信息等,然后根据用户的按键进入到某种启动模式。

fastboot模式:fastboot是android定义的一种简单的刷机协议,用户可以通过fastboot命令行工具来进行刷机。比如说fastboot flash boot boot.img这个命令就是把boot.img的内容刷写到boot分区中。

recovery模式:recovery是android定义的一个标准刷机协议。当进入recovery模式时,secondary stage bootloader从recovery分区开始启动,recovery分区实际上是一个简单的Linux系统,当内核启动完毕后,开始执行第一个程序init(init程序是Linux系统所有程序的老祖宗)。init会启动一个叫做recovery的程序(recovery模式的名称也由此而来)。通过recovery程序,用户可以执行清除数据,安装刷机包等操作。

手机除了普通的CPU芯片以外,还有MODEM处理器芯片。该芯片的功能就是实现手机必需的通信功能,大家通常所的刷RADIO就是刷写modem分区。

系统OTA升级流程

非A/B升级

  • Android系统收到服务端下发的OTA推送,将OTA包下载至cache分区。
  • OTA包下载完成后,将向misc分区写入指令,表明下次启动时进入recovery模式并使用该OTA包进行升级。
  • 重启手机。
  • 重启后最先进入bootloader,bootloader会先判断按键组合、电源寄存器等,随后会读取misc分区的内容并解析。由于步骤2中已经向misc分区写入了指令,此处bootloader读取指令后会引导启动recovery系统。
  • 进入recovery,读取cache分区中的OTA包,并解析其中的升级脚本,按照其指令对系统各个分区进行升级。如果recovery自身也需要升级,会在此过程中向system中写入recovery-from-boot.p文件,这是一个recovery升级所需要的patch。
  • recovery会清除misc分区。
  • 重启手机。
  • 重启后最先进入bootloader,判断按键组合、电源寄存器、misc分区内容等,默认情况会启动Android系统,此时已经是OTA升级后的新版本系统。
  • 新版本Android系统启动后,会检查是否存在recovery-from-boot.p文件,如果存在,则会对recovery进行升级。

A/B升级

在Android O之后,Google引入了一种新的分区结构,称为A/B分区,与之对应,传统分区结构被称为non-A/B分区。

A/B分区结构,顾名思义,将系统分区分成了A和B两个槽(slot),手机启动时会选择A槽或者B槽启动,运行过程中仅使用当前槽位的分区。一旦当前运行的槽出现问题,系统仍可以选择另一个槽进行启动,从而保证系统良好的可用性。

采用A/B分区结构,能够实现无缝升级。例如用户正在运行A槽,此时收到OTA推送,则系统会在后台一边下载OTA数据,一边同时对B槽进行升级。当B槽系统升级完成,用户会收到重启提示,此时重启手机将自动切换到B槽的新版本系统。在此过程中,仅重启操作是会被用户感知的,这个重启与普通重启的耗时没有什么区别。

如果OTA失败,也仅仅是待升级的槽出现问题,可以重新尝试OTA,并不会影响用户当前运行的系统。

由于A/B分区结构可以实现一边从服务端获取OTA数据,一边直接写入待升级的槽,不需要临时存储OTA包的空间,因此不再需要在cache或userdata分区预留足够空间。文章来源地址https://www.toymoban.com/news/detail-564309.html

到了这里,关于Android 系统的分区介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux操作系统介绍

    Linux是一个广受欢迎的开源操作系统,其灵活性、稳定性和免费的特性使其在全球范围内拥有众多拥趸。本文将详细介绍Linux的发展历程、基本概念、常用发行版以及如何开始使用Linux等内容,帮助您更深入地了解这个强大的操作系统。 Linux的起源可以追溯到20世纪90年代初。

    2024年02月11日
    浏览(35)
  • Linux操作系统相关介绍

    目录 一、认识Linux 二、Linux特点总结 三、Linux版本 (1)Linux内核版 (2)Linux发行版  • 1991年,芬兰的一名大学生Linus Torvalds开发了linux内核 • Linux是一种开放源代码的、自由的、免费的类Unix操作系统。 • 通常Linux 这个词本身只表示 Linux 内核, 但是人们已经习惯用Linux 来

    2024年02月07日
    浏览(44)
  • Android 操作系统日历完成提醒功能 附带开关闹钟 适配高版本安卓

    如果想要一个稳定且不用担心生命周期的提醒方式,可以试试利用系统日历去完成任务的提醒或某个活动的预约。 项目仓库地址在文末 环境 Java 11 Android sdk 30 Gredle 7.1 测试机型 mi 8(安卓 9) mi10 pro(安卓11) huawei m8(安卓7) 日历操作表 ​ 其实完成这个功能本质是对安卓原

    2024年02月03日
    浏览(43)
  • Linux操作系统的安全相关介绍

            Linux操作系统的安全模型、访问控制、安全策略和加密机制是确保系统安全的重要组成部分。下面将详细介绍这些方面。          安全模型         Linux操作系统的安全模型基于传统的Unix安全模型,主要包括以下核心概念: 1. **用户和组**:Linux系统中的每

    2024年04月16日
    浏览(39)
  • ​ Android 操作系统用于获取设备的软件版本号 ​ro.build.id

    getprop ro.build.id 是一个 Android 操作系统中的命令,通常用于获取设备的软件版本号。其中,ro.build.id 是一个系统属性的名称,它存储了当前设备的软件版本标识符。 要使用 getprop ro.build.id 命令,可以在 Android 设备上的命令行界面(如终端或adb shell)中输入该命令并按下回车键

    2024年02月05日
    浏览(38)
  • 1-Linux操作系统 的介绍和安装教程

    一、Linux 的介绍 1)常见的操作系统 Windows,它微软公司开发的一款桌面操作系统(闭源系统)。版本有dos、win98、win NT、win XP、win 7、win vista、win 8、win 10。服务器操作系统:win server 2003、win server 2008、win server 2012。 Mac,苹果公司开发的一款操作系统(闭源系统),目前最新

    2024年02月08日
    浏览(46)
  • Linux:Linux操作系统循环语句-while语句使用介绍

    本博客将介绍Linux操作系统中循环语句-while语句的使用方法。我们将详细说明while语句的语法格式,并提供多个案例来演示不同的应用场景。这些案例包括输出数字序列、批量创建用户以及内置跳出循环的用法。通过学习这些内容,您将能够更好地掌握Shell脚本编写中的循环控

    2024年02月09日
    浏览(56)
  • Linux:Linux操作系统循环语句-for语句使用介绍

    本博客将介绍Linux操作系统中循环语句-for语句的使用方法。我们将详细说明for语句的语法格式,并提供多个案例来演示不同的应用场景。这些案例包括循环创建文件、应用引号或转义符、从变量中取值、从命令中取值、for循环自增自减、批量创建用户、批量探测主机和随机点

    2024年02月14日
    浏览(45)
  • Linux 操作系统实战视频课 - GPIO 基础介绍

    沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解 GPIO 。 ARM 平台中的 GPIO(通用输入/输出)是用于与外部设备进行数字输入和输出通信的重要硬件接口。ARM 平台的 GPIO 特性可以根据具体的芯片和开发板而有所不同,但通常具有以下一般特性: 数字输入

    2024年02月10日
    浏览(37)
  • Linux:Linux操作系统流程控制语句-case语句使用介绍

    本博客将介绍Linux操作系统中流程控制语句-case语句的使用方法。我们将通过多个案例来详细说明case语句的执行流程和用法。这些案例包括菜单选项、rsync服务脚本、nginx服务脚本、实现系统工具箱和实现简单的jumpserver跳板机。通过学习这些内容,您将能够更好地掌握Shell脚本

    2024年02月12日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包